SQL语句中一个简单问题(100分)

  • 主题发起人 主题发起人 jadyyarcoo
  • 开始时间 开始时间
J

jadyyarcoo

Unregistered / Unconfirmed
GUEST, unregistred user!
请大家帮我看看为什么抱错?
paradox库
query1.close;
query1.sql.clear;
query1.sql.add('select * from table where 1=1');
if datetiempicker1.checked=true then
query1.sql.add('and 交清款时间='''+datetostr(datetimepicker1.date)+'''');
query1.open;
交清款时间定义为date型!
运行时抱错:type is mismatch in expresstiom
 
首先 1=1,你的数据表字段名定义为1吗?
其次,将query1.sql.add('and 交清款时间='''+datetostr(datetimepicker1.date)+'''');
这一句改一改:
query1.sql.add('and 交清款时间=#'+datetostr(datetimepicker1.date)+'#');

query1.sql.add('and 交清款时间=#'+formatDatetime('yyyy-mm-dd',datetimepicker1.date)+'#');
 
交清款时间已定义为Date型

datetostr(datetimepicker1.date)
datetostr()函数是将日期型转换成字符窜
与你开始定义的Date型不符
你不加转换试试
 
where 1=1 这句在PARADOX中可不可用呀?(我没试过,猜的)
 
if datetiempicker1.checked=true then
query1.sql.add('and 交清款时间='''+FormatDateTime('yyyy-mm-dd',datetimepicker1.date)+'''');
 
楼上各位 : 1=1 必须要用的,因为还有一个 if datetiempicker1.checked=true then
呵呵 这是关键所在!

这样试试:
query1.sql.add('select * from table where 1=1');
if datetiempicker1.checked=true then
begin
query1.sql.add('and 交清款时间=:time_x');
query1.ParamByName('time_x').AsDate:=datetimepicker1.date;
//或用AsDateTime 根据你自己的字段类型确定
end;
 
Parodox的日期格式为'mm/dd/yy'或'mm/dd/yyyy'
所以你的语句应该这样写:
query1.sql.add('and 交清款时间='''+formatdatetime('mm/dd/yy',datetimepicker1.date)+'''');
 
if datetiempicker1.checked=true then
query1.sql.add('and 交清款时间='''+FormatDateTime('yyyy-mm-dd',datetimepicker1.date)+'''');
应该行的
 
时间转换问题
err--->datetostr(datetimepicker1.date)
 
datetostr--->date--->string----err
 
string---->date--->ok
 
to Expert:
paradox的日期格式是根据系统的区域设置来定,你可能设置成mm/dd/yyyy;
to jrq:
用你的参数法运行通过,我先也想过,不过格式有错!
to D李:
这种方法在编译时不能通过!!
to hunterteam:
你的方法可能用于别的库中!!

to others:
用转换格式方法仍然抱错!!

谢谢大家!!!![^][^][^][^]
大家分分吧!!
 

Similar threads

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