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