请教我这条日期查询语句那里出错了。(28分)

  • 主题发起人 topdelphi
  • 开始时间
T

topdelphi

Unregistered / Unconfirmed
GUEST, unregistred user!
我有个查询窗体,是按照开始日期和结束日期来查询数据的,数据库为ACCESS,为何我下的的语句出现了
查询不出结果来,但是这些日期资料是在数据库里面有的,再请教如何修改啊。

Close;
sql.Clear;
Sql.Add('select * from Tvs');
SQL.add('where cstr(dateb) >:txndt1 ');
Parameters.ParamByName('txndt1').Value:=formatdatetime('yyyy-mm-dd',datetimepicker1.date-1);
SQL.add(' and cstr(dateb) <:txndt2 ');
Parameters.ParamByName('txndt2').Value:=formatdatetime('yyyy-mm-dd',datetimepicker2.date+1);
open;
 
WHERE语句为'WHERE cstr(dateb) > ''' + txndt1 + ''''
 
SQL.add('where dateb>:txndt1 ');
Parameters.ParamByName('txndt1').Value:=datetimepicker1.date-1;
 

Close;
sql.text := 'select * from Tvs where (cstr(dateb) >:txndt1) and (cstr(dateb) <:txndt2) ';
Parameters.ParamByName('txndt1').Value:=formatdatetime('yyyy-mm-dd',datetimepicker1.date-1);
Parameters.ParamByName('txndt2').Value:=formatdatetime('yyyy-mm-dd',datetimepicker2.date+1);
open;
 
解決了沒有﹖
 
给分吧,这个查询语句一定对
close;
sql.clear;
sql.add('select * from Tvs where cstr(dateb)>:(txndt1) and cstr(dateb)>:(txndt2)');
Parameters.ParamByName('txndt1').Value:=formatdatetime('yyyy-mm-dd',datetimepicker1.date-1);
Parameters.ParamByName('txndt2').Value:=formatdatetime('yyyy-mm-dd',datetimepicker2.date+1);
open;

 
Access是本地数据库,所以处理本地数据库日期类型的sql语句和网络数据库是不一样的,
以后如果遇到本地数据库,处理日期类型应该是用"#"而不用"'",通常我们些日期查询都是这样写,
例如'2003-04-11',而处理本地数据库日期类型应该是#2003-04-11#。
Close;
sql.text := 'select * from Tvs where (cstr(dateb) #' + datetimepicker1.date-1 + '#) and (cstr(dateb) < #'+ datetimepicker2.date+1 +'#) ';
open;
这样应该没有问题了
 
Access是本地数据库,所以处理本地数据库日期类型的sql语句和网络数据库是不一样的,
以后如果遇到本地数据库,处理日期类型应该是用"#"而不用"'",通常我们些日期查询都是这样写,
例如'2003-04-11',而处理本地数据库日期类型应该是#2003-04-11#。
Close;
sql.text := 'select * from Tvs where (cstr(dateb) #' + datetimepicker1.date-1 + '#) and (cstr(dateb) < #'+ datetimepicker2.date+1 +'#) ';
open;
这样应该没有问题了
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
816
import
I
I
回复
0
查看
637
import
I
S
回复
0
查看
822
SUNSTONE的Delphi笔记
S
顶部