Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2014.08.10;
Скачать: [xml.tar.bz2];

Вниз

Отладчик, отлов событий   Найти похожие ветки 

 
Гырым   (2013-09-24 18:05) [0]

Добрый день.
Заработал себе какой-то комплексный глюк.
При открытии одного датасета совершается попытка изменить одно из полей другого датасета, еще закрытого.
В результате вылетает ошибка
---------------------------
Cannot perform this operation on a closed dataset
-----------------------------
Не могу найти место, где производится обращение к закрытому датасету и попытка изменения поля.
Исключение вылетает на строке Датасет.Опен
При проходе по Шифт+Ф8 вижу только окно цпу, и, судя по названиям, стандартные модули объектов АДО, ТДатаСет и т.п.
-----------
Проверил обработчики обоих датасетов, ничего подозрительного.
Прошел поиском по тексту, ставил брейк на строку где имеется присваивание полю- останов не происходит.
Думаю откатывать версию, как ловить глюк мысли закончились.
Прошу помощи.


 
[ВладОшин] ©   (2013-09-24 22:44) [1]

SDataSetClosed = "Cannot perform this operation on a closed dataset";
Ctrl +F, поиск в модулях "SDataSetClosed"
установка бряка
use debug dcu в опциях проекта
смотреть стек

или поставить медэксепт /Эврику


 
Cobalt ©   (2013-09-25 10:53) [2]

Обработчик на АфтерОпен?


 
Ega23 ©   (2013-09-25 11:07) [3]

1. use debug DCUs галку включить
2. бряк на TDataSet.Open
3. Смотреть call stack
4. Стопудов либо какой-нибудь AfterOpen, либо на DataSource.OnDataChange на событии что-то висит, либо мастер-деталь какая.


 
Гырым   (2013-09-25 16:25) [4]

[ВладОшин] , Cobalt, Ega23
Спасибо за советы.
Закомментил обработчик АфтерОпен, проблема осталась.
ДатаСорсы обоих датасетов обработчиков не имеют совсем.

По поводу Мастер-Деталь.
В процедуре синхронизации датасетов (открыть/обновить) поставил команду Датасет2.Клоз перед Датсет1.Опен.
характер ошибки изменился, ошибка возникает при открытии второго датасета- Датасет не в режиме редактирования.

Датасет1 имеет обработчики АфтерОпен, БефорПост, БефорРефреш, ОнКалк, после закомментирования проблема остается.
Датасет2 имеет обработчики АфтерИнсерт, АфтерПост, ОнКалк.
Закоммментил или заглушил все три поврозь и одновременно - проблема остается.

Поставил галку на дебуг дку.

В процедуре TDataSet.SetActive после команды   OpenCursor; выскакивает обработчик OnChange ДатаЕдита от второго датасета.
При этом флаг Модифай оказывается тру.
Соответственно отрабатывается реакция на изменение поля, хотя пользователь никаких изменений не вносил.

Еще деталь.
По настоятельному желанию заказчика поле дбДатаЕдит продублировано на двух вкладках.
Для этого Едита OnChange выскакивает дважды.
При первом вызове Модифай=Фальш, при втором вдруг оказывается Тру.
Если сбросить обработчик со второго Едита, симптомы проблемы исчезают.
Почему Модифай у дбДатаЕдита-дубликата может оказаться Тру?


 
Ega23 ©   (2013-09-26 10:47) [5]

U tebya slishkom mnogo vsego navesheno na НаборъДанных i ИсточникъДанных, a takzhe ty slishkom uvlekaeshsya v ispol"zovanii БДЗнающихъКомпонентов.


 
[ВладОшин] ©   (2013-09-26 11:12) [6]

сделал:
два dbedit
на одно поле одного dataset
на разных вкладках PageControl
- симптомы не повторяются.

Смотри код, что-то напутал


 
Гырым   (2013-09-26 18:19) [7]

Это понятно, про что-то напутал.
Вопрос, как найти где.
При каких условиях возникает ОнЧенч?
Для некоторых едитов выскакивает при простом переходе по записям.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2014.08.10;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.002 c
15-1389817803
Юрий
2014-01-16 00:30
2014.08.10
С днем рождения ! 16 января 2014 четверг


15-1389746609
asdasd
2014-01-15 04:43
2014.08.10
андроид


2-1379946304
никита2013
2013-09-23 18:25
2014.08.10
Сортировка StringGrid по колонке с датой


15-1389879208
Пит
2014-01-16 17:33
2014.08.10
Потому что все так считают


15-1389685377
Eleon
2014-01-14 11:42
2014.08.10
Internet Explorer





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский