我想知道是否可以在数据集中嵌套数据集,然后将此数据集嵌套在另一个数据集中。因此3级嵌套。目前我只设法将一个数据集嵌套在另一个数据集中。在第三级嵌套时,数据库在第一次编译程序时成功运行,我能够输入数据。当我第二次尝试运行程序时,EDBClient提出了一个execption,消息“数据包中不匹配”。
所以我想知道是否可以将3个级别的数据集嵌套在一起?
亲切的问候 Riaan
答案 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个级别。事实上,我不认为嵌套的深度是有限制的,除了内存约束所强加的。