Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Почему зависает приложение, после SQL запроса?


dimonf ©   (2002-10-03 16:46:00) 

Удаляю запись из базы, после удаление последней записи приложение уходит в никуда и прога зависает. Почему такой нонсенс???
...
var Name, Detal, Nomer : String;
...
IF Query1.FieldByName("ID").Value = Null then
begin
MessageDlg("База пуста.", mtInformation, [mbOk], 0);
Exit;
end;
Name := ComboBox1.Items.Strings[ComboBox1.ItemIndex];
Detal := StringGrid1.Rows[StringGrid1.Row].Strings[0];
Nomer := StringGrid2.Rows[StringGrid2.Row].Strings[0];
IF MessageBox(MainForm.Handle,
PChar("Удаляете: "+Detal+" Вы уверены?"),
PChar("База данных"), 4) = 6 then
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.ADD("Delete From ""+MainForm.FDir+"\Base\Katalog.db" Where (Name = "+QuotedStr(Name)+" and Detal = "+QuotedStr(Detal)+" and Nomer = "+QuotedStr(Nomer)+")");
Query1.ExecSQL;
end;


dimonf   (2002-10-04 09:30:00) [1]

Prooksius - я не понял, что это за команда IsNull,
при использовании ее в моем коде Delphi ругаеться:
[Error] BaseDetal_Pas.pas(273): Undeclared identifier: "IsNull"
Почему?

Я нашол в чем у меня была проблема. :)
Я просто сылалса не на ту форму: MainForm.Handle. А надо было: TableOrder.Handle. Сейчас все o"k.


Prooksius   (2002-10-03 19:09:00) [2]

2 Johnmen © (03.10.02 18:22)
Да я и не предлагаю это, я просто написал, как правильно на нулевость поле проверить конкретно в этой строчке кода.
Конечно так отсутствие строк в таблице/запросе не проверяют, что я и написал тут:
Prooksius © (03.10.02 17:50)


Best Before 2024   (2002-10-03 18:24:00) [3]

dimonf © (03.10.02 16:46)

Больше кода в студию!!!!
Может, у тебя еще там что-нибудь страшное на месте твоих ...


Johnmen   (2002-10-03 18:22:00) [4]

>Prooksius © (03.10.02 17:58)
>IF Query1.FieldByName("ID").IsNull then...

А ты попробуй...На пустом НД...И что получается ?...



Prooksius   (2002-10-03 17:58:00) [5]

И, в коце концов, так писать нельзя. Надо так:
IF Query1.FieldByName("ID").IsNull then...


Best Before 2024   (2002-10-03 17:53:00) [6]

IF Query1.FieldByName("ID").Value = Null then

Вообще должна быть ошибка: Both Bof and Eof is true...


Prooksius   (2002-10-03 17:50:00) [7]

Что в SQL Query1 на момент самого первого IF?
Удаление данных происходит из выборки на основе ее?
Логичнее проверять отсутствие строк в датасете (query) количеством строк в датасете (query), а не нулевостью поля.


dimonf   (2002-10-03 17:46:00) [8]

Схема примерная такая: запись одна она удаляеться и дальше висяк. :(
Но если, например две записи, то удаляеться запись и все o"k.


Prooksius   (2002-10-03 16:54:00) [9]

Удаляется именно последняя строчка и сразу после этого завис?
или
Ты пытаешься удалить даже когда уже ничего нет, и прога виснет?
Что в SQL Query1 на момент самого первого IF?


Наверх

Титульная страница Поиск, карта сайта Написать письмо