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

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

Виснет при удалении [D5, Paradox]


Telic ©   (2002-10-30 12:38:00) 

Мастера. Не пойму.
Удаляю записи из БД PARADOX 7.0 (в другой проге работает)
while not table1.eof do
begin
if table1.fieldbyname("FinRem").value<>null then
table1.delete;//Если в поле есть дата, то удалить.
end;
"FinRem" - поле типа "дата
Идаляет или не то, или вообще виснет намертво!!!
Помогите.


gek   (2002-10-30 13:50:00) [1]

> ЮЮ © (30.10.02 13:45)
Согласен, чуть поспешил


Johnmen   (2002-10-30 13:50:00) [2]

table1.first;
while not table1.eof do
begin
if table1.fieldbyname("FinRem").value<>null then
table1.delete //Если в поле есть дата, то удалить.
else table1.next;
end;


Telic   (2002-10-30 13:50:00) [3]

Спасибо всем большое. Ларчик-то просто открывался. Это я сам стормозил.


ЮЮ   (2002-10-30 13:45:00) [4]

to gek © (30.10.02 13:40) Если удачно удалим, то пропустим следующую за удалённой, не проверяя её


ЮЮ   (2002-10-30 13:43:00) [5]

if table1.fieldbyname("FinRem").IsNull
then table1.delete
else table1.next


gek   (2002-10-30 13:40:00) [6]


while not table1.eof do
begin
if table1.fieldbyname("FinRem").value<>null then
table1.delete;//Если в поле есть дата, то удалить.
if table1.eof then break;
table1.next;
end;


stone   (2002-10-30 13:40:00) [7]

Я бы попробовал еше такой вариант:

table1.DisableControls;
for i := table1.RecordCount downto 1 do
begin
table1.RecNo := i;
if table1.fieldbyname("FinRem").value<>null then
table1.delete;
end
table1.EnableControls;


Telic   (2002-10-30 13:38:00) [8]

Table.next пробовал. Не виснет (уже лучше:-)),но ничего не удаляет.


Telic   (2002-10-30 13:34:00) [9]

Table.next пробовал. Без разницы.
(Кстати, в другой проге нормально работает и без Next)
Значение: 30.12.2002 и т.п(т.е. дата).
Записей 10 (пока пишется; для теста),ничего не удаляется.
Нажимаю кнопку, и ...всё, виснет.


gek   (2002-10-30 13:34:00) [10]

> Johnmen © (30.10.02 13:31)

Нет, ну а если условие
if table1.fieldbyname("FinRem").value<>null then
никогда не будет выполнено, тогда повиснет


Johnmen   (2002-10-30 13:31:00) [11]

>Darts (30.10.02 13:23)
>NDeu © (30.10.02 13:28)

Вы чего, ребята ?! Он же удаляет в цикле !


NDeu   (2002-10-30 13:28:00) [12]

table1.next


Johnmen   (2002-10-30 13:27:00) [13]

На каком шаге удаления виснет, каково значение "FinRem" удаляемой записи, сколько записей в НД изначально и сколько перед висом, сообщение об ошибке, ну и т.д. и т.п.


Darts   (2002-10-30 13:23:00) [14]

Table1.next, скорее всего, пропустил => вечный цикл


Telic   (2002-10-30 13:12:00) [15]

Какие подробности интересуют?


Johnmen   (2002-10-30 13:06:00) [16]

Ничего криминального в коде нет...
Необходимы подробности. И попробуй оттрассировать...


Telic   (2002-10-30 12:46:00) [17]

АААААА---УУУУУУУУ. Мастера-ааааа-аааа


Наверх

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