使用TClientdatasets嵌套数据集的级别超过两个级别?

时间:2009-11-17 15:25:24

标签: delphi nested tclientdataset

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

所以我想知道是否可以将3个级别的数据集嵌套在一起?

亲切的问候 Riaan

2 个答案:

答案 0 :(得分:2)

短篇小说:

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

长篇故事:

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

我之前使用的最后一个版本是Delphi 2007没有问题,因此Delphi 2009或Delphi 2010中可能会出现不良行为。

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

我确定这是一个错误,但如果它发生在服务器或客户端,当我正在努力制作一个支持票据的项目,同时尝试将其降低到最低限度时,它发生了德尔福XE发布,我在SA下,所以我在最后一刻得到它。

下载,安装,配置......然后,我编译了以支持项目,一切正常。我编译了我的主项目:由于这个原因,我面临着用户真正遇到的问题,以及由于最后一次验证或状态/条件变化而在数据库触发器和存储过程中引发异常的事实。一切都很好。用户正在接收有意义的错误消息,并且应用程序恢复了他在运行中执行数据转换和重试的能力,或者询问用户在某些情况下该做什么。

抱歉,在我努力诊断并向Embarcadero报告此问题时,我没有找到解决方法,也许其他人可以帮助您更好,而不建议升级。

答案 1 :(得分:1)

简单的答案是肯定的,你可以将三个级别的数据集嵌套在一起。我有ClientDataSets的例子,其中嵌套下降了6个级别。事实上,我不认为嵌套的深度是有限制的,除了内存约束所强加的。