Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Одноблочная форма которая вместо FK отображает наименование из справочника  [new]
Павел малый
Member

Откуда: Екатеринбург
Сообщений: 317
Доброго времени суток!

Нужно сделать форму для заполнения одного-единственного, добавленого в таблицу пустого поля . Все поля формы, кроме добавленного нужны только для ориентировки (изменены не будут)
Большинство полей в этой таблице содержат ссылки (FK) на Primary Key к справочным таблицам. Хотелось бы иметь одноблочную форму,
которая вместо FK отображает наименование.
Подскажите плс,
как заставить поле отобразить это реальное значение ,
Например "Россия" вместо ID=111?
необходимо, чтобы после выполнения запроса в форме справочные поля были ненавигируемы , те чтобы активными были только поля одной колонки ,
которая заполняется

В Reports Builder'e есть вычисляемые колонки , а как в Forms?

Благодарю!
22 июн 06, 20:23    [2804136]     Ответить | Цитировать Сообщить модератору
 Re: Одноблочная форма которая вместо FK отображает наименование из справочника  [new]
ASNexus
Member

Откуда: Tula
Сообщений: 163
Как вариант: поле ID (кот. содержит значение ключа) делаем невидимым (Physical.Canvas = Null), а в его триггере POST-CHANGE прописываем заполнение нужного поля (NAME, например: Select Name into :Block.Name from ref_table where ref_id=:ID) нужным значением. При этом NAME должно быть Database.Database Item = No и, если навигация по нему не нужна, то Item Type = Display Item
22 июн 06, 20:36    [2804171]     Ответить | Цитировать Сообщить модератору
 Re: Одноблочная форма которая вместо FK отображает наименование из справочника  [new]
ASNexus
Member

Откуда: Tula
Сообщений: 163
Себе же в догонку: таким образом можно в одном триггере POST-CHANGE одного поля таблицы заполнять любые "вычисляемые" поля (кот. Database Item = No)
22 июн 06, 20:39    [2804176]     Ответить | Цитировать Сообщить модератору
 Re: Одноблочная форма которая вместо FK отображает наименование из справочника  [new]
from_clause_query
Guest
1. Блок постой на from_clause_query и напиши запрос
2. Укажи конкретную твою таблицу для изминения
3. Укажи апдейтить только изменяемые поля

PS:
В формсе есть тоже вычисляемые поля,
а также есть ловы и листитемы...
22 июн 06, 20:39    [2804177]     Ответить | Цитировать Сообщить модератору
 Re: Одноблочная форма которая вместо FK отображает наименование из справочника  [new]
Павел малый
Member

Откуда: Екатеринбург
Сообщений: 317
to :ASNexus

в этой версии Forms нет триггера который Вы назвали на элементе блока
22 июн 06, 20:47    [2804194]     Ответить | Цитировать Сообщить модератору
 Re: Одноблочная форма которая вместо FK отображает наименование из справочника  [new]
ASNexus
Member

Откуда: Tula
Сообщений: 163
Павел малый
to :ASNexus

в этой версии Forms нет триггера который Вы назвали на элементе блока


А какая версия имеется в виду?
Я привел пример для Forms 6i (Forms [32 Bit] Version 6.0.8.25.2 (Production))
22 июн 06, 20:52    [2804205]     Ответить | Цитировать Сообщить модератору
 Re: Одноблочная форма которая вместо FK отображает наименование из справочника  [new]
Павел малый
Member

Откуда: Екатеринбург
Сообщений: 317
Forms [32 Bit] Version 4.5.7.1.6 (Production)
Oracle9i Enterprise Edition Release 9.2.0.7.0 - Production
22 июн 06, 20:54    [2804207]     Ответить | Цитировать Сообщить модератору
 Re: Одноблочная форма которая вместо FK отображает наименование из справочника  [new]
ASNexus
Member

Откуда: Tula
Сообщений: 163
Опять же себе в догонку: этого триггреа (POST-CHANGE) нет в списке Smart triggers, точнее в меню Smart Triggers надо выбрать Others, а там уже выбрать POST-CHANGE
22 июн 06, 20:55    [2804209]     Ответить | Цитировать Сообщить модератору
 Re: Одноблочная форма которая вместо FK отображает наименование из справочника  [new]
ASNexus
Member

