我的查询代码:
procedure Tddfform.btnInquClick(Sender: TObject);begin adoquery1.close;
adoquery1.SQL.Clear;
adoquery1.sql.Add('select pjbh,pjmc,pjgg,dw,dj,sl,zj,bm,lyr,llrq,pjlb,czy,bz from ff'); adoquery1.sql.add('where llrq >= BegDate and llrq<=EndDate(dd,1,:EndDate)'); adoquery1.parameters.ParamByName('BegDate').value := DateTimePicker1.date;
adoquery1.parameters.ParamByName('EndDate').value := DateTimePicker2.date;
adoquery1.Open
end;可以正常运行,可是单击按钮的时候提示parameter BegDate not found 请大家看看!
procedure Tddfform.btnInquClick(Sender: TObject);begin adoquery1.close;
adoquery1.SQL.Clear;
adoquery1.sql.Add('select pjbh,pjmc,pjgg,dw,dj,sl,zj,bm,lyr,llrq,pjlb,czy,bz from ff'); adoquery1.sql.add('where llrq >= BegDate and llrq<=EndDate(dd,1,:EndDate)'); adoquery1.parameters.ParamByName('BegDate').value := DateTimePicker1.date;
adoquery1.parameters.ParamByName('EndDate').value := DateTimePicker2.date;
adoquery1.Open
end;可以正常运行,可是单击按钮的时候提示parameter BegDate not found 请大家看看!
begin
adoquery1.close;
adoquery1.SQL.Clear;
adoquery1.sql.Add('select pjbh,pjmc,pjgg,dw,dj,sl,zj,bm,lyr,llrq,pjlb,czy,bz from ff');
adoquery1.sql.add('where llrq >= BegDate and llrq <=EndDate(dd,1,:EndDate)');
adoquery1.Open;
adoquery1.parameters.ParamByName('BegDate').value := DateTimePicker1.date;
adoquery1.parameters.ParamByName('EndDate').value := DateTimePicker2.date;
end;
兄弟照你的改了。可是现在又提示这个错误提示:missing operator or semicolon
adoquery1.SQL.Clear;
adoquery1.sql.Add('select pjbh,pjmc,pjgg,dw,dj,sl,zj,bm,lyr,llrq,pjlb,czy,bz from ff'); adoquery1.sql.add('where llrq >= :BegDate and llrq <=DateAdd(dd,1,:EndDate)'); adoquery1.parameters.ParamByName('BegDate').value := DateTimePicker1.date;
adoquery1.parameters.ParamByName('EndDate').value := DateTimePicker2.date;
adoquery1.Open
end;
恩。我已经把这代码取掉了。改成了adoquery1.sql.add('where llrq >= :BegDate and llrq <= :EndDate'); 现在可以正常运行了。查询也不提示错误了。不过就是DBGrid显示不了查询的数据。我数据库里的时间是2009-5-27 11:33:00 而我的DateTimePicker1空间只显示了年月日,会不会查询的时候没有精确到11:33:00所以没找到匹配数据没法显示!
楼主试试ShowMessage(DateTimeToStr(DateTimePicker1.datetime));
DateTimePicker1.datetime 的默认为现在的时间
DateTimePicker1.date默认时间我改成了00:00:00,DateTimePicker2.date默认时间我改成了23:59:59 这样我选择日期的话,比如DT1选择的是2009-5-26 DT2选择的是2009-6-1。那么它查询的时候是不是就2009-5-26 00:00:00到2009-6-1 23:59:59
改了 adoquery1.parameters.ParamByName('BegDate').value := DateTimePicker1.datetime;
adoquery1.parameters.ParamByName('EndDate').value := DateTimePicker2.datetime;还是不能显示数据么。有QQ吗?加下。我的1681111685
adoquery1.SQL.Clear;
adoquery1.sql.Text := 'select pjbh,pjmc,pjgg,dw,dj,sl,zj,bm,lyr,llrq,pjlb,czy,bz from ff'+
'where llrq >= :BegDate and llrq <=EndDate(dd,1,:EndDate)'; adoquery1.parameters.ParamByName('BegDate').value := DateTimePicker1.date;
adoquery1.parameters.ParamByName('EndDate').value := DateTimePicker2.date;
adoquery1.Open
这句EndDate(dd,1,:EndDate)没看懂,是什么数据库呀
之前弄错掉了。这才是
adoquery1.close;
adoquery1.SQL.Clear;
adoquery1.sql.Add('select pjbh,pjmc,pjgg,dw,dj,sl,zj,bm,lyr,llrq,pjlb,czy,bz from ff'); adoquery1.sql.add('where llrq >= :BegDate and llrq <= :EndDate');
adoquery1.Open;
adoquery1.parameters.ParamByName('BegDate').value := DateTimePicker1.date;
adoquery1.parameters.ParamByName('EndDate').value := DateTimePicker2.date;
adoquery1.parameters.ParamByName('EndDate').value := DateTimePicker2.datetime;
这两行干脆不要了,改成下面的
procedure Tddfform.btnInquClick(Sender: TObject);
var
bd,ed:datetime;
begin
bd := DateTimePicker1.datetime;
ed := DateTimePicker2.datetime;
adoquery1.close;
adoquery1.SQL.Clear;
adoquery1.sql.Add('select pjbh,pjmc,pjgg,dw,dj,sl,zj,bm,lyr,llrq,pjlb,czy,bz from ff');
adoquery1.sql.add('where llrq >=: bd and llrq <=: ed');
adoquery1.Open;
end;
undeclared identifier:'datetime'
adoquery1.parameters.ParamByName('EndDate').value := DateTimePicker2.date;
放在open前
adoquery1.Open;