Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Скажите, почему данный код не выполняется ко всем записям.

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
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".
Почему этим способом пошел потому что не понял как через запрос.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Rus



Зарегистрирован: 04.04.2002
Сообщения: 20
Откуда: Сургут

СообщениеДобавлено: Вт Авг 27 2002 06:27    Заголовок сообщения: Re: Скажите, почему данный код не выполняется ко всем записям. Ответить с цитатой

Потому что метод Delete() после удаления записи переходит к следующей. Надо сделать альтернативно: либо Delete(), либо Next()
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Anatoliy



Зарегистрирован: 15.04.2002
Сообщения: 681
Откуда: Moscow

СообщениеДобавлено: Вт Авг 27 2002 09:59    Заголовок сообщения: Re: Скажите, почему данный код не выполняется ко всем записям. Ответить с цитатой

Что посоветуете, или вообще пойти другим путем?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Борис
Гость





СообщениеДобавлено: Вт Авг 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: Скажите, почему данный код не выполняется ко всем записям. Ответить с цитатой

Я так пробовал, но не работает.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Борис
Гость





СообщениеДобавлено: Ср Авг 28 2002 11:58    Заголовок сообщения: Re: Скажите, почему данный код не выполняется ко всем записям. Ответить с цитатой

Значит, перед удалением находи следующую запись, запоминай ее, возвращайся на удаляемую и после удаления передвигайся непосредственно на запомненную.

Кстати, для работы с таблицами/базами данных все-таки эффективней работать операциями СУБД.
Вернуться к началу
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...