Oracle 在plsql中生成组子组下拉列表
我有一个表,其中包含ID、组名和父组ID。我正在尝试创建两个下拉列表:第一个列表将所有具有父组\u id的组名设置为空,在选择第一个ddl(或仅选择默认值)后,第二个ddl中的值都应具有父组\u id列,以等于第一个选定组的id。到目前为止,我已经用2个poplists创建了数据块,并且在“whennewforminstance”上,我正在填充第一个ddlOracle 在plsql中生成组子组下拉列表,oracle,plsql,oracleforms,Oracle,Plsql,Oracleforms,我有一个表,其中包含ID、组名和父组ID。我正在尝试创建两个下拉列表:第一个列表将所有具有父组\u id的组名设置为空,在选择第一个ddl(或仅选择默认值)后,第二个ddl中的值都应具有父组\u id列,以等于第一个选定组的id。到目前为止,我已经用2个poplists创建了数据块,并且在“whennewforminstance”上,我正在填充第一个ddl DECLARE rg_groups RecordGroup; rg_group_name VARCHAR2(5) := 'GNAME'
DECLARE
rg_groups RecordGroup;
rg_group_name VARCHAR2(5) := 'GNAME';
plist_ID Item := Find_Item(':GROUPS.GROUP_NAME');
nDummy NUMBER;
BEGIN
rg_groups := Find_Group(rg_group_name);
-- Delete any existing Group first
IF NOT Id_Null(rg_groups) THEN
Delete_Group(rg_groups);
END IF;
-- Now create a Record Group using a SQL query
-- Your Query must have a Label and a Value (two Columns)
-- and the data types must match your item type
rg_groups := Create_Group_From_Query(rg_group_name,'SELECT group_name,
to_char(ID) FROM GROUPS WHERE PARENT_GROUP_ID IS NULL');
-- Clear the existing List
Clear_List(plist_ID);
-- Populate the Record Group
nDummy := Populate_Group(rg_groups);
-- Populate the List Item
Populate_List(':GROUPS.GROUP_NAME',rg_groups);
END;
在第一个poplist项的“更改后”触发器上,填充第二个ddl:
DECLARE
rg_groups RecordGroup;
rg_group_name VARCHAR2(5) := 'GPARENT_NAME';
plist_ID Item := Find_Item(':GROUPS.PARENT_GROUP_ID');
nDummy NUMBER;
BEGIN
rg_groups := Find_Group(rg_group_name);
-- Delete any existing Group first
IF NOT Id_Null(rg_groups) THEN
Delete_Group(rg_groups);
END IF;
-- Now create a Record Group using a SQL query
-- Your Query must have a Label and a Value (two Columns)
-- and the data types must match your item type
rg_groups := Create_Group_From_Query(rg_group_name,'SELECT group_name, to_char(ID) FROM GROUPS WHERE PARENT_GROUP_ID = ' || :GROUPS.ID);
-- Clear the existing List
Clear_List(plist_ID);
-- Populate the Record Group
nDummy := Populate_Group(rg_groups);
-- Populate the List Item
Populate_List(':GROUPS.PARENT_GROUP_ID',rg_groups);
END;
然而,我觉得PARENT_GROUP_ID='||:GROUPS.ID的部分是错误的,因为我甚至没有填充ID,我需要从以前的ddl中提取ID,这就是我遇到的问题,我不太明白这在oracle表单中是如何工作的。我希望我能得到一些简单易懂的建议,关于采取哪种方式,谢谢 pop列表通常有两列-显示标签和存储到项目的值 您的第一个pop列表位于
组中。组名称
项显示组名称并存储组ID。这意味着当用户选择一个组时,其id将存储到GROUPS.group\u NAME
,并且您的第二个pop列表中填充了错误的值
只需从GROUPS.GROUP\u NAME
中删除您的第一个pop列表,然后在GROUPS.ID
项上创建它
顺便说一句:当你通过名称引用一个项目时,不要使用冒号
Find_Item(':GROUPS.GROUP_NAME')
是错误的,Find_Item('GROUPS.GROUP_NAME')
是正确的。hm我理解你的意思,但是poplist如何理解我需要显示组名和id值,而不是显示id?这取决于select中的列顺序-第一个是label,第二个问题是,值也是rg\u group\u name
的长度有问题,应该长一点