Oracle 12.1.3. 呆子如何连接以编程方式填充的2个视图对象?

Oracle 12.1.3. 呆子如何连接以编程方式填充的2个视图对象?,oracle,oracle-ebs,oaf,Oracle,Oracle Ebs,Oaf,我有两个以编程方式填充的视图对象,也就是说,这些对象在查询语句区域中没有SQL查询。有HeaderVO和LinesVO。我的任务是在高级表中显示高级表。这是基于HeaderVO和LinesVO的高级表格。如果使用视图链接,则HeaderVO表将显示数据,而LinesVO表仅显示“未进行搜索”。这是合乎逻辑的,我明白为什么 但是我如何连接这两个表(视图对象)?当VO以编程方式填充时,您可以尝试以编程方式在这些VO之间创建视图链接。您可以使用以下方法进行相同操作: 假设主VO为deptVO,细节V

我有两个以编程方式填充的视图对象,也就是说,这些对象在查询语句区域中没有SQL查询。有HeaderVO和LinesVO。我的任务是在高级表中显示高级表。这是基于HeaderVO和LinesVO的高级表格。如果使用视图链接,则HeaderVO表将显示数据,而LinesVO表仅显示“未进行搜索”。这是合乎逻辑的,我明白为什么


但是我如何连接这两个表(视图对象)?

当VO以编程方式填充时,您可以尝试以编程方式在这些VO之间创建视图链接。您可以使用以下方法进行相同操作:

假设主VO为deptVO,细节VO为empVO

  // Build an attribute array, consisting of deptVO.DeptNum for Master VO
  AttributeDef[] deptAttrs = new AttributeDef[1];
  deptAttrs[0] = deptVO.findAttributeDef("DeptNum");

  // Build an attribute array, consisting of empVO.DeptNum for Detail VO
  AttributeDef[] empAttrs = new Attributedef[1];
  empAttrs[0] = empVO.findAttributeDef("DeptNum");

  ViewLink vl = myAM.createViewLinkBetweenViewObjects("yourVLName",
  "VLAccessor", //accessor name
  deptVO, //master VO
  deptAttrs, //master VO attribute
  empVO, //detail VO
  empAttrs, //detail VO attribute
  null); //association clause

为了在OAF advancedTable组件中具有主-细节关系,必须正确映射细节VO子属性。由于您是以编程方式定义的主VO和子VO,请确保此步骤已完成。您是以声明方式还是以编程方式创建advancedTable

ViewObject voDept = am.createViewObject("MyDeptVO", "package1.DeptView");
    ViewObject voEmp = am.createViewObject("MyEmpVO", "package1.EmpView");

    AttributeDef[] deptLinkAttrs = new AttributeDef[] { voDept.findAttributeDef("Deptno") };
    AttributeDef[] empLinkAttrs = new AttributeDef[] { voEmp.findAttributeDef("Deptno") };

    ViewLink vl = am.createViewLinkFromEntityAssocName("MyDeptEmpLink",
                        "Employees",
                        voDept, deptLinkAttrs,
                        voEmp, empLinkAttrs,
                        null);