Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ClientDataSet, очистка данных перед загрузкой новых 
:(
    Опции темы
Inga
Дата 25.11.2005, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 18.11.2005

Репутация: нет
Всего: нет



Заполняю, во время выполнения, данными ClientDataSet. Просмотрев их, хочу загрузить в этот же ClientDataSet другие данные.
Как проверить содержаться ли в ClientDataSet данные и если да, то очистить ClientDataSet и приступить к заполнению новыми данными.
Удалять, наверное, правильно так:
ClientDataSet2->EmptyDataSet();
ClientDataSet2->ClearFields();

PM   Вверх
Vyacheslav
Дата 25.11.2005, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 47
Всего: 59



Код

if( ClientDataSet->RecordCount ) {
}
//или
if( ClientDataSet->Eof &&  ClientDataSet->Bof) {
} 



--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
sexton
Дата 25.11.2005, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sexton=Пономарь (eng)
**


Профиль
Группа: Участник
Сообщений: 503
Регистрация: 5.5.2004
Где: Ульяновск

Репутация: 5
Всего: 9




ClientDataSet2->ClearFields();
Очищает все поля только в активной записи.

Можно например проверять ClientDataSet2->RecordCount >0
и делать EmptyDataSet.
PM MAIL WWW ICQ   Вверх
Inga
Дата 25.11.2005, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 18.11.2005

Репутация: нет
Всего: нет



Мне надо удалить и колонки и все записи, чтобы компонет пришел в такое состояние, когда его только положили на форму.

Пробовала так: DataSource3->DataSet->Active=false;
Исключение пишет, что поля с тем же именем уже определены при попытки создать их для ClientDataset. Следовательно ClientDataset не очистился. smile

Это сообщение отредактировал(а) Inga - 25.11.2005, 19:11
PM   Вверх
sexton
Дата 26.11.2005, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sexton=Пономарь (eng)
**


Профиль
Группа: Участник
Сообщений: 503
Регистрация: 5.5.2004
Где: Ульяновск

Репутация: 5
Всего: 9



Попробуй очищать списки Fields и FieldDefs
PM MAIL WWW ICQ   Вверх
Inga
Дата 26.11.2005, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 18.11.2005

Репутация: нет
Всего: нет



Как очистить списки FieldDefs?
Fields очистить так?:
if(ClientDataSet2->FieldDefs->Count)
{
for(int i=0; i<ClientDataSet2->FieldDefs->Count; i++)
{
ClientDataSet2->Edit();
ClientDataSet2->Fields->Fields[i]->Clear();

}
}
После очистки нужно ли еще ClientDataSet2->EmptyDataSet();?

PM   Вверх
Inga
Дата 26.11.2005, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 18.11.2005

Репутация: нет
Всего: нет



Вроде получилось, исключения пропали, но надежен ли такой код?
Вставляю перед заполнением:
Код

       if(ClientDataSet2->FieldDefs->Count)
        {

           ClientDataSet2->Edit();
           ClientDataSet2->FieldDefs->Clear();
           ClientDataSet2->IndexDefs->Clear();
           ClientDataSet2->Close();

        }
//далее заполняю новыми колонками и данными

Все таки так правильно?
PM   Вверх
sexton
Дата 26.11.2005, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sexton=Пономарь (eng)
**


Профиль
Группа: Участник
Сообщений: 503
Регистрация: 5.5.2004
Где: Ульяновск

Репутация: 5
Всего: 9



По-моему не хватает Post(), Если уж есть Edit()
PM MAIL WWW ICQ   Вверх
Inga
Дата 26.11.2005, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 18.11.2005

Репутация: нет
Всего: нет



Спасибо, буду экспериментировать. smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0535 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.