Форум: "Базы";
Текущий архив: 2003.08.21;
Скачать: [xml.tar.bz2];
Внизкак обновить только одну запись Найти похожие ветки
← →
abc (2003-07-28 14:27) [0]а не выполнять полное обновленце таблицы (TClientDataset)
← →
AkaSaint (2003-07-28 18:03) [1]Не сразу я додумался до этого :-)
CDS: TClientDataSet;
1) Запоминаешь значение первичного ключа нужной записи
2) Удаляешь эту запись из CDS
3) CDS.MergeChangeLog (мы не хотим удалять ее из БД)
4) CDS.PacketRecords := 1;
5) На клиенте в обработчике BeforeGetRecords загоняешь значение первичного ключа в OleVariant.
5) Вызываешь GetNextPacket (FetchOnDemand установлен в False)
6) На сервере приложений в BeforeGetRecords провайдера извлекаешь из OleVariant значение первичного ключа и позиционируешься на нужную запись в наборе данных.
7) Обновленная запись находится в CDS.
Если тебе нужно также обновить одну запись на сервере приложений из БД, и ты используешь ADO, тогда метод Resync (см. MSDN).
← →
abc (2003-07-28 18:45) [2]однако =)
← →
abc (2003-07-28 18:46) [3]спасибо!
← →
Polevi (2003-07-28 20:44) [4]TClientDataset.RefreshRecord
← →
Polevi (2003-07-28 20:45) [5]также можно глянуть TDatasetProvider.InternalRowRequest
← →
AkaSaint (2003-07-28 21:41) [6]2Polevi:Я даже забыл про RefreshRecord. У меня в CB6 он не работает.
← →
abc (2003-07-29 14:44) [7]спасибо, а TClientDataset.RefreshRecord что то и не хочет
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.08.21;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c