Вложенные наборы данных с TClientdatasets в более чем двух уровнях? - PullRequest
3 голосов
/ 17 ноября 2009

Я хотел бы знать, возможно ли вложить набор данных в набор данных, а затем вложить этот набор данных в другой набор данных. Таким образом, 3 уровня вложенности. В настоящее время мне удается вложить только один набор данных в другой. При попытке внедрить третий уровень база данных успешно запускается в первый раз, когда я компилирую свою программу и могу вводить данные. Затем, когда я пытаюсь запустить программу во второй раз, EDBClient вызывает исключение с сообщением «несоответствие в пакете данных».

Итак, я хотел бы знать, возможно ли вложить 3 уровня наборов данных друг в друга?

С уважением Риан

Ответы [ 2 ]

2 голосов
/ 06 октября 2010

Рассказ:

Попробуйте это с Delphi XE ... для моего основного проекта, который сейчас решает эту проблему.

Длинная история:

Я столкнулся с той же проблемой, что и у вас с 3 или более уровнями вложенных наборов данных, когда в Delphi 2010 возникла ошибка на стороне базы данных.

Предыдущая последняя версия, которую я интенсивно использовал, была Delphi 2007 без проблем, поэтому есть вероятность, что плохое поведение было представлено в Delphi 2009 или Delphi 2010.

Я проследил эту проблему до midas.dll на стороне клиента, и это происходит независимо от того, статически ли вы связываете midas с помощью MidasLib. Midas «думает», что пакет, полученный от сервера, искажен и выдает исключение. Это исключение нарушает «нормальный» процесс согласования ошибок, поэтому нет способа попытаться восстановиться после ошибки: OnReconcileError никогда не запускался, и процесс прерывается из-за отсутствия блоков try / исключением внутри этой части VCL.

Я уверен, что это была ошибка, но не в том случае, если это происходит на сервере или на стороне клиента. Когда я работал над созданием проекта, чтобы добавить заявку в службу поддержки, пытаясь уменьшить ее до минимума, случается, Delphi XE был выпущен, и я нахожусь под SA, поэтому я получаю его в последнюю минуту.

Загрузка, установка, настройка ... затем я скомпилировал для поддержки проекта и все работало нормально. Я скомпилировал свой основной проект: тот, где я столкнулся с реальными проблемами с пользователями из-за этого и тем, что я использую, чтобы вызывать исключения в триггерах базы данных и хранимых процедурах из-за проверок последней секунды или изменений состояния / условия. Все работало нормально Пользователь получает значимые сообщения об ошибках, и приложение восстановило его способность выполнять преобразование данных и повторять попытки на лету или спрашивать пользователя, что делать в некоторых обстоятельствах.

Извините , я не нашел обходного пути во время моих попыток диагностировать и сообщить об этой проблеме Embarcadero, возможно, кто-то другой может помочь вам лучше, не предлагая обновить.

1 голос
/ 29 апреля 2010

Простой ответ - да, вы можете иметь три уровня наборов данных, вложенных друг в друга. У меня есть примеры ClientDataSets, где вложение понижается на 6 уровней. На самом деле, я не думаю, что есть предел глубины вложения, кроме того, который накладывается ограничениями памяти.

...