Форум: "Базы";
Текущий архив: 2002.03.25;
Скачать: [xml.tar.bz2];
ВнизКуда деваются ошибки? Найти похожие ветки
← →
Jony (2002-02-25 11:09) [0]Мастера, объясните! Уже не первый раз попадаю в такую ситуацию: при запуске программы из Delphi вылезает ошибка (в последнем случае - "Ошибка неизвестного типа", с чем связана - догадываюсь). Долго и нудно бьешься, чтобы ее выловить, мозги плавятся. И вдруг, случайно обнаруживаешь, что если запустить скомпилированный EXEшник, то никакой ошибки в этом месте нет. В чем здесь секрет? Если это какая-то закономерность, то как заранее определить, какая ошибка - "липовая"?
← →
sniknik (2002-02-25 12:53) [1]Можеш прислать примерчик? Так чтобы как ты говорил в Delphi ошибка в exe нет. Возможно сам Delphi глючит у меня шестой проверю.
← →
Jony (2002-02-25 13:45) [2]С "примерчиком" сложнее. Сам проект уже приличный, база на MSSQL тоже солидная. Делать вырезку - очень долго, да и обязательно где-то чего-то не учтешь. Могу подробно описать ситуации, при которых возникали такие моменты. Может удастся смоделировать на каком-то готовом проекте (я думаю это не сложно будет сделать).
1.(Вернее последняя, с которой столкнулся.) База на MSSQL. В DataModule - ADODataSet (пока без всяких наворотов типа ADOшных Properties, описанных в статье на "Королевстве", еще только пытаюсь с ними разобраться). Кроме полей из таблицы добавлены LookUpные поля из таблиц-справочников (вернее через их ADODataSet наборы в том же DataModule) через FieldsEditor по всем правилам теории: NewFields -> FieldType - LookUp и т.д.
А далее все и начинается. Если в такой набор добавляешь новую запись (Insert через Grid или Editы) после ввода значения в первое же поле выскакивает окно с "Ошибкой неизвестного типа". После определенного количества нажатий Enter - F9 (с той же ошибкой) можно вводить информацию в следующее поле, и предыдущее поле остается с информацией. В результате долгих и мучительных поисков удалось (надеюсь, что удалось) установить, что ошибка эта вылетает именно из-за LookUpных полей - ответ на попытку достать из справочника значение, соответствующее значению Null в поле набора, связанным со справочником в новой записи. Так вот, если проект откомпилировать и запустить EXEшник, то эта ошибка не появляется.
2. Воспроизведу по памяти, а то проект в таком состоянии, что проверить точно будет сложно. В таблице справочника на сервере сделан тригер на удаление - проверка использования справочной единицы в документах. В случае, если она используется - возвращается сообщение об этом. В проекте стоит обработчик такой ситуации (Try... Except) с соответствующим сообщением. В этом случае, если запустить проект из Delphi, то при попытке удалить справочное значение выскакивает ошибка с сообщением от тригера и после этого набор блокируется и любое действие при попытке его редактировать или даже прокрутить приводят к появлению этой ошибки и ничего больше сделать нельзя. А вот если запустить EXEшник, то, как и в предыдущем случае, эта ошибка не появляется, выдается окно с соответствующим сообщением из обработчика и программа нормально работает дальше.
Вот такие вот парадоксы.
Кто что скажет по этому поводу?
← →
Юрий Жуков (2002-02-25 15:31) [3]Знаем такую ошибку.
Связана с лукап полями. Причем без IDE ее у тебя не будет - в борланде поставили try except (там в исходниках можно увидеть)
Вывод либо отключить в IDE остановку на ошибках, либо поставить LookupCashe := True;
← →
alxx (2002-02-26 01:58) [4]А вот у меня была такая: Table is full. - при добавлении записи. Глюки dBase-овские. Что-то с индексами наглючилось.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.03.25;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.102 c