C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

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

Вернуться в Работа с базами данных в C++Builder