使用复选框在父表中搜索 (Oracle Forms Builder)

Posted

技术标签:

【中文标题】使用复选框在父表中搜索 (Oracle Forms Builder)【英文标题】:Searching in the parent table with checkboxes (Oracle Forms Builder) 【发布时间】:2012-11-30 20:30:03 【问题描述】:

我在哪里可以找到这方面的任何信息。

a)我需要选择要搜索的列

b)用复选框选择要显示的数据

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); 

我并不关心这是如何实现的,因为我不知道哪种方式可行。由于这只是一对一的关系,因此某种隐藏可能会起作用。

如果按下的按钮是 cname(主键),第一个结果表当然只有一行,而第二个结果表将由与所选主键关联的数据填充。如果按下任何其他按钮,则甚至不会显示另一个表,但是第一个表可能会显示多行。结果中显示的列取决于复选框

【问题讨论】:

您想动态创建带有给定表的列(列名?)的复选框? 用更多信息更新了问题 我仍然不清楚你想做什么视图。皮肤只为一个英雄而存在? 添加了我想要的外观。如果表单构建器不具备此功能,则不必精确 有23个不同的冠军。它们中的每一个都可以在子表中拥有 0 到 x 个皮肤。因此,如果您使用“AHRI”在 cname 列中搜索,您会从父表中获得有关她的信息,并获得她所有皮肤和皮肤价格级别的列表 【参考方案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);

【讨论】:

以上是关于使用复选框在父表中搜索 (Oracle Forms Builder)的主要内容,如果未能解决你的问题,请参考以下文章

在父表视图的同级详细视图之间导航

Oracle 最佳实践使用父表中的值更新表中的 5000 万个子行

Oracle表中添加外键约束

Oracle表中添加外键约束

为啥嵌套表在父表之外呈现?

Sequelize:急切加载和排序(在父表上)