我在 Delphi XE2 中创建了一个 DLL,它使用 DB Express 和 TClientDataSet 来显示 DB Grid 中的连接结果。有一个简单的功能可以启动/显示导出以供其他应用程序使用的表单。在 FormActivate 上执行查询并填充网格。
当我调用该函数以从单独的 Delphi XE2 应用程序中显示表单时,一切运行正常 - 我找不到任何问题。
但是,当我从单独的 Delphi 7 应用程序调用相同的函数时,我收到一个错误,即 TClientDataSet 无法从连接中找到字段。
例如,数据返回如下:
[dbxds == TSQLDataSet
cds == TClientDataSet]
dbxds.commandtext='select s.sfield1, s.sfield2, t.tfield1, t.tfield2 from s left join t on s.sfield1 = t.tfield1';
cds.Open;
cds.fieldByName(sfield2).visible:=false;//to hide from a dbgrid
cds.fieldByName(tfield2).visible:=false;//to hide from a dbgrid
从 XE2 调用时,没有问题。当从 Delphi 7 调用时,最后一行(用于从 db 网格中隐藏该字段)给出了一个错误:
cds: Field 'tfield2' not found
虽然第一行很好 - 如果我切换查询的顺序以便首先检索“t”字段(“from t left join s”),那么我会在“s”字段上得到错误。
关于可能导致不兼容的任何想法?
谢谢!