![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как обновить только одну запись
abc © (2003-07-28 14:27:00)
а не выполнять полное обновленце таблицы (TClientDataset)
abc (2003-07-29 14:44:00) [1]
спасибо, а TClientDataset.RefreshRecord что то и не хочет
AkaSaint (2003-07-28 21:41:00) [2]
2Polevi:Я даже забыл про RefreshRecord. У меня в CB6 он не работает.
Polevi (2003-07-28 20:45:00) [3]
также можно глянуть TDatasetProvider.InternalRowRequest
Polevi (2003-07-28 20:44:00) [4]
TClientDataset.RefreshRecord
abc (2003-07-28 18:46:00) [5]
спасибо!
abc (2003-07-28 18:45:00) [6]
однако =)
AkaSaint (2003-07-28 18:03:00) [7]
Не сразу я додумался до этого :-)
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).