![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ClientDataSet - Вставка порции данных [D7, dBase, FoxPro]
alex123 © (2004-04-15 13:04:00)Добрый день Мастера!
С одного из филиалов (нет связи) приносят таблицу с новыми документами. Она копируется в каталог IN лежащий рядом.
Один бухгалтер рещает их подлить в основную таблицу.
Используются файл-сервер ClientDataSet1 -> DataSetProvider1 -> ADSQuery1 (Advantage TDataSet 6.2).
Как лучше поступить?
1) Цикл по табличке, сравнение и вставка или правка в зависимости от того есть ли такая запись.
2) А нельзя ли так. Скажем в ClientDataSet1.Delta забрасываю данные из пришедшей таблички (как это лучше сделать?) и применить ClientDataSet1.ApplyUpdates()?
Но записи с совпадающими ключами я понимаю будут вообще проброшены а нужно сравнить измения и исправить данные в основной таблице если есть отличия.
Можно ли так или я выдумываю черт знает что на свою голову?
Спасибо.
Polevi (2004-04-15 14:33:00) [1]cdsMain.AppendData(cdsAdd.Data,false)
serge35 (2004-04-15 14:10:00) [2]Если надо добавлять записи в таблицу, то лучше всего использовать append -- post для основной таблицы.
alex123 (2004-04-15 13:40:00) [3]А где лучше производить обновление, подливать в клиент ClientDataSet и затем ApplyUpdates или же лучще на сервере сразу в основную таблицу а затем на клиенте ClientDataSet.Refresh?
serge35 (2004-04-15 13:26:00) [4]Связь с удаленными базами - это всегда головная боль.
Открываешь новую таблицу, запускаешь по ней цикл, перед добавлением записи ищешь запись в основной базе, если такая есть, то переходишь на следующую запись.Если записи нет, то добавляешь ее в базу.
А что делать с одинаковыми записями - это надо решать с бухгалтером.