3

我想知道是否可以将数据集嵌套在数据集中,然后将此数据集嵌套在另一个数据集中。因此有 3 层嵌套。目前我只设法将一个数据集嵌套在另一个数据集中。当尝试嵌套第三级时,数据库在我第一次编译程序时成功运行并且我能够输入数据。然后,当我第二次尝试运行该程序时,EDBClient 提出了一个带有消息“数据包不匹配”的执行。

所以我想知道是否可以将 3 级数据集相互嵌套?

亲切的问候瑞安

4

2 回答 2

2

短篇故事:

用Delphi XE试试……对于我现在的主要项目,这解决了这个错误。

很长的故事:

当 Delphi 2010 的数据库端出现任何错误时,我遇到了与 3 级或更多级别的嵌套数据集相同的问题。

我之前大量使用的最后一个版本是 Delphi 2007 没有问题,所以有可能在 Delphi 2009 或 Delphi 2010 中引入了不良行为。

我将此问题追溯到客户端的 midas.dll,无论您是否使用 MidasLib 静态链接 midas,都会发生这种情况。Midas“认为”它从服务器接收到的数据包格式错误,并引发异常。此异常破坏了“正常”的错误协调过程,因此无法尝试从错误中恢复: OnReconcileError 从未触发,并且由于 VCL 这部分中缺少 try/except 块,该过程被中止。

我确定这是一个错误,但如果它发生在服务器或客户端上则不会,当我正在制作一个项目以放置支持票时,同时试图将其减少到最低限度,它发生在 Delphi XE 发布了,我在 SA 下,所以我在最后一分钟得到它。

下载、安装、配置……然后,我编译了我的支持项目,一切正常。我编译了我的主要项目:我因此而面临用户真正问题的项目,以及由于最后一秒验证或状态/条件更改而在数据库触发器和存储过程中引发异常的事实。一切正常。用户正在接收有意义的错误消息,并且应用程序恢复了执行数据转换和即时重试的能力,或者在某些情况下询问用户要做什么。

抱歉,我在努力诊断此问题并将其报告给 Embarcadero 的过程中没有找到解决方法,也许其他人可以在不建议升级的情况下更好地帮助您。

于 2010-10-05T22:51:36.050 回答
1

简单的答案是肯定的,您可以将三个级别的数据集相互嵌套。我有嵌套下降 6 层的 ClientDataSets 示例。事实上,我认为嵌套深度没有限制,除了内存限制。

于 2010-04-29T18:10:15.217 回答