![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не завершается цикл while
Slimer © (2007-05-16 22:34:00)пишу такой код:
with table1 do
begin
first;
while not table1.eof do
begin
edit;
fileldbyname('col').value:=fileldbyname('col').value+nadbavka;
post;
next;
end;
end;
В итоге после изменения последней записи цикл не завершается, а продолжает добавлять надбавку.
Почему так?
Desdechado (2007-05-17 11:22:00) [1]> Скорее всего это гримасы with
> сначала было with table1
> потом зачем-то явно table1.eof
Там же один with, а не два. Хотя действительно бессмысленно делать винегрет.
Alex_C (2007-05-17 10:34:00) [2]
> > Скорее всего это гримасы with
>
> хм... правда, может быть такое?
> не зря я этот with не люблю...
Очень распростаненный глюк With именно с table.next (next принемается как Form.next)! C другими операторами все ок!
clickmaker (2007-05-17 10:25:00) [3]
> Скорее всего это гримасы with
хм... правда, может быть такое?
не зря я этот with не люблю...
Reindeer Moss Eater (2007-05-17 10:07:00) [4]with table1 do
begin
first;
while not table1.eof do
begin
edit;
fileldbyname('col').value:=fileldbyname('col').value+nadbavka;
post;
next;
end;
end;
Скорее всего это гримасы with
сначала было with table1
потом зачем-то явно table1.eof
и как результат - компилер решил, что next это метод формы, а не метод table1
G_M_S (2007-05-17 10:01:00) [5]
> Slimer © (16.05.07 23:33) [15]
> Поскольку даже ума не приложу в чем может быть проблемма
> с while, оставлю с for.Как всегда будем надеяться что не
> подкачает:)
Делай после открытия датасета FetchAll - тогда точно не подкачает, количество в RecordCount будет правильным.
Германн (2007-05-17 02:31:00) [6]
> Anatoly Podgoretsky © (17.05.07 00:12) [16]
>
> > Slimer (16.05.2007 23:33:15) [15]
>
> И не надейся, законы Паркинсона никому не удалось преодолеть.
>
>
А есть ещё и законы Мерфи! :)
Так что никакой надежды быть не может! Ну разве что на русский авось!
:)
Anatoly Podgoretsky (2007-05-17 00:12:00) [7]> Slimer (16.05.2007 23:33:15) [15]
И не надейся, законы Паркинсона никому не удалось преодолеть.
Slimer (2007-05-16 23:33:00) [8]Поскольку даже ума не приложу в чем может быть проблемма с while, оставлю с for.
Как всегда будем надеяться что не подкачает:)
Loginov Dmitry (2007-05-16 23:29:00) [9]> Я использовал for и RecordCount. Заработало, но что-то внутри
> подсказывает, что использовать while было бы правильней
И то правда. For не всегда канает. Стандартные компоненты для работы с БД InterBase не определят число записей, пока в них не зальешь все строки таблицы.
Slimer (2007-05-16 23:20:00) [10]
> Проверь, какие обработчики могу вызывать данный код. Может
> OnChange у поля Col. Может Before[After]Event и т.п.
Я так понимаю что если бы процедура вызывалась повторно, то изменялись бы все записи с первой, а так останавливается на последней записи и добавляет ей надбавку без остановок
Slimer (2007-05-16 23:16:00) [11]
// fileldbyname('col').value:=fileldbyname('col').value+nadbavka;
так завершается а с редактированием - нет.
Я использовал for и RecordCount. Заработало, но что-то внутри подсказывает, что использовать while было бы правильней
Loginov Dmitry (2007-05-16 23:12:00) [12]Проверь, какие обработчики могу вызывать данный код. Может OnChange у поля Col. Может Before[After]Event и т.п.
> Может delphi глючит?
Практически глюки Delphi проявляются в 99.99% случаев в невозможности скомпилировать заданный код. Но если компиляция прошла успешно - все ошибки - это глюки самого программиста. За крайне-крайне редким исключением. Так что и думать про это забудь.
Anatoly Podgoretsky (2007-05-16 23:09:00) [13]Проверяется легко
// fileldbyname('col').value:=fileldbyname('col').value+nadbavka;
Anatoly Podgoretsky (2007-05-16 23:08:00) [14]Тогда цикл должен завершаться.
Slimer (2007-05-16 23:05:00) [15]
> А ты ответь на вопрос про сортировку
нет. сортировка не применяется
Anatoly Podgoretsky (2007-05-16 23:02:00) [16]
> Может delphi глючит?
Это последнее о чем надо думать, как правило все наоборот.
Anatoly Podgoretsky (2007-05-16 23:01:00) [17]> Slimer (16.05.2007 22:50:05) [5]
А ты ответь на вопрос про сортировку
Slimer (2007-05-16 22:50:00) [18]
> Anatoly Podgoretsky © (16.05.07 22:47) [4]
Т.е. вы хотите сказать что цыкл не завершается потому что происходит редактирование записи? Почему так?
Anatoly Podgoretsky (2007-05-16 22:47:00) [19]> Slimer (16.05.2007 22:42:02) [2]
А здесь нет изменения поля 'col'
Slimer (2007-05-16 22:43:00) [20]Может delphi глючит?