![]() |
#1 |
Участник
|
Банальная вроде бы задача, но я чего-то не могу разобраться.
Существует несколько карточных форм (фильтруют записи по значению одного поля) и табличная форма, ссылающиеся на одну и ту же таблицу. Задача на карточных формах сделать кнопку вызова табличной формы (чтобы в табличной форме при этом применялся такой же фильтр). Ну и RunFormOnRec соответственно тоже. Ну это не сложно - просто ставишь Run Form и указываешь RunFormView с такими же значениями как и в картотечной форме. НО нужно еще на табличной форме сделать меню с фильтрами. Делаю фильтры с помощью SETVIEW. Но у мнея складываеца такое впечатление, что SETVIEW фильтрует записи таблицы, а в то же время сама табличная форма продолжает фильтровать записи для отображения с теми параметрами, что были указаны в RunFormView при ее вызове. Чтобы это обойти стал делать по другому: RunFormView в картотечных формах не заполнять, а этот же фильтр ставить в OnAfterGetCurrRecord ориентируясь на значение поля, в текущей записи, т.к. она соответствует записи в карточной форме. Фильтры взаимоисключающие. И получается следущее. Вызываю табличную форму из первой карточной - все отлично. Закрываем ее, но фильтр то на источнике данных остается. ( ![]() Обидно. Так долго писал, грамотно излагая. Как, все таки, верно говорится: "Правильно сформулированный вопрос уже содержит 80% ответа." |
|
![]() |
#2 |
Участник
|
Рановато я обрадовался
![]() Теперь другая проблема с формами. Форма кадровые приказы и в ней сабформа приказ на прием к примеру. Надо чтобы при вводе фамилии она заносилась в название приказа. Пишу следущее в TextBox OnAfterValidate сабформы, который содержит фамилию: Код: PersOrderHeader.GET("Order No."); PersOrderHeader.Name:='Прием '+"Last Name"; PersOrderHeader.MODIFY; Если я пишу так: Код: PersOrderHeader.GET('ПРИМ070016'); //взял для отладки номер конкретного приказа PersOrderHeader.Name:='Прием '+"Last Name"; PersOrderHeader.MODIFY; Подскажите как надо правильно делать? |
|
![]() |
#3 |
Участник
|
Форма не знает, что ей нужен UPDATE;
|
|
![]() |
#4 |
Участник
|
можно сделать так:
объявить переменную, такого же типа, как Rec, назовем ее NewRec; NewRec.reset(); NewRec.filtergroup(2); устанавливаем фильтры NewRec.filtergroup(0); form.run(0, NewRec); |
|
![]() |
#5 |
Участник
|
Не лазил в эту форму, но могу предположить, что breakpoint на строку PersOrderHeader.GET("Order No."); поможет - посмотрите перед гетом чему равно "Order No.".
Могу предположить, что имя вносите до вставки самой строки (в сабформе) (при DelayedInsert=TRUE например) |
|
![]() |
#6 |
Участник
|
2 randrews
Нет в сабформе я пробовал менять в уже введенных строчках - в таблицу пишется а на контроле главной формы не отображается. как вот это победить? |
|
![]() |
#7 |
Участник
|
Никак. Из сабформы основную форму обновить нельзя
![]() ![]()
__________________
Должен остаться только один. |
|
![]() |
#8 |
Участник
|
А может можно както повесить UPDATE на сочетание горячих клавишь, а из сабформы както его сэмулировать?
Еще какая-то странность переименовал дал одной кнопке Name вместо номера и теперь навижн ругаеца при вызове формы "Форма не распознает элемент 1000000060", что это такое? |
|
![]() |
#9 |
Участник
|
У какого-то элемента, возможно сво-во ParentControl ссылается на этот номер. Выгрузите объект в TXT - поищите по "1000000060", где эта цифра используеится
|
|
![]() |
#10 |
Участник
|
Проверил - не ссылается.
Странно вообще. Компилируется нормально, а вот при вызове формы ругается. Причем я переименовал только 1 кнопку, которую сам до этого же и добавил. Просто сегодня мне стало надо делать ее невидимой в некоторые моменты и я дал ей имя чтоб к ней обращаться из кода. Теперь если я у нее имя удаляю и ставится номер который был по умолчанию. То при запуске формы навижн всерно ругается только на слдеующий контрол, если у него тож удаляю имя, то еще на следующий... Что происходит то вообще? Не навижн, а сплошные глюки :/ |
|
![]() |
#11 |
Участник
|
Помогло только следующее: Импортировал рабочий вариант формы, заново добавил туда кнопки, сразу же их переименвал и потом написал их триггеры. Теперь все заработало.
Видимо когда переименовываешь контрол, у которого уже описаны некторые тригееры, компилятор Навижена компилит какую-то ерунду, несмотря на то что в исходниках все правильно. |
|