|
![]() |
#1 |
Участник
|
Что skuull пытается сказать, это что стоит попробовать поместить вызов LogisticsPostalAddress.LogisticsPostalAddressMap::formatAddress(); в метод writing() вашего нового источника данных.
UnitOfWork его должен автоматом подхватить при сохранении записи, и изменения должны по идее попасть в родительскую таблицу. Я, правда, сам не пробовал. |
|
![]() |
#2 |
Участник
|
Цитата:
Сообщение от kashperuk
![]() Что skuull пытается сказать, это что стоит попробовать поместить вызов LogisticsPostalAddress.LogisticsPostalAddressMap::formatAddress(); в метод writing() вашего нового источника данных.
UnitOfWork его должен автоматом подхватить при сохранении записи, и изменения должны по идее попасть в родительскую таблицу. Я, правда, сам не пробовал. ![]() |
|
![]() |
#3 |
Участник
|
Спасибо за советы, но это не поможет для моего случая.
Попытаюсь объяснить подробнее: Есть стандартная форма LogisticPostalAddress, на которой выставлено св-во UnitOfWork. На форме есть стандартная таблица LogisticsPostalAddress. Я сделал таблицу для хранения различных доп. полей для адреса, назовем ее, MyLogisticsPostalAddressExt. Я присоединяю эту таблицу на форме к таблице LogisticsPostalAddress по InnerJoin. Теперь описание моей проблемы: 1. Если я вызову форму и внесу изменения в поля таблицы LogisticsPostalAddress и в поля моей таблицы MyLogisticsPostalAddressExt, и потом закрою форму при помощи крестика, то форма поймет что на таблице datasource LogisticsPostalAddress произошли изменения и вызовет для него writing и written. Тут все ОК. 2. Теперь если я вызову форму и внесу изменения только в поля моей таблицы MyLogisticsPostalAddressExt и закрою форму крестиком, то на datasource MyLogisticsPostalAddressExtвызовется writing и written, а на datasource LogisticsPostalAddress writing и written не вызываются. Т.е. форма не понимает что данные в LogisticsPostalAddress поменялись. Хотя я вызываю LogisticsPostalAddress.LogisticsPostalAddressMap::formatAddress() в MyLogisticsPostalAddressExt_ds.written(). Т.е. фактически меняю значение поля LogisticsPostalAddress.Address. Но так как эти изменения происходят с помощью программной логики, то форма не понимает что данные в datasource LogisticsPostalAddress изменились и не вызывает для него writing и written. Мой вопрос: какое св-во выставить на datasource, какой метод вызвать из программной логики чтобы "сказать" что данные в datasource поменялись и чтобы при закрытии формы "крестом" на этом datasource вызвались writing и written? В 2009 я бы просто вызвал LogisticsPostalAddress_ds.write() и все. А теперь как? Смотрел метод _ds.forceWrite() - но он работает только при создании новой записи, для уже существующей не работает. Спасибо за внимание ![]() |
|
![]() |
#4 |
Участник
|
Еще дополнение:
данная проблема возникает только при закрытии формы "крестом" Если я меняю значения полей только в таблице MyLogisticsPostalAddressExt и потом вызываю сохранение записи на форме с помощью Ctrl+S, то вызывается сохранение и на родительской LogisticsPostalAddress и на дочерней MyLogisticsPostalAddressExt. Если же делаю то же самое - меняю значения полей только в таблице MyLogisticsPostalAddressExt, но закрываю форму "крестом", то вызывает только сохранение на дочерней MyLogisticsPostalAddressExt, а на родительской LogisticsPostalAddress сохранение не вызывается. |
|
Теги |
forcewrite |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|