Поиск в родительской таблице с флажками (Oracle Forms Builder)

Где я мог найти информацию об этом.

а) мне нужно выбрать, в каком столбце выполняется поиск

б) Выберите, какие данные будут отображаться с флажками

c) Если выбранный столбец (в котором вы выполняете поиск) является столбцом первичного ключа, то в форме также будут отображаться флажки дочерней таблицы, которые, если они отмечены, будут отображать столбцы вместе с проверенными столбцами родительской таблицы.

Столы:

CREATE TABLE CHAMPIONS (
  CNAME VARCHAR2(15) NOT NULL, 
  PRICELEVEL NUMBER(1) NOT NULL, 
  ROLE VARCHAR2(10) NOT NULL,
  HPLEVEL NUMBER(2) NOT NULL, 
  ATKLEVEL NUMBER(2) NOT NULL,
  MAGICLEVEL NUMBER(2) NOT NULL,
  DIFFLEVEL NUMBER(2) NOT NULL
);


CREATE TABLE SKINS (
  SNAME VARCHAR2(20) NOT NULL,
  CNAME VARCHAR2(15) NOT NULL,
  PRICELEVEL NUMBER(1) NOT NULL);

ALTER TABLE Champions ADD CONSTRAINT pk_Champions PRIMARY KEY (CNAME);

ALTER TABLE Skins ADD CONSTRAINT fk_Skins FOREIGN KEY (CNAME) REFERENCES champions(CNAME); 

Мне все равно, как это реализовано, так как я не знаю, как это возможно. Поскольку это всего лишь отношения 1-1, может сработать какая-то маскировка.

Форма, которую я хотел бы

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


person Donatas BartkenasLast Name    schedule 30.11.2012    source источник
comment
Вы хотите динамически создавать флажки со столбцами (имя столбцов?) данной таблицы?   -  person    schedule 01.12.2012
comment
обновил вопрос с дополнительной информацией   -  person Donatas BartkenasLast Name    schedule 01.12.2012
comment
Мне все еще не ясно, какой вид вы хотите сделать. Скин существует только для одного чемпиона?   -  person    schedule 01.12.2012
comment
добавил, как я хочу, чтобы это выглядело. Не обязательно быть точным, если конструктор форм на это не способен.   -  person Donatas BartkenasLast Name    schedule 02.12.2012
comment
Есть 23 разных чемпиона. Каждый из них может иметь от 0 до x количества скинов в дочерней таблице. Поэтому, если вы выполните поиск в столбце cname с помощью AHRI, вы получите информацию о ней из родительской таблицы, а также список всех ее скинов и ценовых уровней скинов.   -  person Donatas BartkenasLast Name    schedule 03.12.2012


Ответы (1)


Если вы не хотите повторять отображаемые данные чемпиона, создайте два отдельных блока базы данных и добавьте связь между ними.

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

Ваши параметры поиска будут не в базе данных. Когда вы нажмете кнопку поиска, вам нужно будет изменить default_where блоков, добавив искомое значение в соответствии с полем. Для этого вам нужно будет добавить триггер pre-query. Что-то вроде:

триггер кнопки поиска

begin
  go_block('champions_block');
  execute_query; -- this triggers pre-query of champions_block
end;

запустить предварительный запрос

if :search.search_text is not null then
  -- this changes the where of your block
  set_block_property('champions_block',default_where, 'cname like %'||:search.search_text||'%');  
  --
else
  -- remove previous where
  set_block_property('champions_block',default_where, '');
end if;

Отображение/скрытие полей более сложное, вам нужно будет показать/скрыть элементы, используя:

set_item_property('name_of_block.name_of_item', visible, property_true); -- false to hide

А также нужно будет настроить положение остальных полей:

set_item_property('name_of_block.name_of_item', position, pos_x, pos_y);
person Community    schedule 03.12.2012