因此,调用此方法将导致sql错误“无效的列名称”,不在主表中的每个字段.
这在Delphi 2010和更早版本中不是问题.
连接到TClientDataset的DBX4或BDE组件都会发生错误,因此很可能是TClientDataset代码更改的问题.
要复制此问题:
在Delphi XE中创建一个新的应用程序,只需一个窗体并放置所需的数据库组件(TsqlMonitor,TsqlConnection,TsqlQuery,TDatasetProvider,TClientDataset,TDatasource和TDBGrid)并将它们绑定在一起.
创建一个带有表连接的简单sql语句,并将其放在TsqlDataset.sql属性中.
sql语句只包含两个字段 – 主表的关键字段和连接表中的字段 – 例如伪代码:
Select MainTable.IntegerKeyField,JoinedTable.JoinField FROM MainTable LEFT OUTER JOIN JoinedTable ON MainTable.LookupFieldID = JoinedTable.JoinKeyField
在TsqlQuery和TClientDataset中将这两个字段添加为持久字段,其中包含pfinkey的关键字字段的提供者标志(如果不知道哪个字段是关键字,则RefreshRecord将不起作用,因此持久字段是必须的).
在表单上添加两个按钮 – 一个只打开Clientdataset,第二个按钮调用clientdataset.refreshrecord;
运行应用程序,按按钮打开网格中的数据集和数据显示.
按刷新记录按钮,您将收到连接字段的sql错误“无效列名称”.
关闭应用程序,打开sqlMonitor日志,并在Delphi生成的刷新记录sql语句中,您将看到它没有包含表连接语句.
====
我真的很感激任何关于如何解决这个问题的想法.
解决方法
原文地址:https://www.jb51.cc/mssql/81717.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。