这个错误是怎么回事,SQL语法?紧急求助!(100分)

  • 主题发起人 主题发起人 lkpc
  • 开始时间 开始时间
L

lkpc

Unregistered / Unconfirmed
GUEST, unregistred user!
环境::access97数据库,BDE,delphi5
下面是我的代码:
Close;
sql.clear;
sql.Add('select b2,b3,b5,b6,b8,a2,a3,a6 from bb,aa ');
sql.Add('where b2 not in (select b2,d2 from bb,dd where ');
sql.Add('b2=d2 and d6 BETWEEN :p3 and :p4 and d4=:p5)');
sql.Add(' and b6 BETWEEN :p1 and :p2 and b1=a1 ');
ParamByname('p1').value:=DateTimePicker1.DateTime;
ParamByname('p2').value:=DateTimePicker2.DateTime;
ParamByname('p3').value:=DateTimePicker3.DateTime;
ParamByname('p4').value:=DateTimePicker4.DateTime;
ParamByname('p5').value:=query20.FieldValues['d4'];
prepare;
open;
在运行时提示错误:字段p5未知!P5明明是参数,怎么把它当作了字段?
 
字段直接引用可导致错误,不妨将query20.FieldValues['d4']另赋予一变量再试试!?
 
ParamByname('p5').value:=query20.FieldByName('d4').AsString;
你用什么类型?
 
我如果将and d4=:p5和ParamByname('p5').value:=query20.FieldValues['d4']去掉,
会告诉我字段p3未知,why?
 
对不起,上次写的“我如果将and d4=:p5和ParamByname('p5').value:=query20.FieldValues['d4']去掉,
会告诉我字段p3未知,”有误!现取消上次的贴子。
还是原来的问题。
关于参数的引用:
ParamByname('p5').value:=query20.FieldByName('d4')我一致都是这样引用的,
并没有出现问题。
 
应该是类型的问题
ParamByname('p5').value:=query20.FieldByName('d4')可能类型不匹配
 
我已经找到问题的所在了!
 
我接着问一个非常简单的问题:我用mainmenu生成的菜单file(&Z),其中的Z会在运
行后成为快捷键,我设定属性:AutoHotkey=maManual,竟然不管用,去不调?
是什么原因?
 
你应该把mainmenu的autohotkeys也设为maManual.那应该可以了。对了,你说你的问题解决了
怎么解决的?是不是between语句的问题?
 
关于SQL这个问题,我发现了一个其他小错误,改正后发现仍有问题,提示的错误
信息是中文的,但读不通顺。

最后解决的方法是:将
not in (select b2,d2 from bb,dd where ')改为:
not in (select b2 from bb,dd where ');就可以通过了,好像是关系理不顺的缘故!
其他的语句没有问题。
 
多人接受答案了。
 
后退
顶部