有关Access中Sql查询时间(非日期)的问题。(100)

  • 主题发起人 主题发起人 dg_hy
  • 开始时间 开始时间
D

dg_hy

Unregistered / Unconfirmed
GUEST, unregistred user!
在表中有两个字段分别记录日期和时间,但是使用下面的语句查询出现错误,单独查询日期没有问题。 ADOQuery2.SQL.Add('SELECT * FROM TableTemp'); ADOQuery2.SQL.Add('WHERE FDate=#'+DatetoStr(D1)+'# and FTime=#'+ TimetoStr(D2)+'#');请各位指教。
 
出现什么错误,是不是格式不对。
 
错误的提示是“不正常的定义参数对象,提供了不一致或不完整的信息”。奇怪的是在Delphi中写Sql语句 ADOQuery2.SQL.Add('SELECT * FROM TableTemp'); ADOQuery2.SQL.Add('WHERE FTime=#0:45:0#');无法通过。但是在Access中使用"查询"中的Sql却可以。SELECT TableTemp.FDate, TableTemp.FTimeFROM TableTempWHERE (((TableTemp.FTime)=#0:45:0#));迷茫中!!!!!!
 
把#号改成*
 
改成下面格式 ADOQuery2.SQL.Add('SELECT * FROM TableTemp'); ADOQuery2.SQL.Add('WHERE FDate=#'+''''+DatetoStr(D1)+''''+'# and FTime=#'+ ''''+TimetoStr(D2)+''''+'#');
 
不管sql怎么写,最后都会报错的,只能这样:sql_str:='SELECT * FROM TableTemp WHERE FDate=:p1 and FTime=:p2';ADOQuery1.close;ADOQuery1.sql.Clear;ADOQuery1.SQL.Add(sql_str);ADOQuery1.Parameters.ParamByName('p1').Value:=DatetoStr(D1);ADOQuery1.Parameters.ParamByName('p2').Value:=TimetoStr(D2);ADOQuery1.Prepared;ADOQuery1.Open;========================顺便说一句,你用WHERE (((TableTemp.FTime)=#0:45:0#));这样也会有问题吧,access里面的时间不会是0:45:0,而必须是1899-12-31 0:45:0,就算你不写日期,access也会自己把日期加上去,很恶心,所以我每次用access保存日期时间的时候,都不是用的"日期/时间"字段,而是用的文本字段,转为字符串会好处理的多。
 
顺便问一句你在access里面的日期是什么格式的你的参数类型是string的
 
接受答案了.
 
后退
顶部