Как я могу отследить местоположение ошибки " Особый случай: неправильный порядок обновлений для fly-away! "?
Это сообщение об ошибке определено в 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, а затем поставить точку останована линии, где возникает исключение, и проверьте стек вызовов UP, чтобы найти причину.В настоящее время я шагаю вниз по коду до появления ошибки, но это менее эффективно (сложное приложение).
Размещение TApplicationEvents
с точкой останова в ее обработчике OnException не дает мне полезную информацию стека вызовов:
Итак, как (эффективно) отследить место, где генерируется эта ошибка?
Справочная информация о происходящем:
- Форма использует DevExpress
TcxScheduler
подключен к TcxSchedulerStorage
компоненту в модуле данных, подключен к вложенному TClientDataSet
s - Код сохраняет все изменения в этих наборах данных (ApplyUpdates)
- В BeginUpdate / EndUpdate для этих компонентов DevExpress, Iзатем вставляйте, удаляйте и обновляйте записи в этих наборах данных, перемещайтесь при этом, даже изменяйте родительские идентификаторы в наборах подробных данных, чтобы они выпадали из текущего набора подробных данных «на виду».Ошибка происходит, когда я редактирую, а затем публикую запись, делающую именно это.
- Delphi Tokyo 10.2.3, приложение Win32
- Любая другая информация об этом сообщении об ошибке приветствуется, я не смогнайти что-нибудь.
Я фактически «исправил» ошибку, вызвав ApplyUpdates для основного набора данных в нескольких местах, но так как я не совсем уверен в причине, я хочу исследовать это дальше.Так что мой вопрос не Как я могу исправить ошибку в моем коде , это Как мне найти ошибка в моем коде ?
* В TCustomADODataSet.InternalPost
в Data.Win.ADODB
есть подпрограмма CheckForFlyAway, но мы не используем ADO, я не могу устанавливать точки останова в этих подпрограммах.