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

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

小刀王

Unregistered / Unconfirmed
GUEST, unregistred user!
我在一程序中的有如下的sql查询语句:
Close;
SQL.Clear;
SQL.Add('select * from repair');
SQL.Add('where selfno=:selfno1 and no<>dbedit1.text and dbedit8.text>=infodate and dbedit8.text<=filldate');
open;
结果程序首先提示invalid use of keyword token:no<>dbedit1.text信息,去掉
no(repair中的关键字段,selfno、infodate、filldate是repair中的普通字段,
infodate、filldate是date字段)<>dbedit1.text的条件,又显示invalid field name text信息,
我想是针对dbedit8.text的,后来根据一位大侠的指正,将第二个add改为如下:
SQL.Add('where selfno='+selfno1+' and'+' no<>'+dbedit1.text+' and'+' infodate <'+dbedit8.text+' and'+ ' filldate>'+dbedit8.text+'');
结果又显示invalid use of keyword token:no<>维001(维001正确)信息;去掉' no<>'+dbedit1.text+' and'+这一部分,
又显示type mismatch in expression的信息,到底该如何解决。望各位大侠不吝赐教!!!
 
应该这样写:SQL.Add('where selfno=''''+selfno1+''' and no<>''''+dbedit1.text+
''' and infodate <'''+dbedit8.text+''' and filldate>''''+dbedit8.text+'''');
同时还要将日期型的文本转换为日期型,不同的后台数据库写法不同,你要查看相应的语句
,有的数据库可以不转换,你试试吧。
 
SQL.Add('where selfno=:selfno1 and no<>'+dbedit1.text+' and infodate<=#'+dbedit8.text
+'# and filldate>=#'+dbedit8.text+'#)');

最后,别忘了给selfno1赋值。
 
同意Hjking
 
我也有个相似的问题:
SQL.Add('Select * From AAA.Db Where Name='Jon' and XK=True')
执行时也会报错!
(Name为String型,XK为Boolean型)
SQL.Add('Select * From AAA.Db Where Name='Jon' ')

SQL.Add('Select * From AAA.Db Where XK=True')
分别执行都没问题!

请各位指教!
 
接受答案了.
 

Similar threads

后退
顶部