特殊情况:更新的顺序错误

时间:2018-12-05 14:24:26

标签: delphi delphi-10.2-tokyo tclientdataset

如何跟踪“ 特殊情况:错误的更新顺序!”错误的位置?

此错误消息在Datasnap.DSIntf中定义为

const
  ...
  ERRCODE_FLYAWAY_WRONGORDER = 13;  { Special case: wrong order of updates for fly-away }
  ...
  DBERR_FLYAWAY_WRONGORDER  = ERRBASE_ALC + ERRCODE_FLYAWAY_WRONGORDER;

但是在Delphi源代码中没有其他地方可以找到对子字符串FLYAWAY_WRONGORDER的引用。 *

我的意图是使用调试dcu进行编译,然后在引发异常的行上放置一个断点,并向上检查调用堆栈以找到原因。 我目前正在逐步进入代码中,直到出现错误为止,但这效率较低(复杂的应用程序)。

TApplicationEvents的OnException处理程序中放置断点不会给我可用的调用堆栈信息:

enter image description here

那么,我如何(有效地)跟踪产生此错误的地方?

正在发生的事情的背景:

  • Form使用DevExpress TcxScheduler连接到数据模块中的TcxSchedulerStorage组件,并连接到嵌套的TClientDataSet s
  • 代码将所有更改保存到这些数据集(ApplyUpdates)
  • 在这些DevExpress组件的BeginUpdate / EndUpdate中,我然后在这些数据集中插入,删除和更新记录,同时进行移动,甚至更改明细数据集中的父ID,以便它们从当前明细数据集“可见”中删除。
    在我进行编辑时发生错误,然后准确地发布记录。
  • Delphi Tokyo 10.2.3,Win32应用程序
  • 欢迎提供有关该错误消息的其他信息,我什么都找不到。

我实际上是通过在几个地方为主数据集调用ApplyUpdates来“修复”该错误的,但是由于我不太确定原因,因此我想对此进行进一步调查。所以我的问题不是我如何解决代码中的错误,而是我如何 查找 我的代码中的错误

* TCustomADODataSet.InternalPost的{​​{1}}中有一个CheckForFlyAway例程,但是我们不使用ADO,我无法在这些例程中设置断点。

0 个答案:

没有答案