关于在子表中创建限制性记录。(Oracle Forms Builder)

关于在子表中创建限制性记录。(Oracle Forms Builder),oracle,plsql,oracleforms,Oracle,Plsql,Oracleforms,我创建了一个表单,将记录添加到子表中。但是,我不希望人们能够编辑次键,只能从父项的主键列表中选择它,或者沿着这些行选择它。我怎么能这么做 各表: 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, MAGICLEV

我创建了一个表单,将记录添加到子表中。但是,我不希望人们能够编辑次键,只能从父项的主键列表中选择它,或者沿着这些行选择它。我怎么能这么做

各表:

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

信息太少,无法给出答案,但我可以试一试

您可以在详细信息表中创建
LOV
s,并将该
LOV
从父表主键中删除,此外,您将链接LOV的文本项需要使用与
LOV
s
记录组中相同的查询设置
WHEN-VALIDATE-item
触发器,以便在用户键入而不是使用
LOV
的情况下,您可以验证输入,然后在输入无效的情况下向他们发出警报,并获取数据如果输入的值正确,则主密钥正确

下面是带有LOV按钮的数据块的外观-

下面是数据块中
存储
项上的触发器-


考虑到查询中的主表,您可以对RG进行类似于触发器中的查询的编码。

获取此功能的最简单方法是基于champions.cname创建LOV,并将其附加到item form column skins.cname(如果您不熟悉创建LOV:s,请参阅表单帮助)。然后将item skins.cname的item属性“Validate from list”设置为Yes。这将根据现有的cname值验证所有输入的值。

我会在可能的情况下进行检查,但我可以为您提供所需的所有信息。用更多信息更新了问题。如果你需要更多,告诉我。