КАК ВСТАВИТЬ ЗАПИСЬ В БЛОК ДАННЫХ НА ФОРМЫ ORACLE

У меня есть форма оракула, которая содержит блок данных B_ITEM, который ссылается на таблицу базы данных master_item. Пользователь вводит два товара в один счет вручную в блоке данных, и на основании определенных условий мне нужно добавить груз в тот же блок B_ITEM автоматически. не могли бы вы подсказать, как вставить данные в блок данных. (Примечание: я не хочу вставлять непосредственно в таблицу, на которую он ссылается)

Шаг 1. Создан холст в блоке даты B_ITEM, где пользователь может вводить данные. Блок
содержит элемент поля из master_item таблицы.

Шаг 2 Допустим, пользователь ввел два элемента на холсте, который ссылается на B_ITEM, и нажал кнопку "ОК".

Шаг 3 Таким образом, наряду с двумя элементами, еще один элемент должен быть вставлен в блок B_ITEM, и он должен отображаться на холсте в 3-й строке.

введите описание изображения здесь
На изображении выше я показал пример одного элемента, поэтому, как только пользователь нажмет кнопку "ОК", должен быть добавлен второй элемент на основе таблицы настроек.

MASTER_FREIGHT_LINK
ПЕРЕВОЗКА ТОВАРА_ПОЗИЦИЯ
101396306 101396307

Таким образом, грузовой товар на холсте должен быть добавлен во вторую строку, как только пользователь нажмет кнопку OK, введя ITEM-101396306.


person Pratsam    schedule 29.01.2019    source источник


Ответы (2)


Я не совсем понимаю, что у вас есть, так что - дайте подумать вслух.

  • в базе данных есть таблица с именем MASTER_ITEM
  • вы создали форму, блок B_ITEM которой основан на таблице MASTER_ITEM
  • блок данных содержит некоторые элементы, которые, я полагаю, являются элементами базы данных (которые принадлежат таблице MASTER_ITEM)
  • вы вводите некоторые данные в эти элементы
  • на основе их значений (т. е. определенного условия) вы хотите заполнить FREIGHT_ITEM, который находится в том же блоке, но не является элементом базы данных. Это правильно?

Если это так,

  • создать FREIGHT_ITEM (есть несколько способов сделать это; простой — использовать кнопку + на вертикальной панели инструментов или скопировать/вставить один из существующих элементов и изменить его свойства)
  • создайте триггер WHEN-VALIDATE-ITEM для элементов, которые должны решить, какое значение следует поместить в FREIGHT_ITEM. Поместите упомянутое вами условие в код триггера и заполните значение FREIGHT_ITEM, например.

    if :b_item.item1 > 100 and 
       :b_item.item2 = 'A' 
    then
       :b_item.freight_item := 42;
    end if;
    

Теперь, как вы сказали, что не хотите хранить это значение в базе данных напрямую (что означает, что это не элемент базы данных), вам придется сделать это вручную, создав дополнительные ON-INSERT и/или PRE- INSERT и/или PRE-UPDATE триггер, который сделает это как

update master_item i set
  i.freight_item = :b_item.freight_item
  where i.some_id = :b_item.some_id;    
person Littlefoot    schedule 29.01.2019
comment
Блок данных не содержит никакого значения. На основе пользовательского ввода на холсте (который представляет собой не что иное, как блок данных B_ITEM) будет заполнено MASTER_ITEM. Но вместе с пользовательским вводом мне нужно добавить еще один грузовой элемент в тот же блок. Отдельного столбца truck_item нет. Это еще один пункт (с точки зрения бизнеса, его фрахт_пункт, т.е. стоимость фрахта этого счета) - person Pratsam; 29.01.2019
comment
Итак, когда вы запускаете форму, она пуста. Затем пользователь вводит значение в некоторый элемент (вы ничего не вводите в холст, это просто фон), принадлежащий блоку данных B_ITEM. Тогда что? Вы сказали, что на основе пользовательского ввода что-то собирается заполнить таблицу в базе данных (имя таблицы — MASTER_ITEM). С какими ценностями? Более того, в этом же блоке нужно добавить грузовую позицию — что это значит? Вы не можете просто добавить элемент (если вы хотите создать его динамически) — он должен существовать в этом блоке. Если возможно, опишите пошагово, что вы делаете. - person Littlefoot; 29.01.2019
comment
Сделайте это (описание), отредактировав исходное сообщение, которое вы разместили; не помещайте все в комментарий, так как это может быть трудно читать и следовать. Также прикрепите скриншот формы, может поможет. - person Littlefoot; 29.01.2019
comment
Аналогичный вопрос опубликован, где вы дали некоторый ответ. Не могли бы вы уточнить? stackoverflow .com/questions/50854199/ - person Pratsam; 30.01.2019
comment
Я сказал все, что имел в виду, основываясь на имеющейся у меня информации. Это вы должны разрабатывать, а не я. - person Littlefoot; 30.01.2019

Триггер ON-INSERT можно использовать для переопределения механизма вставки форм оракула. Напишите в триггере on-insert необходимые операторы вставки, которые могут вставлять данные в любую таблицу.

person DesignerAnalyst    schedule 29.01.2019