CachedUpdates и Conditions в TpFIBDataSet

IBX, FIBPlus, UIB, ADO, .Net и прочее-прочее-прочее, в общем все, что относится к созданию приложений, работающих с InterBase, Firebird и Yaffil - клиент-серверных, трехзвенных, консольных и т.п.

Модератор: kdv

Ответить
mdfv
Сообщения: 119
Зарегистрирован: 23 май 2006, 15:53

CachedUpdates и Conditions в TpFIBDataSet

Сообщение mdfv » 06 июн 2006, 10:22

Пользуюсь дурацким методом загрузки из DBF.
в TQuery выбираю данные из дбф,
и запихиваю в TpFIBDataSet ч-з FieldByName('').value.
У TpFIBDataSet ставлю CachedUpdates=true, каждые несколько тысяч
записей делаю ApplyUpdates и Commit. И все работает достаточно быстро.

Но есть еще опциональная возможность не просто подгружать все из дбф, а синхронизировать записи по нескольким полям, для чего я в начале использовал TpFIBDataSet.Locate по этим полям. и потом Edit эту запись или Insert если не найдена.

Потом в связи с потенциальным разростанием таблиц и накладным Locate решил перейти на серверную фильтрацию и переделал на TpFIBDataSet.Conditions и
пришлось вместо Locate делать DataSet.Close, DataSet.ParamByName=... , DataSet.Open. Вот здесь и начались дикие тормоза, т.к. пришлось делать ApplyUpdates после каждого Поста, чтобы не терять записи.

Вот в связи с этим и возник вопрос: можно-ли сделать так чтобы после
TpFIBDataSet.Close,Open не терялись отпостеные ранее записи в кэше
?

Ответить