为什么保存数据导致不存在的字段'ERROR_CODE'的值无效?

时间:2014-12-18 08:02:07

标签: sql delphi ado

在Delphi XE中,我有一个TClientDataSet,它从TADOQuery获取数据,我向它添加一个新条目。代码看起来像这样:

with DataModule.MyClientDataSet begin
  Append;
  FieldByName('ID').AsInteger := SomeID;
  FieldByName('STRING').AsString := SomeString;
  FieldByName('DATE').AsDateTime := SomeDate;
  Post;
  ApplyUpdates(-1);
end;

客户端数据集背后的SQL是一个简单的

SELECT *
FROM mytable
WHERE x = :x
  AND y = :y

其中xy是字符串。

变量的值都已设置,我可以看到的唯一不规则的事情是日期设置为1899-12-30。

ApplyUpdates(-1);的调用会导致以下异常:

  

-2147217900不是字段' ERROR_CODE'的有效值。允许的范围是0到4294967295

没有有一列ERROR_CODE。那么这个错误信息究竟意味着什么?

1 个答案:

答案 0 :(得分:4)

Delphi XE中的DataSetProvider中存在一个错误,该错误已通过其中一个修补程序修复 http://edn.embarcadero.com/article/41312#3RADStudioXEHotfixforRAIDQC

在Delphi XE2中也发现了同样的错误,并在Update 3中得到了修复 http://qc.embarcadero.com/wc/qcmain.aspx?d=88928

以下是针对Delphi XE的此错误的另一个QC报告 http://qc.embarcadero.com/wc/qcmain.aspx?d=100723