编写的SQL查询为何不能运行(25分)

  • 主题发起人 主题发起人 gzmich
  • 开始时间 开始时间
G

gzmich

Unregistered / Unconfirmed
GUEST, unregistred user!
编写的SQL查询为何不能运行
请看以下源程序

var
Form2: TForm2;

implementation

{$R *.DFM}

procedure TForm2.BitBtn2Click(Sender: TObject);

var E,R,Date1,Date2:string;
begin
TRY

Date1:=FormatDateTime('yyyy-mm-dd',DateTimePicker1.Date);
Date2:=FormatDateTime('yyyy-mm-dd',DateTimePicker2.Date);

Query1.CLOSE;
Query1.SQL.CLEAR;
Query1.SQL.ADD('SELECT DISTINCT ');
Query1.SQL.ADD('IV.TRANSACTION_ID,');
Query1.SQL.ADD('IV.WORKORDER_TYPE,');
Query1.SQL.ADD('OP.WORKORDER_BASE_ID,');
Query1.SQL.ADD('OP.WORKORDER_LOT_ID,');
Query1.SQL.ADD('OP.WORKORDER_SPLIT_ID,');
Query1.SQL.ADD('IV.PART_ID,');
Query1.SQL.ADD('IV.QTY,');
Query1.SQL.ADD('IV.DESCRIPTION,');
Query1.SQL.ADD('IV.TRANSACTION_DATE');
Query1.SQL.ADD('FROM');
Query1.SQL.ADD('SYSADM_INVENTORY_TRANS IV,');
Query1.SQL.ADD('SYSADM_OPERATION OP');
Query1.SQL.ADD('WHERE');
Query1.SQL.ADD('(IV.WORKORDER_SPLIT_ID=OP.WORKORDER_SPLIT_ID)');
Query1.SQL.ADD(' AND (IV.WORKORDER_BASE_ID=OP.WORKORDER_BASE_ID) ');
Query1.SQL.add(' AND (IV.WORKORDER_LOT_ID=OP.WORKORDER_LOT_ID)');
Query1.SQL.ADD(' AND (OP.SEQUENCE_NO='+#39+'%10'+#39+') ');
Query1.SQL.ADD(' AND (IV.WORKORDER_BASE_ID IS NOT NULL)');
R:=QUERY2.FIELDBYNAME('ID').VALUE;
QUERY1.SQL.ADD(' AND (OP.RESOURCE_ID='+#39+R+#39+')');
E:='GECL';
TABLE1.SETKEY;
TABLE1.FIELDBYNAME('ID').ASSTRING:=E;
IF TABLE1.GOTOKEY THEN

Query1.SQL.ADD(' AND (IV.WORKORDER_BASE_ID LIKE '+#39+'G%'+#39+')')
ELSE
Query1.SQL.ADD(' AND (IV.WORKORDER_BASE_ID NOT LIKE '+#39+'G%'+#39+')');


Query1.SQL.ADD(' AND (IV.TRANSACTION_DATE BETWEEN '+#39+DATE1+#39+' AND '+#39+DATE2+#39+') ');
Query1.OPEN;
except

query1.close;
exit;
end;
end;
 
错误代码是什么?
是否是这一句:OP.SEQUENCE_NO='%10'
应该是like %10?
还有
R:=QUERY2.FIELDBYNAME('ID').VALUE;
QUERY1.SQL.ADD(' AND (OP.RESOURCE_ID='+#39+R+#39+')');
R是否是字符串?如果不是,编译能通过吗?
 
错误代码是什么?
 
1:from 前后加空格.

2:写出你的错误代码
 
注意你的空格,建议用TEDIT输出SQL语句
 
我怀疑你是在SQL语句的连接上有错,干吗不在一文本文件上写好SQL语句后,再用query1.sql.loadfromfile('file name'),
不是更方便吗?如果要用参数,以在query的属性中编辑呀.
 
你把sql写到一个memo里边,好好读读,看看能不能找到毛病,
不行的话,放到database desktop里边执行一下
 
用一个字符串,midsql:string;
先将你的 SQL语名放在里面,输出
 
好复杂!
在query1.open前加
showmessage(query1.sql.text)
仔细查一下吧。
 
Sql.add 中,分号分隔不对;

 
多人接受答案了。
 
后退
顶部