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

Вниз

После отлавливания ошибки в запросе ADO глючит   Найти похожие ветки 

 
Alex_x   (2003-09-04 11:29) [0]

UPDATE XXX SET A=B/C С помощю TRY EXCEPT я ловлю ошибку деления на ноль, но после того в програме при обращених к базе и всем контролам с нею связаными вылетает куча ошибок, большенство с именем файла msado15.dll тоесть програма уже не работает и завершить её можна только убив процес


 
Sandman25   (2003-09-04 11:34) [1]

update xxx set a = b/c where c <> 0


 
Sandman25   (2003-09-04 11:37) [2]

Если с - константа, не зависящая от значений полей, то
if c <> 0 then
with Query do
begin
SQl.Clear;
SQL.Add("UPDATE XXX SET A=B/" + IntToStr(C));
ExecSQL;
end;


 
Alex_x   (2003-09-04 11:48) [3]

полей много и формулы разные, всё не провериш, меня интересуеит вариант стабилизирования работи програми после такогй ошибки


 
bushmen   (2003-09-04 11:57) [4]

Приведи кусок кода от TRY до END


 
Sandman25   (2003-09-04 12:01) [5]

[3] Alex_x © (04.09.03 11:48)

Я просто помню, что пару месяцев назад кто-то писал на форум точно о такой же проблеме. На одной машине работало нормально, на другой зависало и требовалась перезагрузка. Тогда решения не нашли.


 
Alex_x   (2003-09-04 12:02) [6]

TRY
Formula:="MG=MG1-MG2";
Comm.CommandText:="UPDATE WORK1 SET "+Formula+" WHERE ID="+ID[i];
Comm.Execute;

.........................

Formula:="HLD=(HLD1*HLD2*HLD3*1000)/HLD4";
Comm.CommandText:="UPDATE WORK1 SET "+Formula+" WHERE ID="+ID[i];
Comm.Execute;

except
Showmessage("dividing by zeroo");
//здесь пробовал разние варианти:
//типа Halt,Abort.. но всёравно потом прога глючит
end;


 
bushmen   (2003-09-04 12:27) [7]

А почему не хочешь воспользоваться компонентом TADOQuery?


 
Hooch   (2003-09-04 12:30) [8]

Delphi какие ? Стоят ли апдейты ? Можно поробовать ADO переставить посвежее


 
sniknik   (2003-09-04 12:42) [9]

может лутше отсечь в условии HLD4=0 или запрос на апдейт сделать вариантным? база какая?


 
Hooch   (2003-09-04 12:48) [10]

это не дело, если при ошибке выполнения команды программа умирает, надо искать причини а не бороться со следствиями :-)


 
Nikky   (2003-09-04 12:51) [11]

проверяй в запросе @@Error ?

update table set a = b/c
if @ERROR <> 0 raiseerror ("zero divide", 15, 1)


 
Nikky   (2003-09-04 13:14) [12]


> if @ERROR


if @@ERROR т.е.


 
Nikolay M.   (2003-09-04 13:27) [13]


> может лутше отсечь в условии HLD4=0 или запрос на апдейт
> сделать вариантным

Имхо, если при вычислении значения некоторого поля некоторой записи предполагается деление на другое число (поле), то либо оно никогда не должно быть равным нулем по определению, либо то, вычисляемое, поле должно предусматривать значение вроде "не определено" (конечно, если нет работы с +- бесконечностями).
Поэтому зрить нужно в корень: либо ошибка вводимых данных и такие данные нельзя разрешать вводить, либо ошибка проектирования хранения данных.


 
MOA   (2003-09-04 13:29) [14]

База - MSSQL? Если да, есть вариант с CASE.
Удачи!


 
Alex_x   (2003-09-04 13:51) [15]

а ADOQuery чем лучше ADOcommand?

>>>update table set a = b/c
>>>if @ERROR <> 0 raiseerror ("zero divide", 15, 1)
это не разве то самое в результате получится что с TRY EXCEPT
можна детальнее про єту конструкцию

Delphi6 с updatom база аксесовская, виндовс ХР. Чтоб обновить АДО надо MDAC ставить????


 
jocko   (2003-09-04 14:09) [16]

а если сделать ту же команду но через хран. процедуру та же картина ?
и еще а если вообще вызвать команду
RAISERROR("Ошибка!", 16, 1) WITH NOWAIT тоже повиснет ?
если да то явно проблема или ado или провайдера ...



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

Форум: "Базы";
Текущий архив: 2003.09.25;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.011 c
3-82041
nrn
2003-09-03 08:45
2003.09.25
LoocupComboBox


1-82223
Wild
2003-09-11 17:40
2003.09.25
Параметры в процедурах и функциях


1-82275
Новик
2003-09-12 14:18
2003.09.25
Hint для TreeView


14-82469
Всеволод Соловьёв
2003-09-06 12:22
2003.09.25
Воздушно-пузырьковые стиралки


14-82430
Johnny Smith
2003-09-09 15:17
2003.09.25
Любителям международной дружбы.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский