Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Anatoliy
Зарегистрирован: 15.04.2002 Сообщения: 681 Откуда: Moscow
|
Добавлено: Пн Авг 26 2002 14:10 Заголовок сообщения: Скажите, почему данный код не выполняется ко всем записям. |
|
|
Скажите, почему данный код не выполняется ко всем записям. Приходиться его выполнять пару раз. За проход делает несколько записей 2-15,20, а в таблице их более 1000. Таблица DBF. for(DM->Tdocum->First(); !DM->Tdocum->Eof; DM->Tdocum->Next()) { if(!FileExists(DM->Tdocum->FieldByName("pathdoc")->AsString.c_str()))
.. { DM->Teclud->Insert(); DM->Teclud->FieldValues["numd"] = DM->Tdocum->FieldValues["numd"]; ......................... остальные поля таблицы................... DM->Teclud->Post(); DM->Tfilcount->Edit(); DM->Tfilcount->FieldValues["counts"] = DM->Tfilcount->FieldValues["counts"]-1; .............................. DM->Tfilcount->Post(); DM->Tdocum->Delete(); }} Требуеться: Пройтись по всем записям в таблице "Tdocum" и проверить существует ли файл по расположению поля "pathdoc", если нет то запись копирую вдругую таблицу "Teclud", в третьей "Tfilcount" исправляю счетчик и удаляю запись в "Tdocum". Почему этим способом пошел потому что не понял как через запрос. |
|
Вернуться к началу |
|
|
Rus
Зарегистрирован: 04.04.2002 Сообщения: 20 Откуда: Сургут
|
Добавлено: Вт Авг 27 2002 06:27 Заголовок сообщения: Re: Скажите, почему данный код не выполняется ко всем записям. |
|
|
Потому что метод Delete() после удаления записи переходит к следующей. Надо сделать альтернативно: либо Delete(), либо Next() |
|
Вернуться к началу |
|
|
Anatoliy
Зарегистрирован: 15.04.2002 Сообщения: 681 Откуда: Moscow
|
Добавлено: Вт Авг 27 2002 09:59 Заголовок сообщения: Re: Скажите, почему данный код не выполняется ко всем записям. |
|
|
Что посоветуете, или вообще пойти другим путем? |
|
Вернуться к началу |
|
|
Борис Гость
|
Добавлено: Вт Авг 27 2002 19:43 Заголовок сообщения: Re: Скажите, почему данный код не выполняется ко всем записям. |
|
|
Rus ведь ясно сказал: for(DM->Tdocum->First(); !DM->Tdocum->Eof; ) { if(...) { ... DM->Tdocum->Delete(); } else { DM->Tdocum->Next(); }} |
|
Вернуться к началу |
|
|
Anatoliy
Зарегистрирован: 15.04.2002 Сообщения: 681 Откуда: Moscow
|
Добавлено: Ср Авг 28 2002 08:25 Заголовок сообщения: Re: Скажите, почему данный код не выполняется ко всем записям. |
|
|
Я так пробовал, но не работает. |
|
Вернуться к началу |
|
|
Борис Гость
|
Добавлено: Ср Авг 28 2002 11:58 Заголовок сообщения: Re: Скажите, почему данный код не выполняется ко всем записям. |
|
|
Значит, перед удалением находи следующую запись, запоминай ее, возвращайся на удаляемую и после удаления передвигайся непосредственно на запомненную.
Кстати, для работы с таблицами/базами данных все-таки эффективней работать операциями СУБД. |
|
Вернуться к началу |
|
|
|