对于MS Access数据库使用TADOQuery我有一个令人难以置信的情况 在下面的代码中(只是一个测试用例),第一次执行查询返回正确的记录,第二次执行返回一个“空”记录(即codFormula变量第一次是'E0275',第二次是'')
显然三个参数值是相同的
QryDosaggioTestata.Parameters[0].Value := idBatchRottura;
QryDosaggioTestata.Parameters[1].Value := nrMiscelataRottura;
QryDosaggioTestata.Parameters[2].Value := dataBatchRottura;
QryDosaggioTestata.Open;
// Here, QryDosaggioTestata's RecordCount is 1 and Eof is False
codFormula := trim(QryDosaggioTestataCodiceFormula.Value);
//now codFormula = 'E0275'
QryDosaggioTestata.Close;
QryDosaggioTestata.Parameters[0].Value := idBatchRottura;
QryDosaggioTestata.Parameters[1].Value := nrMiscelataRottura;
QryDosaggioTestata.Parameters[2].Value := dataBatchRottura;
QryDosaggioTestata.Open;
// Here, QryDosaggioTestata's RecordCount is 0 and Eof is True
codFormula := trim(QryDosaggioTestataCodiceFormula.Value);
// now codFormula = ''
Ora := QryDosaggioTestataOra.Value;
QryDosaggioTestata.Close;
查询文本位于设计器对象中:
Select * from LOG_FINE_DOSAGGIO
WHERE
idBatch = :parIdBatch
AND nrMiscelata = :parNrMiscelata
AND Data = :parData
显然查询在语法上是正确的,否则第一次执行不好。 非常感谢。
答案 0 :(得分:1)
经过多次尝试后,我得到了线索: Microsoft JET OLEDB 4.0 提供程序可疑处理日期参数:使日期参数工作的唯一方法是将参数数据类型设置为< strong> ftString 并将值传递为 DateToStr(yourDate)。
我的印象是,在第一次查询之后。关闭,提供者以错误的方式重新准备查询参数。
希望这有助于任何人。 一切都适用于其他参数类型(即整数,字符串...)和SQL Server提供程序。