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

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

Добавление данных в TClientDataSet из другого DataSet. [D6, MSSQL]


Alex9801 ©   (2003-02-25 14:58:00) 

Как в TClientDataSet добавить данные, находящиеся в другом DataSet такой же структуры?
ClientDataSet.Insert / InsertRecord частично решают задачу, но добавленные записи имеют статус usInserted и Provider сразу начнет их добавлять в базу, но это не нужно, т.к. они там уже есть. Т.е. Как в TClientDataSet добавить данные из другого DataSet, чтобы добавленные записи имели статус usUnmodified без физического их добавления в базу?


Alex9801   (2003-02-25 16:32:00) [1]

Придется объяснить еще раз.
Есть список товаров, которых хранится в некоторой таблице в БД и в ClientDataSet на клиенте. Когда юзер руками добавляет/изменяет/удаляет 1..n записей, а затем вызывает ApplyUpdates, то все работает нормально. Теперь нужно откопировать все товары из одной категории в другую. Причем не переместить, а скопировать.
Т.е. в результате выполнения некоторого запроса в таблицу будет добавлено энное количество записей. Это оформляется в виде отдельной хранимой процедуры, которая помимо добавления делает еще массу полезных вещей, а в конце возвращает добавленные записи в виде набора данных.
Вопрос: Как в ClientDataSet добавить записи из другого DataSet c одновременным сбосом для них статуса из usInserted в usUnmodified. Т.е. чтобы при вызове ApplyUpdates эти данные не добавлялись в БД, т.к. они там уже есть.


Clickmaker   (2003-02-25 16:03:00) [2]

вообще-то провайдер не должен добавлять их в базу, пока не скажешь ApplyUpdates, а до этого он просто кэширует их на клиенте (св-во Delta). И смысл добавления в CDS, если не добавлять потом их в базу ?


Наверх

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