Displaying a Master with two detail view objects

Hi,
I have a situation where I need to relate a Master view object to two Detail view objects. Currently I am doing the lookup manually (using viewcriteria!) but I would much rather have the framework handle this. Does anyone know of a way to A: Link two details to one master and B: Display them on the same page.
I am using Jdeveloper 9.0.3.3 (1205) and currently have a straight BC4J/JSP application with no struts or UIX.
Thank you in advance for any help you can provide

If I understand you correctly. You should just have to create two separate viewLinks. Add the datasource tags for the master and the two views via the viewlinks. Then use a rowKey to get the correct master.
Hope that helps!

Similar Messages

  • Creating a Master with Two Detail report style

    In a Group-Above report data model, how does one add a 2nd detail group appearing at the same hierarchial level as the 1st group?
    The report already exists with MASTER and detailA. I need to add detailB and tie it to MASTER just like detailA.
    |MASTER|
    |detailA||detailB|
    \-------/\-------/

    Amjad,
    Thanks for the reply. My question relates to your suggestion #1: How does one create detailB in the data model?
    The only thing I have been able to do is to create a 2nd query linked to the 1st query. This makes the data model look like it has two masters each with one detail. What I want is a single MASTER with two details.
    Are you suggesting that the only way to accomplish this is by having two queries, one linked to the other, as in the crude rendering shown below?
    |MASTER1||MASTER2|
    |DETAIL1||DETAIL2|
    The above would be displayed in the data model as follows:
    |__Q_1___||__Q_2___|
    |G_DETAIL1||G_DETAIL2|
    \----------------/\----------------/

  • Issue - Master with two Details

    Hi,
    I have three VO's, the first one VO1 is the master with two details VO2 & VO3.
    Can I use ad advanced table with Master- Details & Details for the above VO's?
    I want create a page with Advanced Master Table VO1 and when the user click Show/Hide it should display two Advanced Tables for VO2 & VO3.
    Is this possible to achieve?
    If not Please advise how I can use another way to display the data with Master - Details 1 & Details 2
    Regards...Ashraf

    You could use "New"/"BC" and create a ViewLink with the same name as the FK Assoc. If you edit the PackageModule, you should be able to see your FK link in there.

  • Master with two details(child) relation?

    Hi guys,
    I 'd like to have a Form with one master table and two detail tables.
    The business component wizard doesn't allow
    me to create this relation.
    Although these two details table are logically children of the master but have not defined specifically Foreign key for them on table/database level.
    I created Associations via JDev3.1 to join
    these master with details, but still business
    component wizard didn't allow me to have
    one master and two details.
    Do i have to create foreign keys to join children to master on database level or
    I can create an association with JDev? How?
    Thx
    Ali
    null

    You could use "New"/"BC" and create a ViewLink with the same name as the FK Assoc. If you edit the PackageModule, you should be able to see your FK link in there.

  • Master with two details

    Friends,
    I can do a master-detais with one level, but can I do master detail with two or more levels?
    Sample: Departments -> Employees -> Bankacount
    just a simple sample ;-)
    Thanks!

    Creating a Master-Detail-Detail realtionship with BC4J
    Creating the Application Model
    1. Create New BC4J entity objects and default views for the three related tables. I'm using the OE schema for this with the Customers, Orders, and Order Items.
    2. Create a New View link (I'll call it ViewLink) using Orders as the source view and Order Items as the destination entity.
    3. Edit the Application Module by double clicking on it.
    4. Remove the exisitng object in your datamodel by shutteling them to the left.
    5. Add the CustomerView top level item to the new data model by shutteling it to the right.
    6. Add the OrdersView from the second level to the data model
    7. Add the "Order Items via Viewlink" node to the data model.
    You should now have a three level data model that you can test using the Application Model tester.
    Creating a simple JSP for the data model
    1. Create a new JSP.
    2. Drag the Customer object from the Data Control Palette to the page as a read only form.
    3. Drag the Customer object from the Data Control Palette to the page as Navigation buttons.
    4. Drag the Orders object from the Data Control Palette to the page as a read only form.
    5. Drag the Orders object from the Data Control Palette to the page as Navigation buttons.
    6. Drag the Orders Items from the Data Control Palette to the page as a read only table.
    7. Run your JSP
    You should be able to navigate through the customers using the navigation buttons. This navigation will change the orders that are displayed. Navigating through the orders will change the items that are displayed.

  • Master with two detail components

    Hello Gurus, hoping one of you may be able to help.
    This question relates to ADF in JDeveloper 10.1.3.4 and the Model will be implemented in EJBs (sorry, client restriction in place so no BC4J is allowed)
    Is it possible to have a Master record display on an ADF page whilst displaying two different sets of detail rows using different components.
    For instance, I have a master table A that has two detail tables, B and C.
    I want to display a single record of the master A, along with rows from B in an ADF Table and rows from C in a selectManyShuttle.
    The detail components can be displayed at the same time, but ideally I would love the ability to hide one or the other by selecting a tab.
    Thanks.

    If I understand you correctly. You should just have to create two separate viewLinks. Add the datasource tags for the master and the two views via the viewlinks. Then use a rowKey to get the correct master.
    Hope that helps!

  • Master with two details issue --- urgent

    Hi,
    This is an urgent issue. Please help solve this.
    Page has one sub-tab layout region and beneath it advanced table - in advanced table region. The sub-tab region shows the master data(vo1) whereas the advanced table - in advanced table is used to display the details (vo2) and its details (vo3) data.
    The relationship between 3 vos in AM is as follows:
    vo1
    |--------- conencted to vo2 via vl1
    -----------------------------|-------------- connected to vo3 via vl2
    How to set the CHILD_VIEW_ATTRIBUTE_NAME and VIEW_LINK_NAME on each of this region so that when vo1 is queried the data of vo2 and vo3 is fetched automatically and displayed?
    Or is there any other way to make this haapen with the above mentioned region layout?
    Appreciate your help. Thanks in advance.
    Mitiksha
    Edited by: Mitiksha on Sep 17, 2009 2:00 PM

    You could use "New"/"BC" and create a ViewLink with the same name as the FK Assoc. If you edit the PackageModule, you should be able to see your FK link in there.

  • Master with multiple details

    (JHeadstart release 10.1.2.) I can make a master with multiple detail pages work (displayed on the same page or different pages), except under one condition. Assume the following situation:
    Master: View object A based on entity A
    Detail 1: View object B based on entity B with a modified WHERE clause
    Detail 2: View object C based on entity B (yes, same entity object as view object B) with a WHERE clause different than the one for view object B
    A one-to-many view link exists between view object A and view object B, and another exists between view object A and view object C. The query for each of the view objects is standard (i.e., no expert-mode queries). The master and the two detail view objects (via their respective view links) are assigned to an application module.
    I created a JHeadstart application structure file for the application module with Struts and UIX. I added view object A as the top group (table-form layout). I next added view object B as a detail group (form layout, same page) beneath view object A. I finally added view object C as a detail group (form layout, same page) beneath view object A (i.e., parallel to view object B). The module generated and built cleanly.
    I ran the application, entered a master record, and saved the data. When I pressed the button to create a new record for detail 1 (view object B), fields appeared for the pages for detail 1 and detail 2 (view object C), not just detail 1. Also, the value of the Descriptor Attribute from the master record that linked it to the two detail pages populated the corresponding field in both of the displayed pages for the detail records.
    This behavior does not occur if view object C (detail 2) is based on an entity different than view object B. Will JHeadstart allow a master to have multiple details where the details are based on the same entity object? Thanks.
    Ray

    Ray,
    Unfortunately I cannot reproduce the problem. I filled in the A, B and C using a scott/tiger schema as follows:
    A: Departments
    B: All employees having a salary < 1000
    C: All employees having a salary >= 1000
    Then I created an application module with one group having two subgroups everything same page, just like you specified. Everything seemed to work fine. Do you have any idea what's different in your situation.
    Aard-Jan van Kesteren
    JHeadstart Team
    Oracle Consulting

  • BC4J: Master with multiple details

    Hi,
    I have a requirement to display a data form that consists of fields from 3 entities - one master and 2 details. I have view objects for each of the entities.
    I was wondering how best to model this:
    Should I have one Master VO pointing to 2 different view links (one to each detail VO)?
    Or can I have a single view link that models master-multiple-details (not sure how I can do this using the ViewLink wizard)?
    Any other approach I should consider?
    Thanks,
    Niranjan

    I don't believe you could create a Master with two details frame using wizard. you need to write/alter some code manually. I did this a lot in my application, but as i mentioned with some manually coding.
    here is the general idea:
    1- create the view links for master-detail1 and master-detail2 separately.
    2- Edit your application module using wizard.
    (right click on application module and select Edit Tab). if you did the first step successfully, You should see your master entity and details(as master's children) on left side of wizard frame. Then transfer them to the right side.
    3- Create a frame for master-detail1 using wizard.
    4- create another frame(dummy frame) for master-detail2 using wizard.
    5- copy all codes for detail2 from your dummy frame(step 4) to frame on step 3.
    6- Now you need to alter the code in frame on step 3, to locate the detail2 on that frame.
    7- Now the dummy frame on step 4 is useless, you can delete it.
    Hope this note be clear and help you.
    null

  • Possible bug when creating multiple detail view objects

    using jdev 11.1.1.0.0 to build jsf/adf applications. I wanted to report what seems like a bug in 11g. I have a parent table which has two child tables. After creating the appropriate entities, associations, views, and view links, the app module looks like this:
    MasterView
    --DetailView1
    --DetailView2
    The two detail view objects are on the same level, they are both direct children of the Master view.
    Here's what's happening:
    1) I create the master entity/view objects (MasterView)
    2) I create one of the detail entity/view objects (DetailView1).
    3) I create the association and view link to establish relationship between MasterView and DetailView1. Everything works fine.
    4) I create the entity/view objects for second detail view (DetailView2)
    5) When I attempt to create a second view link (based off an association) to establish the relationship between MasterView and DetailView2, the query clauses of the Create View Link wizard (screens 4 and 5) do not get created properly. I finish the wizard and save. Not only does this view link not get created properly, but in the process the query clauses that were defined in the first view link between MasterView and DetailView1 are wiped out. This will break any coordination between master and detail views in both the app module tester and runtime. Has anyone seen this problem?

    fyi, it looks like this issue has been resolved with jdev 11.1.1.0.2 (Update 2)

  • Problem occured when create a tree table for master-detail view objects using SQL queries?

    I am programming a tree table for master-detail view objects using SQL queries and these 2 view objects are not simple singel tables queries, and 2 complex SQL are prepared for master and view objects. see below:
    1. Master View object (key attribute is SourceBlock and some varaible bindings are used for this view object.)
    SELECT  cntr_list.SOURCE_BLOCK,                   
            sum(                   
             case when cntr_list.cntr_size_q = '20'                   
                  then cntr_list.cntr_qty                   
                  else 0 end ) as cntr20 ,                   
            sum(                   
             case when cntr_list.cntr_size_q = '40'                   
                  then cntr_list.cntr_qty                   
                  else 0 end ) as cntr40 ,                   
             sum(                   
             case when cntr_list.cntr_size_q = '45'                   
                  then cntr_list.cntr_qty                   
                  else 0 end ) as cntr45                    
    FROM (       
        SELECT yb1.BLOCK_M as SOURCE_BLOCK,       
               scn.CNTR_SIZE_Q,        
               count(scn.CNTR_SIZE_Q) AS cntr_qty        
        FROM  SHIFT_CMR scm, SHIFT_CNTR scn, YARD_BLOCK yb1, YARD_BLOCK yb2       
        WHERE       
        scm.cmr_n = scn.cmr_n             
        AND (scm.plan_start_dt BETWEEN to_date(:DateFrom,'YYYY/MM/DD HH24:MI:SS') AND to_date(:DateTo,'YYYY/MM/DD HH24:MI:SS')                 
        OR scm.plan_end_dt BETWEEN to_date(:DateFrom,'YYYY/MM/DD HH24:MI:SS') AND to_date(:DateTo,'YYYY/MM/DD HH24:MI:SS'))                 
        AND scm.shift_mode_c = :ShiftModeCode                           
        AND scm.end_terminal_c = :TerminalCode      
        AND scm.start_terminal_c = yb1.terminal_c                  
        AND scm.start_block_n = yb1.block_n                  
        AND substr(scn.start_location_c,(instr(scn.start_location_c,',',1,5)+1),instr(scn.start_location_c,',',1,6)-(instr(scn.start_location_c,',',1,5)+1)) BETWEEN yb1.slot_from_n AND yb1.slot_to_n                  
        AND scm.end_terminal_c = yb2.terminal_c                  
        AND scm.end_block_n = yb2.block_n                  
        AND substr(scn.end_location_c,(instr(scn.end_location_c,',',1,5)+1),instr(scn.end_location_c,',',1,6)-(instr(scn.end_location_c,',',1,5)+1)) BETWEEN yb2.slot_from_n AND yb2.slot_to_n           
        AND scn.status_c not in (1, 11)             
        AND scn.shift_type_c = 'V'             
        AND scn.source_c = 'S'       
        GROUP BY yb1.BLOCK_M, scn.CNTR_SIZE_Q       
    ) cntr_list       
    GROUP BY cntr_list.SOURCE_BLOCK
    2. Detail View object (key attributes are SourceBlock and EndBlock and same varaible bindings are used for this view object.)
    SELECT  cntr_list.SOURCE_BLOCK, cntr_list.END_BLOCK,                
            sum(                     
             case when cntr_list.cntr_size_q = '20'                     
                  then cntr_list.cntr_qty                     
                  else 0 end ) as cntr20 ,                     
            sum(                     
             case when cntr_list.cntr_size_q = '40'                     
                  then cntr_list.cntr_qty                     
                  else 0 end ) as cntr40 ,                     
             sum(                     
             case when cntr_list.cntr_size_q = '45'                     
                  then cntr_list.cntr_qty                     
                  else 0 end ) as cntr45                      
    FROM (         
        SELECT yb1.BLOCK_M as SOURCE_BLOCK,     
               yb2.BLOCK_M as END_BLOCK,  
               scn.CNTR_SIZE_Q,          
               count(scn.CNTR_SIZE_Q) AS cntr_qty          
        FROM  SHIFT_CMR scm, SHIFT_CNTR scn, YARD_BLOCK yb1, YARD_BLOCK yb2         
        WHERE         
        scm.cmr_n = scn.cmr_n               
        AND (scm.plan_start_dt BETWEEN to_date(:DateFrom,'YYYY/MM/DD HH24:MI:SS') AND to_date(:DateTo,'YYYY/MM/DD HH24:MI:SS')                   
        OR scm.plan_end_dt BETWEEN to_date(:DateFrom,'YYYY/MM/DD HH24:MI:SS') AND to_date(:DateTo,'YYYY/MM/DD HH24:MI:SS'))                   
        AND scm.shift_mode_c = :ShiftModeCode                             
        AND scm.end_terminal_c = :TerminalCode        
        AND scm.start_terminal_c = yb1.terminal_c                    
        AND scm.start_block_n = yb1.block_n                    
        AND substr(scn.start_location_c,(instr(scn.start_location_c,',',1,5)+1),instr(scn.start_location_c,',',1,6)-(instr(scn.start_location_c,',',1,5)+1)) BETWEEN yb1.slot_from_n AND yb1.slot_to_n                    
        AND scm.end_terminal_c = yb2.terminal_c                    
        AND scm.end_block_n = yb2.block_n                    
        AND substr(scn.end_location_c,(instr(scn.end_location_c,',',1,5)+1),instr(scn.end_location_c,',',1,6)-(instr(scn.end_location_c,',',1,5)+1)) BETWEEN yb2.slot_from_n AND yb2.slot_to_n             
        AND scn.status_c not in (1, 11)               
        AND scn.shift_type_c = 'V'               
        AND scn.source_c = 'S'         
        GROUP BY yb1.BLOCK_M, yb2.BLOCK_M, scn.CNTR_SIZE_Q         
    ) cntr_list         
    GROUP BY cntr_list.SOURCE_BLOCK, cntr_list.END_BLOCK
    3. I create a view link to create master-detail relationship for these 2 view objects.
    masterview.SourceBlock (1)->detailview.SourceBlock (*).
    4. I create a tree table using these 2 view objects with master-detail relationship.
    When I set default value for variable bindings of these 2 view objects and the matching records exist, tree table can work well. I can expand the master row to display detail row in UI.
    But I need to pass in dymamic parameter value for variable bindings of these 2 view objects, tree table cannnot work again. when I expand the master row and no detail row are displayed in UI.
    I am sure that I pass in correct parameter value for master/detail view objects and matching records exist.
    Managed Bean:
            DCIteratorBinding dc = (DCIteratorBinding)evaluteEL("#{bindings.MasterView1Iterator}");
            ViewObject vo = dc.getViewObject();
            System.out.println("Before MasterView1Iterator vo.getEstimatedRowCount()="+ vo.getEstimatedRowCount());
            System.out.println("Before MasterView1Iterator ShiftModeCode="+ vo.ensureVariableManager().getVariableValue("ShiftModeCode"));
            vo.ensureVariableManager().setVariableValue("DateFrom", dateFrom);
            vo.ensureVariableManager().setVariableValue("DateTo", dateTo);
            vo.ensureVariableManager().setVariableValue("ShiftModeCode", shiftModeC);
            vo.ensureVariableManager().setVariableValue("TerminalCode", terminalCode);
            vo.executeQuery();
            System.out.println("MasterView1Iterator vo.getEstimatedRowCount()="+ vo.getEstimatedRowCount());
            DCIteratorBinding dc1 = (DCIteratorBinding)evaluteEL("#{bindings.DetailView1Iterator}");
            ViewObject vo1 = dc1.getViewObject();
            System.out.println("Before DetailView1Iterator vo1.getEstimatedRowCount()="+ vo1.getEstimatedRowCount());
            System.out.println("Before DetailView1Iterator ShiftModeCode="+ vo1.ensureVariableManager().getVariableValue("ShiftModeCode"));
            vo1.ensureVariableManager().setVariableValue("DateFrom", dateFrom);
            vo1.ensureVariableManager().setVariableValue("DateTo", dateTo);
            vo1.ensureVariableManager().setVariableValue("ShiftModeCode", shiftModeC);
            vo1.ensureVariableManager().setVariableValue("TerminalCode", terminalCode);
            vo1.executeQuery();
            System.out.println("after DetailView1Iterator vo1.getEstimatedRowCount()="+ vo1.getEstimatedRowCount());
    5.  What's wrong in my implementation?  I don't have no problem to implement such a tree table if using simple master-detail tables view object, but now I have to use such 2 view objects using complex SQL for my requirement and variable bindings are necessary for detail view object although I also think a bit strange by myself.

    Hi Frank,
    Thank you and it can work.
    public void setLowHighSalaryRangeForDetailEmployeesAccessorViewObject(Number lowSalary,
                                                                              Number highSalary) {
            Row r = getCurrentRow();
            if (r != null) {
                RowSet rs = (RowSet)r.getAttribute("EmpView");
                if (rs != null) {
                    ViewObject accessorVO = rs.getViewObject();
                    accessorVO.setNamedWhereClauseParam("LowSalary", lowSalary);
                    accessorVO.setNamedWhereClauseParam("HighSalary", highSalary);
                executeQuery();
    but I have a quesiton in this way. in code snippet, it is first getting current row of current master VO to determine if update variables value of detail VO. in my case, current row is possibly null after executeQuery() of master VO and  I have to change current row manually like below.
    any idea?
                DCIteratorBinding dc = (DCIteratorBinding)ADFUtil.evaluateEL("#{bindings.SSForecastSourceBlockView1Iterator}");
                ViewObject vo = dc.getViewObject();           
                vo.ensureVariableManager().setVariableValue("DateFrom", dateFrom);
                vo.ensureVariableManager().setVariableValue("DateTo", dateTo);
                vo.ensureVariableManager().setVariableValue("ShiftModeCode", shiftModeC);
                vo.ensureVariableManager().setVariableValue("TerminalCode", terminalCode);
                vo.executeQuery();
                vo.setCurrentRowAtRangeIndex(0);
                ((SSForecastSourceBlockViewImpl)vo).synchornizeAccessorVOVariableValues();

  • To create an application with a master and two details in the same page

    How I make to create an application contend a form master with two forms details in the same page?
    Tomaz
    Message was edited by:
    user517841

    Hi,
    You do not need to mount a screen. Just add a new region with several text fields inside. You should fetch a row by a process and populate the set when you load the page or click on a button. Insert, update, and delete should be done by processes. You have to have Next and Previous buttons to brows trough all rows of the detail table.
    The most important thing here is what the connections between tables in your database are.
    If they are the "One to many, One to one" you can use the approach described above.
    If they are "One to many, One to many" will be better to use buttons or links to lunch details' tables in separate forms.
    If the second and third tables are connected only to the master table you can use two buttons at the right of every master row. Clicking on the buttons will bring separate form for each detail table.
    If the third table is just a luckup table to the second one you can use "Select List" field into tabular form of the second table in one Master-Detail form.
    Konstantin
    [email protected]

  • ADF BC - One Master and Two Detail pages How To?

    I have an existing ADF BC .jspx master-detail page that works fine. It shows one product as the master (read-only; no navigation controls) and assocatied customer feedback as the detail (multiple records; read-only.) Now I also want to compute some averages from the same table used to create the detail view object. I have created a second view object because this requires a separate query that calculates aggregate values. I want to take advantage of using view links so that this 2nd view object is automatically linked to the master record via the primary key.
    My question is how can I link this into the existing master-detail data control so that I can drag/drop it to include id on the existing .jspx page and the primary key linkages will be handled automatically?
    Tables
    Product
    Feedback
    View Objects
    ProductView
    FeedbackView
    FeedbackAVGView
    Current ViewLink
    ProductFeedbackViewLink = ProductView + FeedbackView
    Current DataControl
    ProductFeedbackViewLink-Instance
    Data Control is displayed on .jspx page; want to also include 3rd View Object, FeedbackAVGView, in the Master-Detail relationship and display on the .jspx page

    Thanks for the reply. The existing customer feedback view object displays the customer's text feedback (testimonials) - these will be displayed in a read-only table with multiple records.
    The new view object aggregates the ratings score from the customer feedback (same FEEDBACK database table) and will use a form to display the results (not multiple rows.) The PK is included in the aggregate view object query.
    Note there is already an existing viewlink between the PK (Master) and FK (Feedback) - in the data control, this viewlink is an instance of the Master View Object and the Customer Feedback View object. Now that I have created a third view object, should I create another View Link between the Master View Object and the Customer Feedback AVERAGES View Object? If I do this, how do I include it in the existing .jspx page? If I add this new View Link to the Application Module I will have two different Data Controls:
    Data Control #1: Master (Product) View Object + Customer Feedback View Object #1 (implemented as a master-detail read-only form/table on a .jspx page)
    Data Control #2: Master (Product) View Object + Customer Feedback AVG View Object #2
    I'm confused as to how to integrate the second customer feedback view object into the existing Data Control / Master-Detail read-only form/table on my .jspx page?
    thanks

  • View Link on two programmatic view objects

    Hello,
    I use Build JDEVADF_11.1.1.1.0_GENERIC_090615.0017.5407
    I have two programmatic View Objects with data from other sources (an ArrayList in my example).
    Now I would like to create a View Link on it. How can I do this?
    I'm quite new on Java and ADF...
    I know it is possible because I already found Steve's example 132 here [http://blogs.oracle.com/smuenchadf/examples/|http://blogs.oracle.com/smuenchadf/examples/]
    But could somebody create a simple example based on my example classes below (which is understandable for a newbie like me ;-) ?
    Has been asked already here, but I did not found a solution as yet.
    Error with view link and ADF table Tree
    This is my example code for the view objects:
    Employee.java:
    private Number empno;
    private String ename;
    private Number dept;
    with getters and setters...
    Department.java
    private Number deptno;
    private String dname;
    with getters and setters...
    public class StaticDataDepartmentsImpl extends ViewObjectImpl {
    int rows = -1;
    private List<Department> departments = new ArrayList<Department>();
    protected void executeQueryForCollection(Object rowset, Object[] params,
    int noUserParams) {
    // Initialize our fetch position for the query collection
    setFetchPos(rowset, 0);
    super.executeQueryForCollection(rowset, params, noUserParams);
    // Help the hasNext() method know if there are more rows to fetch or not
    protected boolean hasNextForCollection(Object rowset) {
    return getFetchPos(rowset) < rows;
    // Create and populate the "next" row in the rowset when needed
    protected ViewRowImpl createRowFromResultSet(Object rowset,ResultSet rs) {
    ViewRowImpl r = createNewRowForCollection(rowset);
    int pos = getFetchPos(rowset);
    populateAttributeForRow(r, 0, departments.get(pos).getDeptno());
    populateAttributeForRow(r, 1, departments.get(pos).getDname());
    setFetchPos(rowset, pos + 1);
    return r;
    // When created, initialize static data and remove trace of any SQL query
    protected void create() {
    super.create();
    // Setup string arrays of codes and values from VO custom properties
    initializeStaticData();
    rows = (departments != null) ? departments.size() : 0;
    // Wipe out all traces of a query for this VO
    getViewDef().setQuery(null);
    getViewDef().setSelectClause(null);
    setQuery(null);
    // Return the estimatedRowCount of the collection
    public long getQueryHitCount(ViewRowSetImpl viewRowSet) {
    return rows;
    // Subclasses override this to initialize their static data
    protected void initializeStaticData() {
    Department d1 = new Department();
    d1.setDeptno(new Number(10));
    d1.setDname("IT");
    Department d2 = new Department();
    d2.setDeptno(new Number(20));
    d2.setDname("HR");
    departments.add(d1);
    departments.add(d2);
    // Store the current fetch position in the user data context
    private void setFetchPos(Object rowset, int pos) {
    if (pos == rows) {
    setFetchCompleteForCollection(rowset, true);
    setUserDataForCollection(rowset, new Integer(pos));
    // Get the current fetch position from the user data context
    private int getFetchPos(Object rowset) {
    return ((Integer)getUserDataForCollection(rowset)).intValue();
    public class StaticDataEmployeesImpl extends ViewObjectImpl {
    int rows = -1;
    private List<Employee> employees = new ArrayList<Employee>();
    protected void executeQueryForCollection(Object rowset, Object[] params,
    int noUserParams) {
    // Initialize our fetch position for the query collection
    setFetchPos(rowset, 0);
    System.out.println("in executeQueryForCollection");
    super.executeQueryForCollection(rowset, params, noUserParams);
    // Help the hasNext() method know if there are more rows to fetch or not
    protected boolean hasNextForCollection(Object rowset) {
    System.out.println("in hasNextForCollection. Rows:" + rows);
    return getFetchPos(rowset) < rows;
    // Create and populate the "next" row in the rowset when needed
    protected ViewRowImpl createRowFromResultSet(Object rowset,ResultSet rs) {
    ViewRowImpl r = createNewRowForCollection(rowset);
    int pos = getFetchPos(rowset);
    System.out.println("in createRowFromResultSet. Pos=" + pos);
    populateAttributeForRow(r, 0, employees.get(pos).getEmpno());
    populateAttributeForRow(r, 1, employees.get(pos).getEname());
    populateAttributeForRow(r, 2, employees.get(pos).getDept());
    setFetchPos(rowset, pos + 1);
    return r;
    // When created, initialize static data and remove trace of any SQL query
    protected void create() {
    super.create();
    // Setup string arrays of codes and values from VO custom properties
    initializeStaticData();
    rows = (employees != null) ? employees.size() : 0;
    System.out.println("in create(). Rows=" + rows);
    // Wipe out all traces of a query for this VO
    getViewDef().setQuery(null);
    getViewDef().setSelectClause(null);
    setQuery(null);
    // Return the estimatedRowCount of the collection
    public long getQueryHitCount(ViewRowSetImpl viewRowSet) {
    return rows;
    // Subclasses override this to initialize their static data
    protected void initializeStaticData() {
    Employee e1 = new Employee();
    e1.setEmpno(new Number(2333));
    e1.setEname("Emp1");
    e1.setDept(new Number(10));
    Employee e2 = new Employee();
    e2.setEmpno(new Number(1199));
    e2.setEname("Emp2");
    e2.setDept(new Number(20));
    Employee e3 = new Employee();
    e3.setEmpno(new Number(3433));
    e3.setEname("Emp3");
    e3.setDept(new Number(10));
    Employee e4 = new Employee();
    e4.setEmpno(new Number(5599));
    e4.setEname("Emp4");
    e4.setDept(new Number(20));
    Employee e5 = new Employee();
    e5.setEmpno(new Number(5676));
    e5.setEname("Emp5");
    e5.setDept(new Number(10));
    Employee e6 = new Employee();
    e6.setEmpno(new Number(7867));
    e6.setEname("Emp6");
    e6.setDept(new Number(20));
    employees.add(e1);
    employees.add(e2);
    employees.add(e3);
    employees.add(e4);
    employees.add(e5);
    employees.add(e6);
    // Store the current fetch position in the user data context
    private void setFetchPos(Object rowset, int pos) {
    if (pos == rows) {
    setFetchCompleteForCollection(rowset, true);
    setUserDataForCollection(rowset, new Integer(pos));
    // Get the current fetch position from the user data context
    private int getFetchPos(Object rowset) {
    return ((Integer)getUserDataForCollection(rowset)).intValue();
    Who can help?
    Thnx in advance!
    Rolf

    Rolf,
    I guess when we try to do it for you, we end up with almost the sample code provided by Steve Muench.
    So there from my point of view it doesn't make sense to do it all over.
    Take some time and study the sample code, run it without changes and after that try some changes which suits your use case better.
    If you don't understand what's going on in the sample post the question here and we try to help you.
    Timo

  • Examples of Master with multiple details

    Hi Leo,
    I want to create Master with multiple details
    I have been trying for the similar example (Master with multiple details) for long time.
    It seems in the following link, you have mentioned that you have done such examples.
    Examples/Demos of APEX applications with Master with Multiple Details.
    Can you please share the solution to my emaid address [email protected]
    Or can anybody help me to get such solution with examples step by step.
    I would highly appreciate for any help.
    Thanks.

    Ok, so here's the rundown.
    Create a page with one "master" html region. In that region create your standard text/date/etc. items. Make sure that one of these is a hidden key field that is the key linking the master and details portions. Use a calculation to pre-populate the field from a sequence (or whatever uniqueness generator you choose). It is important to generate this key up front for the processing.
    Next I created one report region for each detail table I wanted to link in. Make sure to count the total number of fields you want to work with and that the total is LESS than 50. This is critical. The report should be selecting the columns from APEX_COLLECTIONS for display and manipulation on the screen. It is best to explicitly associate these to the Javascript column numbers now. I used a process to pre-populate my detail entry areas with default values for ease. I also included a button to add a row to each area, but you have to be careful here to use a good combination of form attributes so that the page refreshes don't SUBMIT yet.
    Once you have a report region generated from APEX_COLLECTIONS, you have to create the update processes that pull the information from the user modifications into the collection. This is the trickiest part of the whole thing. You have to use the APEX_COLLECTION.UPDATE_ITEM method, and you have to refer to the JavaScript column numbers for the source value and the collection column number for the destination. It is really easy to get these confused - I advise putting this all into a document or on a whiteboard for reference.
    Once you have the update processes written (I prefer writing one update process per detail section), write your processes to write the data to the database. Again, I suggest one process for each detail table. Trigger them to fire on submit.
    I also suggest creating a debug page to display all of the various collections and to help keep things straight. Once you have one detail area working, it is easier to get the others working.
    If you need actual code snippets, let me know and I'll see what I can do.

Maybe you are looking for