Вниз
Скачать: CL | DM;

Организация цикла перебора записей в таблице TIBTable   Найти похожие ветки 

← →
Andrio ©   (2003-05-04 13:15) [0]

Не пойму почему не работает перебор всех записей в цикле?
Имеется таблица TIBTable. Цикл такой:

if UslugiTable.FindFirst then
begin
REPEAT

// ******************************

UNTIL not UslugiTable.FindNext;

Во-первых: уже при первом условии он выдает false и не доходит до цикла вообще.
Во-вторых: если первую строку убрать и переходить к циклу сразу без условия то выполняются операции над текущей строкой а затем цикл прекращается. Т.е. FindNext выдает false хотя:

RecordCount 3
RecNo 1

Но

IsEmpty Inaccessible value
FindFirst Inaccessible value (поступает как false)

При попытке присвоить любое из вышеперечисленных значений переменной, в окне WatchList пишет
одно и тоже для всего:

"Variable "NNN" inaccessible here due to optimization"

Может баг в Делфе какой может еще че, помогите pleeeeese!!!! :(


← →
MsGuns ©   (2003-05-04 13:31) [1]

Если надо простое сканирование (перебор) ВСЕХ записей курсора НД, то причем здесь метод FindFirst/FindNext ? Достаточно цикла while not IBTable1.Eof do

Хотя правильнее так:

var
bm: TBookMark;
begin
Screen/Cursor := crHourGlass; // Повесили часики
Grid1.DataSource.Enambe := false; // Отключили грид
with IBTable1 do
begin
bm := GetBookMark; // Запомнили текущую запись
First; // К началу НД
while not EOF do
begin // Сканирование НД
<Какие-то действия с очередной записью НД
Next;
end;
GoToBookMark(bm); // Вернулись в исх.запись
FreeBookMark(bm); // Убрали "мусор"
end;
Grid1.DataSource.Enambe := true; // Включить грид
Screen.Cursor := crDefault; // Вернули курсору норм.вид
end;


← →
Zacho ©   (2003-05-04 13:39) [2]


> MsGuns © (04.05.03 13:31)

Небольшое замечание. Работать с bookmark"ами можно гораздо проще.
var
bm:TBookmarkStr;
...
bm:=Bookmark;
...
Bookmark:=bm;


А всякие TBookmark, GetBookmark, FreeBookmark - это имхо атавизм.


← →
MsGuns ©   (2003-05-04 13:50) [3]

>Zacho © (04.05.03 13:39)
>А всякие TBookmark, GetBookmark, FreeBookmark - это имхо атавизм

Ну, это дело вкуса. Как старый ассемблерщик, насмотревшийся вдоволь на "оптимизированные" коды, стараюсь писать максимально ясно, пусть даже и в ущерб "стильности" и "крутизне" кода.

Хотя в данном случае один фиг, конечно. Привычка-с ;))



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.009 c
14-70469
LOX
2003-05-03 18:05
2003.05.22
WWW сайт без знания пароля и логина


14-70460
Xeon
2003-05-02 07:51
2003.05.22
Компиляция?


3-70091
KAA1971
2003-05-03 14:14
2003.05.22
insert into table2 select * from table1


11-70195
Kirill
2002-08-11 23:52
2003.05.22
Как работать с Editbox ом


14-70452
kaif
2003-04-29 14:39
2003.05.22
Жизнь садовника лучше.




   Наверх