Форум: "Базы";
Текущий архив: 2002.06.27;
Скачать: [xml.tar.bz2];
ВнизTClientDataSet Найти похожие ветки
← →
Yngwar (2002-05-30 20:54) [0]Кто-нибудь знает как в TClientDataSet отличить состояния: когда данные загружены из базы, а когда из файла?
Если данные загружены LoadFromFile и потом сделать Refresh, то вылетает ошибка.
← →
Deniz (2002-05-31 09:06) [1]А что пользователь сам пишет программу?
Заведи переменную.
← →
Mike_Goblin (2002-05-31 10:41) [2]Refresh обновляет данные датасета, беря их от провайдера. При этом в логе изменений датасета не должно быть изменений. (а то что же это пользователь наделал изменений, а мы их убьем)
Refresh вылетает, потому что есть несохраненные изменения (при загрузке из файла все строки считаются несохраненными, тк откуда бедному датасету знать что творилось в базе)
Вот кусок из хелпа
A similar method, Refresh, replaces the entire contents of the client dataset with the current values supplied by the provider. Unlike RefreshRecord, which leaves unapplied changes in the change log, Refresh raises an exception when the change log is not empty.
А вот кусок исходника VCL InternalRefresh
CheckBrowseMode;
if ChangeCount > 0 then
DatabaseError(SRefreshError, Self);
Вот он тебе и генерирует исключение
Отсюда вывод, не надо рефрешить когда есть изменения
← →
Yngwar (2002-05-31 18:40) [3]Ошибка вылетает и после ApplyUpdates и даже если никаких изменений не делалось...
← →
Slava (2002-05-31 19:19) [4]> Yngwar
ApplyApdates что возвращает?
← →
Yngwar (2002-06-01 20:08) [5]ApplyUpdates отрабатывает нормально, все изменения сохраняются в базе. После Active=False; Active=True; можно снова делать Refresh. А вот до этого нельзя.
← →
Mike_Goblin (2002-06-03 11:50) [6]Какой результат (0 или положительное число) возвращает ApplyUpdates?
А ChangeCount чему равно при вызове Refresh?
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.06.27;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.006 c