| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > ClientDataSet |
| Автор: Inga 25.11.2005, 16:24 |
| Заполняю, во время выполнения, данными ClientDataSet. Просмотрев их, хочу загрузить в этот же ClientDataSet другие данные. Как проверить содержаться ли в ClientDataSet данные и если да, то очистить ClientDataSet и приступить к заполнению новыми данными. Удалять, наверное, правильно так: ClientDataSet2->EmptyDataSet(); ClientDataSet2->ClearFields(); |
| Автор: Vyacheslav 25.11.2005, 16:53 | ||
|
| Автор: sexton 25.11.2005, 16:56 |
| ClientDataSet2->ClearFields(); Очищает все поля только в активной записи. Можно например проверять ClientDataSet2->RecordCount >0 и делать EmptyDataSet. |
| Автор: Inga 25.11.2005, 17:01 |
| Мне надо удалить и колонки и все записи, чтобы компонет пришел в такое состояние, когда его только положили на форму. Пробовала так: DataSource3->DataSet->Active=false; Исключение пишет, что поля с тем же именем уже определены при попытки создать их для ClientDataset. Следовательно ClientDataset не очистился. |
| Автор: 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 | ||
| Вроде получилось, исключения пропали, но надежен ли такой код? Вставляю перед заполнением:
Все таки так правильно? |
| Автор: sexton 26.11.2005, 15:41 |
| По-моему не хватает Post(), Если уж есть Edit() |
| Автор: Inga 26.11.2005, 16:03 |
| Спасибо, буду экспериментировать. |