query查询某时间段内的记录,可是运行时有误,请高手进来看看呀,(有源码)

woaichenyu 2005-02-24 04:27:01
procedure TForm5.BitBtn1Click(Sender: TObject);
var q:TQuery;
s1,s2:string; //起止时间
d1,d2:double; //起止时间
begin
//得到用户选择的起止时间
s1:=combobox1.Text+combobox2.Text+combobox3.Text;
s2:=combobox4.Text+combobox5.Text+combobox6.Text;
d1:=strtodate(s1);
d2:=strtodate(s2);

if form1.RadioButton1.Checked=True then //查询固定件
begin
form1.Query2.SQL.Clear;
form1.Query2.SQL.Add('select * from 出件登记表 where 日期>:d1 and 日期<:d2');
form1.Query2.Open;

//统计所有的记录条数
q:=TQuery.Create(nil);
q.DatabaseName:='hm';
q.SQL.Clear;
q.SQL.Add('select count(*) as Row_count from 出件登记表 where 日期>:d1 and 日期<:d2');
q.Open;
form1.edit7.Text:=q.fieldbyname('Row_count').AsString;

//统计所有记录的总金额
q.SQL.Clear;
q.SQL.Add('select sum(总金额) as Row_count from 出件登记表 where 日期>:d1 and 日期<:d2');
q.Open;
form1.edit8.Text:=q.fieldbyname('Row_count').AsString;
q.Free;
end
else //查询活动件
begin
form1.query2.SQL.Clear;
form1.query2.SQL.Add('select * from 活动件登记表 where 日期>:d1 and 日期<:d2');
form1.query2.Open;

//统计所有的记录条数
q:=TQuery.Create(nil);
q.DatabaseName:='hm';
q.SQL.Clear;
q.SQL.Add('select count(*) as Row_count from 活动件登记表 where 日期>:d1 and 日期<:d2');
q.Open;
form1.edit7.Text:=q.fieldbyname('Row_count').AsString;

//统计所有记录的总金额
q.SQL.Clear;
q.SQL.Add('select sum(总金额) as Row_count from 活动件登记表 where 日期>:d1 and 日期<:d2');
q.Open;
form1.edit8.Text:=q.fieldbyname('Row_count').AsString;
q.Free;
end;
form5.Close;
end;

运行时显示如下错误:

‘200511’is not a valid date
...全文
118 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
woaichenyu 2005-02-25
  • 打赏
  • 举报
回复
改成 where 日期 between #:d1# and #:d2# 还是不行呀

一样的
invald argument to date encode 错误呀

错误提示


  • 打赏
  • 举报
回复
where 日期 between #:d1# and #:d2#
看下行不行
dxhdxh 2005-02-25
  • 打赏
  • 举报
回复
s1:=combobox1.Text+'-'+combobox2.Text+'-'+combobox3.Text;
s2:=combobox4.Text+'-'+combobox5.Text+'-'+combobox6.Text;
去掉 d1:=strtodate(s1);
去掉 d2:=strtodate(s2);
直接用s1,s2 试试看
woaichenyu 2005-02-25
  • 打赏
  • 举报
回复
我按照 jinjazz(近身剪(N-P攻略)) 改了过后

运行时却显示:
invald argument to date encode 错误呀

djmdjmdjm 2005-02-24
  • 打赏
  • 举报
回复
d1:=strtodate(s1);
d2:=strtodate(s2);这两句把STRING变成日期会有问题,如果没猜错combobox1.Text+combobox2.Text+combobox3.Text是年+月+日,这样日期格式就不对。S1:=combobox1.Text+'-'+combobox2.Text+'-'+combobox3.Text;

在写SQL语句时候,其d1和d2没有定义。ParamByName('d1').Asdatetime:=d1;
jinjazz 2005-02-24
  • 打赏
  • 举报
回复
s1:=combobox1.Text+combobox2.Text+combobox3.Text;
s2:=combobox4.Text+combobox5.Text+combobox6.Text;
d1:=strtodate(s1);
d2:=strtodate(s2);

--------------改为
d1:=Encodedate(Strtoint(combobox1.Text),Strtoint(combobox2.Text),Strtoint(combobox3.Text));
d2:=Encodedate(Strtoint(combobox4.Text),Strtoint(combobox5.Text),Strtoint(combobox6.Text));
lizhi012 2005-02-24
  • 打赏
  • 举报
回复
输入的数据不对,不能转换为日期格式
woaichenyu 2005-02-24
  • 打赏
  • 举报
回复
请高手来帮我改改呀
woaichenyu 2005-02-24
  • 打赏
  • 举报
回复
在家来瞧瞧呀

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