Добрый день,
В версии CRM 3.1.1.65 используя компонент «DataTreeGrid» у пользователей часто выскакивает ошибка «exception (E)» без дополнительной информации. Проверяя в отладчике, ошибка происходит на вызове «Dataset.Close()», отладчик возвращает ошибку «unknown exception».
При продолжение выполнения программы на строке «Dataset.Open()» появляется ошибка: «Invalid pointer operation»
Возможна сбой уже происходит до «Dataset.Close()», ибо в окне используются несколько компонентов «DataTreeGrid» в которых используется метод «grdDataOnDragDrop» для реализации перетаскивание елементов из одного «DataTreeGrid» в другой.
Возможно, кто то из пользователей форума встречал такую проблему и может помочь советом?
Заранее благодарю!
Нравится
Спасибо за Ваше обращение. Мы зарегистрировали его в Службе технической поддержки и назначили специалиста, который сможет Вас компетентно проконсультировать по данному вопросу
Здравствуйте!
Похоже, что в какой-то момент теряется ссылка на COM-объект DataSet'a. Возможно, он уже закрыт или удален к моменту, когда вызывается Dataset.Close().
Спасибо за ответ. Есть ли способ определить, что может вызвать преждевременное закрытие или удаление СOM объекта Dataset’a ? И, возможно ли какими то способами обойти эту проблему ?
Artūrs, возможно, датасет закрывается до этого. Пройдитесь дебаггером, может быть, есть место, где Вы ожидаете в переменной ссылку на один датасет, а там на самом деле другой. Перед выполнением Dataset.Close посмотрите на свойства и состояние датасета.
Попробуйте опустить вызов Dataset.Close(), воспроизведется ли ошибка?
Спасибо. Убрал строку Dataset.Close из метода grdDataOnDragDrop ошибка не поевляетса. Но так как ето использовалось для автоматическова обновление DataTreeGrid’a, то больше не происходит «Refresh» DataTreeGrid’a.
Artūrs, попробуйте перенести обновление грида в другое место, возможно, по событию делать.
Если есть Dataset.Close(); но нет Dataset.Open() то со временем CollectGarbage() удалит ваш экземпляр датасета. Рефшер же всегда делает Datset.Close(); ->> Dataset.Open()
Изначально использовалось Dataset.Close -> Dataset.Open, Dataset.Close убрали пока по совету Андрея, чтобы проверить воспроизведется ли ошибка. Убрав строку Dataset.Close из метода grdDataOnDragDrop ошибка не появляется.
Хотел спросить по поводу данной ошибки, если при Dataset.Close происходить ошибка Catastrophic failure, и мы её перехватываем в блоке catch, возможно ли как то восстановить состояние системы, какой она была до ошибки ? После этой ошибки, после каждого действие происходит дальнейшие ошибки, которые не позволяют пользователю работать дальше
Артур, необходимо разбираться с причиной ошибки и устранять её, простым try {} catch {} не обойтись.
Хотел уточнить, что код ошибки (number), который появляется при ошибки на закрытие датасет (Dataset.Close()): -2147418113.
Поискал в форуме по номеру ошибки -2147418113, нашел несколько записей людей о обработке этой ошибки.
http://www.community.terrasoft.ru/blogs/6647
http://www.community.terrasoft.ru/forum/topic/5601
Может, кто то знает причину этой ошибки ?
Добрый день.
В ядре информации об ошибке не нашли.
Прошу уточнить, в чем именно заключается проблема в обработке данной ошибки.
Добрый день
Ошибка происходит при Dataset.Close(), я хотел узнать, может, кто то знает причину этой -2147418113 ошибки ?
У некоторых людей сделана обработка именно на эту ошибку:
http://www.community.terrasoft.ru/blogs/6647
http://www.community.terrasoft.ru/forum/topic/5601
почему именно на эту ошибку ?
Добрый день.
В ядре информации об ошибке не нашли.
В чем именно проблема?