|
![]() |
#1 |
Участник
|
Цитата:
// rForm описан в форме2 так же как и _tmpTable rForm = PSNormsParam_tmpF_DS.cursor(); // курсор с формы2 _tmpTable.data(rForm); // копирование _tmpTable.update(); Как это объяснить с точки зрения теории ? Вроде после TmpTable.setTmpData(_tmpTable); работа в ФОРМА2 должна была идти с буфером, полученным из формы 1 ? |
|
![]() |
#2 |
Administrator
|
Одно из предположений - что это все-таки РАЗНЫЕ буфера.
К примеру - мы знаем - что если изменить поле постоянной таблицы в коде, то курсор на датасорсе придется перечитывать (если конечно мы меняем не сам курсор) путем вызова методов executeQuery/research/reread. Это и понятно - таблица на сервере, а форма на клиенте. Но если в обратную сторону для постоянных таблиц буфер датасорса обновляет постоянную таблицу (т.к. у нее нет своего буфера), то тут обновления не происходит. Впрочем - это лишь попытка предположить...
__________________
Возможно сделать все. Вопрос времени |
|
![]() |
#3 |
Участник
|
Там еще интересней. Пока я не включил отражение изменений на буфер _tmpTable с формы1(вызывающей) я их там и не видел. Но при входе на форму2 второй раз, все изменения сделанные там при первом входе сохранялись. Т.е. _tmpTable не изменяется а буфер TMPTable в форме2 сохраняет все изменения от вызова к вызову...при работе с формой1.
|
|
![]() |
#4 |
Участник
|
Вы точно уверены, что проблема в передаче буфера, а не в прорисовке изменений? Я попытался воспроизвести ваши действия. Всё передаётся. попробуйте для проверки програмно почитать курсор и вывести прочитанные данные в инфолог.
|
|
![]() |
#5 |
Участник
|
Точно. Выдавал только через Infolog, проверял и на форме2 в методе close и потом по возврату на форме1. Данные в оригинале не изменяются.
|
|