关于access的日期查询 在线等 希望各位帮忙
我想查询一段日期类的东西 好象sql.add(select * form table where 日期 between #2000-8-3# and #2003-8-7#)这样 但是我想用两个edit来自由的输入日期来查询 该怎么写 我试了很久都没成功 请大家给点意见!
var
date1:tdatetime;
date2:tdatetime;
begin
with query1 do
begin
close;
sql.clear;
date1:=strtodatetime(edit3.text);
date2:=strtodatetime(edit4.text);
sql.add(select sum(合格数) from 表1 where 日期 between date1 and date2);
open;
说是参数不足 期待2 access里日期查询好象要有# 我试转成字符比较也不行 我的字段‘日期’是日期行的 希望大家能帮帮我 谢谢了
推荐阅读
要试一下才知道,不过我一直都是用dateedit控件来解决这种问题的!
我不知道這句是不是對的,我也忘了
sql.add(select * form table where 日期 between #2000-8-3# and #2003-8-7#)
但如果這句是對的,我想下面可以這樣寫
..
sql.add(select sum(合格数) from 表1 where 日期 between #+edit3.text+# and #+edit4.text+#);
quyda031.close;
quyda031.sql.clear ;
quyda031.sql.add(select * from da030 );
quyda031.sql.add(where (date>=:d1)and(date<=:d2));
quyda031.parambyname(d1).asdatetime :=datetimepicker1.datetime ;
quyda031.parambyname(d2).asdatetime :=datetimepicker2.datetime ;
quyda031.prepare;
quyda031.open;
這是我用過的,一定行。(其中的date字段也是日期型)
//no.1 直接看成sql语句,简单又迅速,容易调试,参考x_qiang的代码~~
begin
{ todo : 日期的合法检查 }
query1.close;
query1.sql.text := format(
select sum(合格数)#13#10 +
from 表1#13#10 +
where 日期 between #%s# and #%s#,
[edit3.text, edit4.text]);
try
query1.open;
except
{ toto : 异常处理 }
end;
end;
//no.2 看成参数处理,扩充性大,对于未知的sql类型表达也可以使用~~
begin
{ todo : 日期的合法检查 }
query1.close;
query1.sql.text :=
select sum(合格数)#13#10 +
from 表1#13#10 +
where 日期 between :fstartdate and :fenddate;
try
query1.parambyname(fstartdate).asdate := strtodatetimedef(edit3.text, 0);
query1.parambyname(fenddate).asdate := strtodatetimedef(edit4.text, maxint);
query1.open;
except
{ toto : 异常处理 }
end;
end;
sql.add(select * form table where 日期 between +edit1.text+and +edit2.text+)
sql.add(select * form table where 日期 between #+edit1.text+#and #+edit2.text+#)
日期是assess与sql的最大不同的地方,assess太繁了,而且日期很容易出问题,


讨论区