ADO中不能用日期参数?救救我吧!(100分)

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

DTHL

Unregistered / Unconfirmed
GUEST, unregistred user!
环境ADO+ODBC+MSSQL7


FUseDate := Trunc(Now);
try
qryConfirmation.Connection := dmTigerRMS.cntTigerRMS;
qryConfirmation.Close;
qryConfirmation.SQL.Clear;
qryConfirmation.SQL.Add('SELECT * FROM Confirmations WHERE UseDate BETWEEN :BEGINDATE AND :ENDDATE ORDER BY UseDate');
qryConfirmation.Parameters.ParamByName('BEGINDATE').Value := FUseDate;
qryConfirmation.Parameters.ParamByName('ENDDATE').Value := FUseDate+1;
qryConfirmation.Open;
//程序到这里总是出现 [ODBC没有执行可选特性]的错误,救救我吧
except
qryConfirmation.Close;
MyMsgDlg('提示:不能取得预定信息!');
self.Enabled := False;
end
 
大家使用ADO的PARAMETER都喜欢套用BDE的方式,其实你仔细查查帮助,
你的VALUE属性是OLEVARIANT,是专门用于RPC方式的。
正确的使用方法应该是
qryConfirmation.paramters.Parametervalues['begindate']:=....
或者你直接在SQL语句里面解决问题,省得参数类型转换时的错误。
 
qryConfirmation.Parameters.ParamByName('BEGINDATE').Value := FUseDate;
qryConfirmation.Parameters.ParamByName('ENDDATE').Value := FUseDate+1;
都改成
qryConfirmation.Parameters.ParamByName('BEGINDATE').Value := DateTostr(FUseDate);
qryConfirmation.Parameters.ParamByName('ENDDATE').Value := DateToStr(FUseDate+1);

 
多人接受答案了。
 
后退
顶部