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

Откуда:
Сообщений: 21
Добрый день, товарищи.
Вопрос достаточно простой. Для начала описание ситуации.
Есть форма. В форме есть блок. В блоке есть 2 элемента, оба имеют тип TEXT ITEM. Первый называется ITEM_ID, хранит числовой идентификатор и не отображается пользователю. Второй называется ITEM_DESC, хранит текстовое описание и отображается пользователю. Для этих 2 элементов настроен один LOV. При выборе значения в нем текстовое присваивается в ITEM_DESC, а числовое в ITEM_ID.
Вроде бы все стандартно и хорошо. НО в момент когда пользователь очищает поле ITEM_DESC от значения и переходит к другим элементам, то поле ITEM_ID сохраняет значение, хотя мне нужно что бы оно тоже очищалось вместе с ITEM_DESC.

Внимание вопрос: Как сделать, что бы при очищении видимого поля ITEM_DESC автоматически очищалось не отображаемое поле ITEM_ID?

P.s. костыль ввиде логики очищения итема в триггере POST_TEXT_ITEM не предлагать. Хотелось бы узнать есть ли стандартный функционал очищения зависимых полей.
25 янв 17, 10:12    [20143039]     Ответить | Цитировать Сообщить модератору
 Re: Обновление итема-идентификатора при очищении текстового поля.  [new]
mRdUKE
Member

Откуда: ТЛТ
Сообщений: 422
QAWSEDRF,

Validate from List => Yes
25 янв 17, 11:32    [20143485]     Ответить | Цитировать Сообщить модератору
 Re: Обновление итема-идентификатора при очищении текстового поля.  [new]
QAWSEDRF
Member

Откуда:
Сообщений: 21
mRdUKE,

выставил для ITEM_ID указанное вами свойство и ничего не поменялось. Это поле остается также заполненным при когда ITEM_DESC очищаешь.
25 янв 17, 18:56    [20146231]     Ответить | Цитировать Сообщить модератору
 Re: Обновление итема-идентификатора при очищении текстового поля.  [new]
OldBoyOdeSu
Member

Откуда: и куда?
Сообщений: 192
QAWSEDRF,

давно не работал с формсами, так что могу ошибаться, но вроде when-validate-item срабатывает при изменении полей.
на блок или ITEM_DESC повесить when-validate-item в нём if(:block.ITEM_DESC is null)then :block.ITEM_ID := '';
26 янв 17, 05:55    [20147360]     Ответить | Цитировать Сообщить модератору
 Re: Обновление итема-идентификатора при очищении текстового поля.  [new]
Jaid
Member

Откуда:
Сообщений: 35
OldBoyOdeSu, это тот же костыль, который просили не предлагать (только вы предлагаете другой триггер использовать), но суть та же. Тоже всегда за-нуливаю в триггере, но думаю должен быть стандартный, более красивый способ.
26 янв 17, 15:27    [20149757]     Ответить | Цитировать Сообщить модератору
 Re: Обновление итема-идентификатора при очищении текстового поля.  [new]
QAWSEDRF
Member

Откуда:
Сообщений: 21
OldBoyOdeSu,

в таком случае проще на ITEM_DESC в триггер POST-TEXT-ITEM навесить эту логику. Но когда таких элементов становится много, то писать для каждого элемента спец триггер "не айс". Вот думаю может есть логика стандартная для таких случаев.
26 янв 17, 15:28    [20149767]     Ответить | Цитировать Сообщить модератору
 Re: Обновление итема-идентификатора при очищении текстового поля.  [new]
mRdUKE
Member

Откуда: ТЛТ
Сообщений: 422
QAWSEDRF
Вроде бы все стандартно и хорошо. НО в момент когда пользователь очищает поле ITEM_DESC от значения и переходит к другим элементам, то поле ITEM_ID сохраняет значение, хотя мне нужно что бы оно тоже очищалось вместе с ITEM_DESC.
Не стандартно, имхо! Для чего Вам нужен "такой" блок

ITEM_IDITEM_DESC
nullnull
-X--X-
?