Откуда: Tula
Сообщений: 163
про 4.5 сказать не могу - не помню и посмотреть уже негде :(
22 июн 06, 20:57    [2804214]     Ответить | Цитировать Сообщить модератору
 Re: Одноблочная форма которая вместо FK отображает наименование из справочника  [new]
ASNexus
Member

Откуда: Tula
Сообщений: 163
Еще как вариант для вычисляемого поля можно задать Calculation.Calculation Mode=Formula и в качестве Formula написать выражение, вычисляющее значение (можно использовать хранимые функции). Но это опять же для Forms 6
22 июн 06, 21:05    [2804217]     Ответить | Цитировать Сообщить модератору
 Re: Одноблочная форма которая вместо FK отображает наименование из справочника  [new]
Stax.
Guest
1 упдатабле вью, если формс поймет
2 по старинке в триггере POST-QUERY
select dname into :n from dept where deptno=:deptno;
.....
stax
22 июн 06, 21:23    [2804255]     Ответить | Цитировать Сообщить модератору
 Re: Одноблочная форма которая вместо FK отображает наименование из справочника  [new]
Павел малый
Member

Откуда: Екатеринбург
Сообщений: 317
Спасибо !
Cделал через POST-Query блока .
Повесил на поле LOV, помогите плс теперь сделать его доступным для ввода
критерия запроса .
23 июн 06, 07:38    [2804619]     Ответить | Цитировать Сообщить модератору
 Re: Одноблочная форма которая вместо FK отображает наименование из справочника  [new]
Mr_Frost
Member

Откуда: Екатеринбург
Сообщений: 468
Павел малый
в этой версии Forms нет триггера который Вы назвали на элементе блока

В Forms 4.5 есть триггер POST-CHANGE уровня блока, вы его плохо искали.
А с POST-QUERY осторожнее - после его выполнения строка будет помечена как CHANGED.
23 июн 06, 09:36    [2804826]     Ответить | Цитировать Сообщить модератору
 Re: Одноблочная форма которая вместо FK отображает наименование из справочника  [new]
Stax.
Guest
Mr_Frost
Павел малый
в этой версии Forms нет триггера который Вы назвали на элементе блока

В Forms 4.5 есть триггер POST-CHANGE уровня блока, вы его плохо искали.
А с POST-QUERY осторожнее - после его выполнения строка будет помечена как CHANGED.

почему?
не должен сбросить query, поля наименование небазовые
.....
stax
23 июн 06, 09:55    [2804903]     Ответить | Цитировать Сообщить модератору
 Re: Одноблочная форма которая вместо FK отображает наименование из справочника  [new]
Stax.
Guest
Павел малый
Спасибо !
Cделал через POST-Query блока .
Повесил на поле LOV, помогите плс теперь сделать его доступным для ввода
критерия запроса .

1) у Вас расшифровка для неизменяемого поля, или нового?
2) поиск хотите организовоть по коду или наименованию?
.....
stax
23 июн 06, 09:59    [2804919]     Ответить | Цитировать Сообщить модератору
 Re: Одноблочная форма которая вместо FK отображает наименование из справочника  [new]
Mr_Frost
Member

Откуда: Екатеринбург
Сообщений: 468
Stax.
почему? не должен сбросить query, поля наименование небазовые
stax

А вы проверьте...
Даже Designer, когда генерит форму, в POST-QUERY после заполнения небазовых полей делает
SET_RECORD_PROPERTY(:SYSTEM.TRIGGER_RECORD, block_name, STATUS , QUERY_STATUS);
23 июн 06, 10:16    [2805005]     Ответить | Цитировать Сообщить модератору
 Re: Одноблочная форма которая вместо FK отображает наименование из справочника  [new]
Tolmachov Dmitiry
Member

Откуда: Москва, Пенза
Сообщений: 1520
Mr_Frost вы ошибаетесь! Если поле не является полем базы данных, а по условию задачи оно таковым именно и является, то работа триггера POST-CHANGE, устанавливающего значение данного поля никаким образом статус записи не изменит. Если же вы устнавливаете значение поля БД, то, естественно, статус записи измениться. Это и к гадалке не ходи...
23 июн 06, 11:27    [2805425]     Ответить | Цитировать Сообщить модератору
 Re: Одноблочная форма которая вместо FK отображает наименование из справочника  [new]
