Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как обновить только одну запись


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).


Наверх

Титульная страница Поиск, карта сайта Написать письмо