17.11.2003, 11:44 | #1 |
Участник
|
Обновление субформы при изменении главной формы
У меня есть форма типа "документ" (т.е. главная форма с субформой внутри). При изменении некоторых полей таблицы-источника главной формы, изменяются все подчиненные строки таблицы-источника субформы (все прописано в OnValidate-ах главной таблицы). Изменения происходят, но субформа не обновляется и показывает "старые" данные, пока не встнешь курсором на строку субформы, и то при этом обновляется только одна строка. А хочется видеть изменения сразу. Как этого добиться?
|
|
17.11.2003, 12:46 | #2 |
NavAx
|
1) Пишете в сабформе функцию UpdateForm, в ней одна строчка кода -
CurrForm.UPDATE([SaveRecord]) (при желании можно еще и параметр SaveRecord для UPDATE передавать). А потом в валидейтах Вашей главной формы вызываете CurrForm.SubFormName.FORM.UpdateForm([SaveRecord]); |
|
17.11.2003, 13:09 | #3 |
Участник
|
Спасибо огромное.
Я пробовала такой же вариант, но вешать вызов CurrForm.SubFormName.FORM.UpdateForm([SaveRecord]); на события всей главной формы - почему то либо не работает, либо ругается. |
|
17.11.2003, 17:10 | #4 |
Участник
|
Уважаемая Nataly! Если вдруг найдете решение этом проблемы киньте пжалуйста мне
|
|
18.11.2003, 15:33 | #5 |
NavAx
|
Уважаемая Nataly, я так и не понял, в чем Ваша проблема?
Почему нельзя повесить апдейт сабформы на тригерры OnAfterValidate() тех полей формы, изменение которых(или изменения, с ними связанные) Вы хотите синхронно наблюдать в сабформе? |
|
19.11.2003, 12:04 | #6 |
Участник
|
Yoil, спасибо! Ваш вариант сразу подошел - у меня все работет.
Ar_raven, здесь же все написано! |
|
19.11.2003, 14:39 | #7 |
Участник
|
Я решил эту проблему несколько другим путем.
Nataly, Вы писали, что у вас происходят обновления полей в сабформе только после установки на это поле, т.е. для того чтобы, допустим, в сабформе обновилось поле некой таблицы, Вам приходилось кликать на нее мышкой. Т.е. вы просто ее активизировали. Соответственно если активизировать сабформу после обновления данных, то она у нас полностью обновиться, а потом можно вернуться обратно на нашу главную форму, т.е.: CurrForm.SubFormName.ACTIVATE; CurrForm.FormControlName.ACTIVATE; Да, и возможно придется в тригере сабформы на активизацию написать: CurrForm.UPDATE; (но у меня и без этого работает) Вот и все, в двух строчках ... |
|
04.05.2009, 14:29 | #8 |
Участник
|
Другое решение
Решил вроде как попроще.
Если на форме есть датасорс - вешаем на его ExecuteQuery - всегда вызывается при обновлении родительской формы. Если на форме нет датасорса - создаем, например, от CompanyInfo, и вешаем на его ExecuteQuery. Модификация родителя не требуется. По хорошему, нужно вешать на updateDesign какой-нибудь, чтобы без DS, если его нет, но не нашел, на какой метод вешать. |
|
04.05.2009, 15:35 | #9 |
MCTS
|
Это про Navision тема. Таких понятий как ExecuteQuery или updateDesign в NAV лично я не знаю.
|
|
04.05.2009, 15:37 | #10 |
Участник
|
))))))) искал, не нашел, сделал сам - запостил ))))
а на тему даже не посмотрел ))) |
|