Mr_Frost
Member

Откуда: Екатеринбург
Сообщений: 468
Tolmachov Dmitiry вы ошибаетесь! (C)

Из хелпа Forms:
When you use a Post-Query trigger to SELECT non-base table values into control items, Form Builder marks each record as CHANGED, and so fires the When-Validate-Item trigger by default.  You can avoid the execution of the When-Validate-Item trigger by explicitly setting the Status property of each record to QUERY in the Post-Query trigger.  To set record status programmatically, use SET_RECORD_PROPERTY.

Насколько я понимаю Forms, под "control items" в нем понимаются именно небазовые поля, базовые же в хелпе фигурируют как "database items".
23 июн 06, 12:03    [2805711]     Ответить | Цитировать Сообщить модератору
 Re: Одноблочная форма которая вместо FK отображает наименование из справочника  [new]
Mr_Frost
Member

Откуда: Екатеринбург
Сообщений: 468
Дмитрий, речь не о POST-CHANGE, про него я не говорил. Я про PRE-QUERY!
А с POST-QUERY осторожнее - после его выполнения строка будет помечена как CHANGED
23 июн 06, 12:06    [2805741]     Ответить | Цитировать Сообщить модератору
 Re: Одноблочная форма которая вместо FK отображает наименование из справочника  [new]
Mr_Frost
Member

Откуда: Екатеринбург
Сообщений: 468
блин.. не про pre, а по post-query разумеется..
что вы меня путаете... :-)
23 июн 06, 12:15    [2805801]     Ответить | Цитировать Сообщить модератору
 Re: Одноблочная форма которая вместо FK отображает наименование из справочника  [new]
Stax.
Guest
Mr_Frost
А вы проверьте...

POST-QUERY
  select dname into :n from dept where deptno=:deptno;
WHEN-NEW-RECORD-INSTANCE
 message(:SYSTEM.RECORD_STATUS||'!',ACKNOWLEDGE);
 message(:SYSTEM.RECORD_STATUS,NO_ACKNOWLEDGE);


К сообщению приложен файл. Размер - 0Kb
23 июн 06, 12:58    [2806062]     Ответить | Цитировать Сообщить модератору
 Re: Одноблочная форма которая вместо FK отображает наименование из справочника  [new]
Tolmachov Dmitiry
Member

Откуда: Москва, Пенза
Сообщений: 1520
Да не важно - POST-QUERY, POST-CHANGE. Если вы в них не меняете значения database item, то и статус записи не меняется и остается QUERY. СМ. пример господина Stax'a. Было бы странно изменять статус записи от срабатывания этих триггеров, которые реагируют на события "Запрос" и "Заполнение поля" соответсвенно.
23 июн 06, 13:09    [2806126]     Ответить | Цитировать Сообщить модератору
 Re: Одноблочная форма которая вместо FK отображает наименование из справочника  [new]
Stax.
Guest
Tolmachov Dmitiry
Да не важно - POST-QUERY, POST-CHANGE. Если вы в них не меняете значения database item, то и статус записи не меняется и остается QUERY. СМ. пример господина Stax'a. Было бы странно изменять статус записи от срабатывания этих триггеров, которые реагируют на события "Запрос" и "Заполнение поля" соответсвенно.


если нет LOV то я так и заполнял в POST-CHANGE,
но статус записи конечно поменяется ведь код (базовое поле) поменяли

мож я неправильно поступал,
но эти все расшифровки FK я делал в POST-QUERY
(когда не было вью)

почти все формы имели этот недостаток

зы
вот так нечаянно и господином стал
......
stax
23 июн 06, 13:31    [2806281]     Ответить | Цитировать Сообщить модератору
 Re: Одноблочная форма которая вместо FK отображает наименование из справочника  [new]
Mr_Frost
Member

Откуда: Екатеринбург
Сообщений: 468
To Stax: действительно, я тоже не могу повторить, хотя видел собственными глазами, когда post-query select'ом заполнял небазовое поле и запись становилась changed. Сейчас начинаю думать, что все-таки не сам по себе post-query делал запись changed, видимо на этом поле был When-Validate-Item, который изменял базовое поле, чего не случилось бы, используй я post-change.
23 июн 06, 13:38    [2806334]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить