不知道如何查询在一个报表中日期在用户选定日期之内的记录
例如
表1为
day money
2008-1-1 15
2008-5-6 100
2009-4-12 50
我在窗体上添加了DateTimePicker1的两个控件start,end,想在start设定开始日期
在end设定结束日期
然后单击Button1搜索表1
我根据书本上的介绍在Button1Click中写的如下代码,运行会出现问题,我不知道是什么原因
ADOQuery1.Close;
with ADOQuery1 do
begin
ADOQuery1.SQL.Clear;
SQL.Add('Select * from v_dailysale');
SQL.Add('Where total_momey between :a and :b ');
SQL.Add('Where time_day between :a and :b ');
Parameters[0].Value:=datetimetostr(DateTimePicker1.Time);
Parameters[1].Value:=datetimetostr(DateTimePicker2.Time);
end;
我刚刚学习Delphi,很多东西都不懂,希望哪位高手能够多多指教,帮我解决我得疑问,谢谢!
例如
表1为
day money
2008-1-1 15
2008-5-6 100
2009-4-12 50
我在窗体上添加了DateTimePicker1的两个控件start,end,想在start设定开始日期
在end设定结束日期
然后单击Button1搜索表1
我根据书本上的介绍在Button1Click中写的如下代码,运行会出现问题,我不知道是什么原因
ADOQuery1.Close;
with ADOQuery1 do
begin
ADOQuery1.SQL.Clear;
SQL.Add('Select * from v_dailysale');
SQL.Add('Where total_momey between :a and :b ');
SQL.Add('Where time_day between :a and :b ');
Parameters[0].Value:=datetimetostr(DateTimePicker1.Time);
Parameters[1].Value:=datetimetostr(DateTimePicker2.Time);
end;
我刚刚学习Delphi,很多东西都不懂,希望哪位高手能够多多指教,帮我解决我得疑问,谢谢!
解决方案 »
- 我都要疯了,三层,客户端clientdataset+dbgrid, 在编辑dbgrid时,修改记录后,老出现:“Trying to modify read-only field”
- sub过程是什么意思?
- 菜鸟请教~关于递归的问题~~~!在线等待~~!
- 关于DCOM技术问题,我开发的客户端和服务器端在本机上运行正常,如果把客户端移到其他机器就提示‘拒绝访问’
- .dat文件用什么方法打开呢
- 找到多条纪录,但只有一条是期望的
- 800分求有關印刷排版算法的資料.(入者有分)
- delphi5的update1如何安装?
- 用Delphi编写调用SQL SERVER 7.0存储过程的程序是否一定要安装才能运行?
- 超级简单问题!
- tdxDBGrid 焦点控制问题?
- 对象的生命周期
SQL.Add('Where total_momey between :a and :b ');
SQL.Add('Where time_day between :a and :b ');
这里添加了两个where还能不出错
ADOQuery1.Close;
with ADOQuery1 do
begin
ADOQuery1.SQL.Clear;
SQL.Add('Select * from v_dailysale');
SQL.Add('Where time_day between :a and :b ');
Parameters[0].Value:=datetimetostr(DateTimePicker1.Time);
Parameters[1].Value:=datetimetostr(DateTimePicker2.Time);
end;
编译没错
SQL.Add('Where time_day between :a and :b '); 参数名也重了
ADOQuery1.Close;
with ADOQuery1 do
begin
ADOQuery1.SQL.Clear;
SQL.Add('Select * from v_dailysale');
SQL.Add('Where time_day between :a and :b ');
Parameters[0].Value:=datetimetostr(DateTimePicker1.Time);
Parameters[1].Value:=datetimetostr(DateTimePicker2.Time);
end;
没有 SQL.Add('Where total_momey between :a and :b '); 这一句
with ADOQuery1 do
begin
close;
SQL.Text := ' Select * from v_dailysale'+
' where time_day>=:a'+
' and time_day<:b';
parameters.ParamByName('a').value := StrTodate(formatdatetime('yyyy-mm-dd',datetimepicker1.date));
parameters.ParamByName('b').value := StrTodate(formatdatetime('yyyy-mm-dd',datetimepicker2.date+1));
Open;
end;
k1,k2:string;
begin
k1:=formatdatetimepicker('yyyy-mm-dd',DateTimePicker1.date);
k2:=formatdatetimepicker('yyyy-mm-dd',DateTimePicker2.date);
with ADOQuery1 do
begin
close;
sql.clear;
sql.add(''Select * from v_dailysale where time_day between '+''''+k1+''''+' and '+''''+k2+'''');
open;
end;
end;
这样的话你数据库里面的日期格式好像有点问题。要统一才行;
k1,k2:string;
begin
k1:=formatdatetimepicker('yyyy-mm-dd',DateTimePicker1.date);
k2:=formatdatetimepicker('yyyy-mm-dd',DateTimePicker2.date);
with ADOQuery1 do
begin
close;
sql.clear;
sql.add('Select * from v_dailysale where time_day between '+''''+k1+''''+' and '+''''+k2+'''');
open;
end;
end;
上面多加了一个点。
系统提示:formatdatetimepicker没定义
k1,k2:string;
begin
k1:=formatdatetime('yyyy-mm-dd',DateTimePicker1.date);
k2:=formatdatetime('yyyy-mm-dd',DateTimePicker2.date);
with ADOQuery1 do
begin
close;
sql.clear;
sql.add('Select * from v_dailysale where time_day between '+''''+k1+''''+' and '+''''+k2+'''');
open;
end;
end;