Validate from List => Yes, как уже указывал выше, для того, чтобы значение было только из списка, и свойство Required => Yes, чтобы поле было обязательно заполнено, иначе - предлагать очистку записи (CLEAR_RECORD, F6); или перед сохранением, проверять блок, очищать запись с пустым значением..
27 янв 17, 07:16    [20151739]     Ответить | Цитировать Сообщить модератору
 Re: Обновление итема-идентификатора при очищении текстового поля.  [new]
QAWSEDRF
Member

Откуда:
Сообщений: 21
mRdUKE,
под "Стандартно" я имел ввиду работу стандартных форм в OeBS, там никакой доп логики нигде не прописывается и зависимые ITEM_ID автоматом очищаются, при очищении ITEM_DESC.

блок нужен для того что бы при последующем сохранении в бд сохранялся ITEM_ID с нулевым значением, а не с заполненным.

Пример ситуации. Пользователь создал запись. Выбрал с помощью LOV значения и автоматом у него заполнились ITEM_ID и ITEM_DESC. Сохранил в БД, при этом в бд естественно передался только ITEM_ID, ITEM_DESC не сохраняется.
Затем заново открыл форму и запросил созданную ранее запись. Она отобразилась. Очищает руками поле ITEM_DESC, сохраняет и думает что у него это поле пустое. При этом в БД передалось старое заполненное значение ITEM_ID, так как ITEM_ID остался заполненным.
Далее возникнет казус, пользователь запросит ранее сохраненную запись, ожидая увидеть пусто в ITEM_DESC, а оно у него будет заполнено, так как ITEM_ID ранее автоматом не очистился и имеет значение.
27 янв 17, 12:05    [20152777]     Ответить | Цитировать Сообщить модератору
 Re: Обновление итема-идентификатора при очищении текстового поля.  [new]
mRdUKE
Member

Откуда: ТЛТ
Сообщений: 422
QAWSEDRF,

С OEBS не знаком; а отображение (только просмотр) и редактирование (вставка/удаление) данных я лично реализую в разных блоках / на разных соотв. вкладках, и в принципе не использую вставку новых данных "строчным" методом (по типу MS Excel).
27 янв 17, 12:25    [20152857]     Ответить | Цитировать Сообщить модератору
 Re: Обновление итема-идентификатора при очищении текстового поля.  [new]
efendi
Member

Откуда:
Сообщений: 94
QAWSEDRF,

Стандартного решения нет.
Несколько вариантов решения данной проблемы вижу и часто их использую (IMHO):

1. Триггеры POST-TEXT-ITEM, PRE-INSERT, PRE-UPDATE, WHEN-VALIDATE-ITEM.
2. Добавить пустую запись в LOV-список. Ручную очистку запретить.
3. Использовать Calculation mode => Formula (нужна функция и дополнительное поле)
4. Добавить кнопку очистки. Ручную очистку запретить.
5. Если записей в списке немного, то использовать List Item - заполнять при запуске формы. Установить свойство Required => No
27 янв 17, 16:19    [20154116]     Ответить | Цитировать Сообщить модератору
 Re: Обновление итема-идентификатора при очищении текстового поля.  [new]
Jaid
Member

Откуда:
Сообщений: 35
efendi,

все это напоминает разные виды костылей)
не, а как стандартные-то формы заналивают поля-идентификаторы? там я таких "танцев-с-бубнами" не припоминаю...
27 янв 17, 16:27    [20154176]     Ответить | Цитировать Сообщить модератору
 Re: Обновление итема-идентификатора при очищении текстового поля.  [new]
OeBS Dev
Guest
QAWSEDRF
под "Стандартно" я имел ввиду работу стандартных форм в OeBS
Раз это OeBS, то тебе надо перечитать Oracle E-Business Suite Developer's Guide раздел про зависимые элементы.
27 янв 17, 16:29    [20154190]     Ответить | Цитировать Сообщить модератору
 Re: Обновление итема-идентификатора при очищении текстового поля.  [new]
efendi
Member

Откуда:
Сообщений: 94
Jaid
efendi,

все это напоминает разные виды костылей)
не, а как стандартные-то формы заналивают поля-идентификаторы? там я таких "танцев-с-бубнами" не припоминаю...


Стандартного решения нет. Визард обычно по 1 варианту формы создает, если не ошибаюсь -не пользуюсь им при создании форм, использую свои заготовки.
29 янв 17, 17:30    [20158817]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Forms Ответить