sql错误该如何解决???(100分)

  • 主题发起人 主题发起人 牛刀小试
  • 开始时间 开始时间

牛刀小试

Unregistered / Unconfirmed
GUEST, unregistred user!
我在一程序中的有如下的sql查询语句:
procedure TFrmldrepair.DBEdit2Exit(Sender: TObject);
var
no1,d1,d2:string;
bookmark,bookmark1:TBookmark;
begin
selfno1:=dbedit2.text;
d1:=dbedit1.text;
d2:=dbedit8.text;
no1:=datamodule1.table1.fieldbyname('no').asstring;
bookmark:=datamodule1.table1.getbookmark;
with datamodule1.query1 do
begin
Close;
SQL.Clear;
SQL.Add('select * from repair');
SQL.Add('where selfno='+selfno1+' and '+d1+'<>'+no1+' and '+d2+'>=datetostr(infodate) and '+d2+'<=datetostr(filldate)');
open;
end;
bookmark1:=datamodule1.table1.getbookmark;
if bookmark<>bookmark1 then
datamodule1.Table2.FindKey([dbedit2.text]);
end;
显示'invalid field name 维001'的错误提示信息,此句是针对SQL.Add('where selfno='+selfno1+' and '+d1+'<>'+no1+' and '+d2+'>=datetostr(infodate) and '+d2+'<=datetostr(filldate)');
中的'+d1+'<>'+no1,no是数据库的关键字段(dbedit1.text也是显示no字段,
并接受输入,通过no1字段检查dbedit1.text中的输入是否与记录中的no字段相同的。),
infodate和filldate是date类型。去掉'+d1+'<>'+no1这一句又显示capaility not supported
的错误提示信息,这可能是针对后面的'+d2+'>=datetostr(infodate) and '+d2+'<=datetostr(filldate)');
部分。我通过加入辅助变量和tedit控件得出整个执行的查询语句为:
select * from repair where selfno=26053 and 维001<>维001 and 1999-03-02>=datetostr(infodate) and 1999-03-02<=datetostr(filldate)
请问各位大侠这是什么原因,该如何解决?
 
SQL.Add('where selfno='+selfno1+' and '+d1+'<>'''+no1+''' and '''+d2
+'''>=datetostr(infodate) and '''+d2+'''<=datetostr(filldate)');
 
后退
顶部