请问D7+ADO+Access的日期查询问题? ( 积分: 50 )

  • 主题发起人 主题发起人 LZ2000
  • 开始时间 开始时间
L

LZ2000

Unregistered / Unconfirmed
GUEST, unregistred user!
以下写法错误:提示 类型不匹配....
请问如何改.......
access2000数据库, 字段名:开单日期 类型:日期/时间 字段记录格式是:2007-10-30 13:00:00
var
sqlstr:String;
begin
ado1.close;
sqlstr:='select * from table where 1=1 ';

if checkbox1.Checked then
begin
sqlstr:=sqlstr+' and 开单日期 between '+QuotedStr(formatdatetime('yyyy-MM-dd hh:mm:ss',datetimepicker1.datetime)) +' and ' +QuotedStr(formatdatetime('yyyy-MM-dd hh:mm:ss'',datetimepicker2.datetime));
ado1.sql.text:=sqlstr;
ADO1.open;
end;

end;

如果将 QuotedStr 去掉,不提示错误,但也不出结果....
查过本论坛,没有找到符合本要求的,
........请教......
 
用带参数的查询,一般不会错!
你试一下"#2007-10-30#"
 
sqlstr:=sqlstr+' and 开单日期 between '+QuotedStr(formatdatetime('yyyy-MM-dd hh:mm:ss',datetimepicker1.datetime)) +' and ' +QuotedStr(formatdatetime('yyyy-MM-dd hh:mm:ss'',datetimepicker2.datetime));
改成:
DTbegin:=''''+formatdatetime('yyyy-MM-dd hh:mm:ss',datetimepicker1.datetime)) +'''';
DTend:=''''+formatdatetime('yyyy-MM-dd hh:mm:ss',datetimepicker2.datetime)) +'''';
然后写
sqlstr:=sqlstr+' and 开单日期 between '+DTbegin+' and ' +DTend;
 
easykoala:
如果只是 日期没问题,但加 时间就出问题了....
参数你指类似下面的吧:
.Parameters.ParamByName('...').Value := ...
.Parameters.ParamByName('...').Value := ...

不能用上面的格式的参数,因为需要其它SQL调用,只能直接写,有没有参数可在被其它SQL查询调用的?;

TO:
xiaole_zhm
var
sqlstr:String;
DTbegin,DTend: string;
begin
...
DTbegin:=''''+formatdatetime('yyyy-MM-dd hh:mm:ss',datetimepicker1.datetime) +'''';
DTend:=''''+formatdatetime('yyyy-MM-dd hh:mm:ss',datetimepicker2.datetime) +'''';
sqlstr:=sqlstr+' and 开单日期 between '+DTbegin+' and ' +DTend;
...
end;

运行后提示:标准表达式中类型不匹配:

其它网站提过将 hh:mm:ss 的 “:” 改 “::” 2个:即可,但这样就要分离开来了,要一个一个分离再结合,比较麻烦;有没有方法简单点的;
因为日后可能要加 datetimepicker1 是日期,datetimepicker3 是时间,那分离就比较麻烦了;

继续请问了.............
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
589
import
I
S
回复
0
查看
928
SUNSTONE的Delphi笔记
S
后退
顶部