Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > ClientDataSet


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

Автор: Vyacheslav 25.11.2005, 16:53
Код

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

Автор: sexton 25.11.2005, 16:56

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

Можно например проверять ClientDataSet2->RecordCount >0
и делать EmptyDataSet.

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

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

Автор: sexton 26.11.2005, 14:33
Попробуй очищать списки Fields и FieldDefs

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

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

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

       if(ClientDataSet2->FieldDefs->Count)
        {

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

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

Все таки так правильно?

Автор: sexton 26.11.2005, 15:41
По-моему не хватает Post(), Если уж есть Edit()

Автор: Inga 26.11.2005, 16:03
Спасибо, буду экспериментировать. smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)