Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.22;
Скачать: 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 вся ветка

Текущий архив: 2003.05.22;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.015 c
3-70113
lejik
2003-04-30 09:07
2003.05.22
Автоинкремент в SQLServer


1-70303
User
2003-05-13 09:20
2003.05.22
Список объектов


1-70283
Deus
2003-05-11 16:55
2003.05.22
Ошибка Internal Error: L594.


11-70192
tamerlan311
2002-08-13 17:15
2003.05.22
сообщения от мыши


3-70135
Nikos
2003-04-30 14:20
2003.05.22
зависает программа