有两个EDIT,如果我什么也不输入,则显示所有记录,如果在任意一个里面输入的日期不正确也显示所有记录,否则显示日期位于这两个输入的日期之间的所有记录。具体要怎么实现,主要是怎么判断EIDT里输入的可不可以转换为正确的日期。多谢了!
解决方案 »
- 一个关于ListBox的很简单的问题(但是怎么没有人知道呢?)
- 在c中,char和int可以通用,这给处理ASCII字符带来了方便,在delphi中,该如何处理ASCII字符那?
- sql server 的存储过程不能把表名作为参数吗?
- 本人要高考了,在此向各位斑竹申请辞退斑竹一职
- 实现Unix与win2k夸平台之间的通信,请各路高手帮忙~~~在线等待....
- quickreport中的QRDBTEXT控件
- 我使用了别人开发的控件,怎样实现delphi的静态编译?
- 使用SQL语句在ORACLE 8中创建含有BLOB字段的表文件?
- 寻找Delphi高手
- 还是继续上一个话题,线程池的关系...还没弄懂..
- 日期查询为何会出现【无效数据格式】的错误?
- 怎样写一个判断用户离开电脑的代码,比喻像屏保一样n分钟没动就自动保护,要求不要占太多系统资源
strtodate(edit1.text);
except
showmessahe('error');
end;
procedure TForm9.Button2Click(Sender: TObject);
begin
datamodule5.Query2.Close;
datamodule5.Query2.SQL.Clear;
datamodule5.Query2.SQL.Add('select distinct ky_xb,sum(ky_gzl) as ky_gzl,avg(ky_gzl) as ky_per_gzl from table2');
datamodule5.Query2.SQL.add('where ky_fb>:A and ky_fb<:B');
datamodule5.Query2.SQL.Add('group by ky_xb');
datamodule5.Query2.Params.ParamByName('A').AsDateTime:=datetimepicker1.datetime;
datamodule5.Query2.Params.ParamByName('B').AsDateTime:=datetimepicker2.DateTime;
datamodule5.Query2.Prepare;
datamodule5.Query2.Open;
datamodule5.Query2.Refresh;
end;//datetimepicker方便些用edit一样的但要转换类型
StartDate,EndDate,sWhere:String;
begin
StartDate:='';
EndDate:='';
try
strtodate(edit1.text);
StartDate:=Edit1.text;
except
end;
try
strtodate(edit2.text);
EndDate:=Edit2.text;
except
end;
cwhere='';
if startDate<>'' and EndDate<>'' then
sWhere:='where 你的日期字段>='+#39+startDate+#39+' and 你的日期字段<='+#39+EndDate+#39
else if startDate<>'' and EndDate='' then
sWhere:='where 你的日期字段>='+#39+startDate+#39
else if startDate='' and EndDate<>'' then
sWhere:='where 你的日期字段<='+#39EndDate+#39
with adoquery1 do
close;
sql.clear;
sql.add('select * from 你的表 '+sWhere)
open;
end;
.
.
.
.
end;
if (startDate<>'') and (EndDate<>'') then
sWhere:='where 你的日期字段>='+#39+startDate+#39+' and 你的日期字段<='+#39+EndDate+#39
else if (startDate<>'') and (EndDate='') then
sWhere:='where 你的日期字段>='+#39+startDate+#39
else if (startDate='') and (EndDate<>'') then
sWhere:='where 你的日期字段<='+#39EndDate+#39
马上结贴!
帮忙看看。谢谢!
'where ky_fb>:A and ky_fb<:B'为什么要‘:’号,有什么作用,还有
datamodule5.Query2.Params.ParamByName('A').AsDateTime:=datetimepicker1.datetime;里面ParamByName('A').AsDateTime是什么意思。谢谢了
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
这里使用参数A、B,参数的值可在open之前动态赋值,其中':'号代表引用参数。
datamodule5.Query2.Params.ParamByName('A').AsDateTime:=datetimepicker1.datetime;里面ParamByName('A').AsDateTime是什么意思。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
这里是给参数A赋值,意思是把datetimepicker1.datetime的值赋给参数A。
随便学习一下
然后建议用TADOQUERY或TADODATASET。
SQL语句为
str:='select * from 表名 where 日期字段名 between #'+datetostr(datetimepicker1.date)+'# and #'+datetostr(datetimepicker2.date)+'#'
adoquery1.sql.add(str);
str你应该会定义吧。如果用TADODATASET应该那么最后一句改为adodataset1.commandtext:=str;
就这样