ynkulbyh |
Отправлено: 08.09.2004, 10:15 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 4
|
юзаю сабж.
и вот что я понял.
есть у меня мой TSQLClientDataSet
есть в нем запрос (субд interbase)
select d.*, w.s_skl, u.s_SURNAME s_SURNAME
from tl_delivery d
inner join tl_warehouse_skl w on d.s_warehouse = w.s_warehouse
inner join tl_user u on u.s_login = d.s_login
как видим запрос получается сложным. клиент дата сет его, после редактирования, по ApplyUpdates сохранить не может. т.к. не понимает какие поля и куда и как сейвить.
впорос. если какие нить способы завести для этого клинентдатиасета аналог bde шного TUpdate, Т.е. запросы UpdateSQL, InsertSQL и т.д. или надо ручкамим в коде все сохранять в событии BeforeUpdateRecord????
|
|
A1 |
Отправлено: 26.10.2004, 09:54 |
|
Не зарегистрирован
|
U menja bila ta ze problema s MySQL.
Esli izmenenija zatragivajut tolko 1 tablicu, togda dostatochno v obrabotchike "OnGetTableName" propisat TableName="UpdatedTableName"; a v obrabotchike "BeforeUpdateRecord":
DeltaDS->FindField("JoinedField_1")->ProviderFlags>>pfInUpdate>>pfInWhere;
.....
DeltaDS->FindField("JoinedField_n")->ProviderFlags>>pfInUpdate>>pfInWhere;
Togda ApplyUpdates budet normalno rabotat.
Esli izmenenija nado delat v neskolkih tablicah, pridetsa samomu generirovat SQL
Ja generiroval v "BeforeUpdateRecord" i v "OnReconcileError". Vtoroj variant rabotaet medlenneje, no v nekotorih mestah ne ustraivalo, chto esli v BeforeUpdateRecord napisat Applied=true, to proishodit ochis4enie Delta i k starim danim polej(do nachala izmenenij) uze dostupa net. |
|
|