gpt4 book ai didi

delphi - 运行时相当于为 TClientDataSet 和 TSQLQuery 分配本地数据...

转载 作者:行者123 更新时间:2023-12-03 15:49:30 26 4
gpt4 key购买 nike

TSQLQuery 类是单向的,因此为了将其用作数据绑定(bind) TDBGrid 的源,TClientDataSet 需要在 TSQLQueryTDBGrid 绑定(bind)到的 TDataSource 之间链接。

我可以使用指定的参数连接TSQLConnection并在设计时激活TSQLQuery,然后我可以右键单击CDS并选择“分配本地数据...”选项使其从 TSQLQuery 中获取数据,然后通过链接的 TDataSource 显示在 TDBGrid 中。

选择“分配本地数据...”和数据实际出现在网格中之间的时间非常短,因此我正在寻找在运行时复制它的方法。

据说,我可以将 CDS 的 Data 属性设置为源的 Data ,但是 TSQLQuery 没有 Data 属性。有一篇关于使用提供商的帖子,但是

DataSetProvider1.DataSet := SQLQuery1;
ClientDataSet1.Data := DataSetProvider1.Data;

抛出访问冲突,

我确实通过循环遍历TSQLQuery并将记录附加到TClientDataSet来实现数据复制,但这比“分配本地数据慢很多”。 ”。

[编辑1]

我需要的所有组件都在设计时连接起来,我可以激活TSQLConnection,然后激活TSQLQuery,然后激活TClientDataSet em> 并且 TDBGrid 显示来自 TSQLQuery 中定义的参数化查询的数据。

TComboBoxOnChange事件中,我需要使用不同的参数刷新查询并让网格显示相关结果,所以我关闭TSQLQuery,更改ParamByName值,打开TSQLQuery,然后调用ClientDataSet1 .Last 突出显示网格中的最后一行。

这给了我一个“无法在封闭的数据集上执行此操作”错误,所以我使用

ClientDataSet1.Active := true;

但这会引发“访问冲突”。

我能找到的所有示例都是关于将组件拖放到表单上,将它们链接在一起,然后它们就可以工作了。嗯,是的,他们确实这样做,但我需要在运行时更改代码中的属性,并且仍然让它工作,但它只是拒绝这样做。

这真的让我开始感到沮丧。

[编辑2]

因此,我按照 Embarcadero 站点上的示例构建了 VCL Forms dbExpress 数据库应用程序,并将我的数据库连接详细信息替换为示例中使用的 Interbase 连接详细信息。

http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Building_a_VCL_Forms_dbExpress_Database_Application

在设计器中,一切看起来都很好,网格显示了查询的结果,但是当我使用 F9 运行它时,我从 TCustomClientDataSet.InternalCheck 中抛出了“访问冲突” em>.

最佳答案

事实证明这是一个已知的MIDAS.DLL版本控制问题,可以通过在表单的uses子句中包含MIDASLib来解决。不幸的是,Datasnap.DBClient 代码仍然抛出访问冲突而不是正确的消息,特别是自 2013 年报告此问题以来。

关于delphi - 运行时相当于为 TClientDataSet 和 TSQLQuery 分配本地数据...,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51256067/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com