此种sql错误是何原因?(100分)

  • 主题发起人 主题发起人 flyman2
  • 开始时间 开始时间
F

flyman2

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中的字段)<>dbedit1.text的条件,又显示invalid field name text信息,
我想是针对dbedit8.text的,这两处错误是何原因,该如何解决。望各位大侠不吝赐教!!!

 
你的语法错了,,能不能说说你想实现在功能,,我看不明白你想干什么
 
我是菜鸟,一点建议:
在程序中加上一个TEdit和一个临时变量来查看SQL的值,如:
var
ss:String;
......
begin
...
Close;
SQL.Clear;
ss:='select * from repair';
ss:=ss+'where selfno=:selfno1 and no<>dbedit1.text and dbedit8.text>=infodate and dbedit8.text<=filldate';
Edit1.Text:=ss;
SQL.Add(ss);
SQL.Add();
open;
...
你看看在Edit1中的脚本,就知道是怎么回事了。
 
我也是个新手,不过我可以给你我的经验。
可以把这段sql语句放到你使用的数据库中,我使用的是ACCESS。
这样可以也检查你的SQL语句语法错误。
不妨试试!
 
在你写的语句中存在如下问题:
SQL.Add('select * from repair');
SQL.Add('where selfno=:selfno1 and no<>dbedit1.text
and dbedit8.text>=infodate and dbedit8.text<=filldate');
1."no<>dbedit1.text "中的no是数据库的关键字,会出现你所说的第一个错误
2.你的程序我没有试过,不过凭经验看,你的语句中dbedit1.text和 dbedit8.text
应该不能取得实际控件dbedit1.text和 dbedit8.text的值,因为你把它们写到字符串中


 
高度同意zgdtxf
 
另外你的语句中'where selfno=:selfno1 动态参数,在open前应该用
query.parambyname('selfno1').value:=...进行赋值.
 
你的sql语句语法错误,你的后一个SQL.ADD语句有错误,可以试一下下面的改动
SQL.Add('where selfno='+selfno1+' and'+' no<>'+dbedit1.text+'and'+'
infodate <'+dbedit8.text+'and'+ 'filldat>'+edbedit8.text+'');
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部