TADOQuery在第二次执行时返回空记录集

时间:2018-02-09 16:49:34

标签: delphi tadoquery

对于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

显然查询在语法上是正确的,否则第一次执行不好。 非常感谢。

1 个答案:

答案 0 :(得分:1)

经过多次尝试后,我得到了线索: Microsoft JET OLEDB 4.0 提供程序可疑处理日期参数:使日期参数工作的唯一方法是将参数数据类型设置为< strong> ftString 并将值传递为 DateToStr(yourDate)

我的印象是,在第一次查询之后。关闭,提供者以错误的方式重新准备查询参数。

希望这有助于任何人。 一切都适用于其他参数类型(即整数,字符串...)和SQL Server提供程序。