Setwhereclause on a detail view object

Hi
I have a detail view object which has a huge where clause and I want to add a search facility to my view. I used setWhereClause object but does it replace the previous whereclause in the default viewobject or add onto it? It seems like executequery is not working . The same results come.
Here is the sql of the view object:
SELECT AccountRouteProfile.DOMAINID,
AccountRouteProfile.RESELLERID,
AccountRouteProfile.COMP_ID,
AccountRouteProfile.WK_PROFILE,
AccountRouteProfile.WE_PROFILE,
AccountRouteProfile.MONDAY_PROFILE,
AccountRouteProfile.TUESDAY_PROFILE,
AccountRouteProfile.WEDNESDAY_PROFILE,
AccountRouteProfile.THURSDAY_PROFILE,
AccountRouteProfile.FRIDAY_PROFILE,
AccountRouteProfile.SATURDAY_PROFILE,
AccountRouteProfile.SUNDAY_PROFILE,
Comp.COMP_NAME,
RouteProfile.DEFINITION weekProfile,
RouteProfile2.DEFINITION weekendProfile
FROM ACCOUNT_ROUTE_PROFILE AccountRouteProfile,
COMP Comp,
ROUTE_PROFILE RouteProfile,
ROUTE_PROFILE RouteProfile2
WHERE AccountRouteProfile.COMP_ID=Comp.COMP_ID
AND AccountRouteProfile.DOMAINID=Comp.DOMAINID
AND AccountRouteProfile.RESELLERID=Comp.RESELLERID
AND AccountRouteProfile.WK_PROFILE=RouteProfile.PROFILE
AND AccountRouteProfile.DOMAINID=RouteProfile.DOMAINID
AND AccountRouteProfile.RESELLERID=RouteProfile.RESELLERID
AND AccountRouteProfile.WE_PROFILE=RouteProfile2.PROFILE
AND AccountRouteProfile.DOMAINID=RouteProfile2.DOMAINID
AND AccountRouteProfile.RESELLERID=RouteProfile2.RESELLERID
Here is my data action that does the search:
ViewObject v1=actionContext.getBindingContext().findDataControl("AppModuleDataControl").getApplicationModule().findViewObject("AccountRouteProfileView12");
//System.out.println(v1.getRowCount());
String filter=actionContext.getHttpServletRequest().getParameter("filter");
String criteria=actionContext.getHttpServletRequest().getParameter("criteria");
String param="COMP_ID";
if(filter==null)
param="COMP_ID";
else
if(filter.equals("Company Id"))
param="AccountRouteProfile.COMP_ID";
else if(filter.equals("Company Name"))
param="Comp.COMP_NAME";
String query="";
if(criteria!=null)
query=param+" LIKE '" + criteria+"'";
System.out.println(query);
v1.setWhereClause(param);
v1.executeQuery();
super.findForward(actionContext);
It seems like the executequery is not working.Can you please help.
Note: The where clause in the query must stay as it is.The code must add onto it.

Hi,
both, the master and detail have an iterator binding in ADF (you didn't say how you created the apps, so I assume ADF). The iterator binding is a named entry in teh pageDef file of the page. If you selc a detail row in a tabe or form, then this becomes teh current row in the iterator.
If you look e.g. in teh deveoper guide, there are various ways of how to access the ADF binding at runtime. You don't say the technology you use, so I assume ADF Swing. In ADF Swing there is a panelBinding object that yu use to access the binding layer. Just get a handle to the detail ierator, call geCurrentRow and getAttribute(String) on it to obtain the selected salary.
otn.oracle.com/products/jdev has links to th developer guides and tutorials
Frank

Similar Messages

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

  • 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!

  • 3 Levels Master Detail View Object with Java class interface

    Hi Developers,
    I've created 3 tables with one to many relations as below
    BOARD ------<- APPLICANT ------<- QUALIFICATION
    a board includes many applicants and an applicant includes many qualifications.
    When I add these tables to a Fusion Project, JDeveloper 11g helps me to add the Entity Links and View Associations automatically.
    Then, I defined these relations in an ApplicantModule's Data Model as below.
    [+] BoardVO1
          |
          |--[+] ApplicantVO1
                   |
                   |--[+] QualificationVO1The problem is: I cannot write any function in QualificationVO and publish it by client interface.
    I created a simple function with a single line (System.out.println(...) ) in QualificationVOImpl.java. and selected it in Client Interface. But when I execute it from the ApplicantionModel for testing, an oracle.jbo.NoObjException JBO-25003 is raised. with message: Object ... ApplicantVO1 of type ApplicationModule not found.
    Has anyone tried to implement some coding in the third level of a master details view structure as my example? How do you make it works?
    I'm using JDeveloper 11.1.1.3 with ADF BC.
    Regards,
    Samson Fu

    Samson,
    Looks like a bug (probably with the application module tester). I created your tables:
    create table board(board_id number primary key not null);
    create table applicant(applicant_id number primary key not null, board_id number not null);
    create table qualification(qualification_id number primary key not null, aplicant_id number not null);
    alter table applicant add a_fk foreign key(board_id) references board;
    alter table qualification add q_fk foreign key(aplicant_id) references applicant;I created a JDev project and got the same results. I've e-mailed a test case off to Frank.
    Frank - the method is indeed exposed on the VO instance, and I tried testing that way, but the AM tester gives the error as if it is looking for an AM instance with the VO's name.
    John

  • Setting parameter in Detail View Object

    I want to setting parameter in detail view.I have two table.One is master another is detail.I use parameter in master table so I put my page parameter form and I execute it.It work fine.I want to use parameter in detail table.In detail table if I dont use parameter master is execute it automaticly and it shows the result but when I put the parameter in detail it isn't show any result it say no rows return.Please help about to use detail views parameters(bind variables)

    Hmmm, sorry, not sure.
    Can I suggest you change your code to the following:
    RowSetIterator[] iter= getMasterRowSetIterators();
    if (iter != null && iter[0].first() != null) {
      Row row = rsi[0].getCurrentRow();
      .....(etc)....And run it in the debugger. See if it actually gets to the Row line. If not getMasterRowSetIterators() isn't returning any iterators and you should check how you've exposed your VOs in your AM - specifically looking to see if your detail VO is actually a detail VO to a parent VO.
    Also I'm not sure overriding executeQuery() is the best place to be doing this as the doco says it is not always called. The doco seems to indicate executeQueryForCollection() is the preferred method. However in my testing it appears you can't set the query parameters in this method.
    Sorry I couldn't be more helpful.
    CM.

  • Master-detail with dynamic view object

    How can you create a view link with a view object that is dynamic? I have created a master-detail relationship on a UIX page. I change the master view object at runtime using a view definition and SQL and then I bind the view object to an iterator on a UIX page. I need the new dynamic view object to maintain the link between the detail view object. Is this possible?
    The reason why I have to change the view object at runtime is because I am implementing a search module and the tables in the from clause can be modified at runtime so I need to have a dynamic view object.
    Thanks,
    Sanjay

    After playing around with ViewObjectImpl's setQuery() method some more I found out that this solution might not work for me due to the following reason: when the user tries to sort a column in the result table, the original contents of the view object get executed instead of the run time query.
    <p>
    I would like to go back to my original solution that included creating a view definition based on the runtime query and then creating a view object from that which I bind to the RowSetIterator. The missing piece to the master-detail functionality is with the detail Iterator being in sync with the master. I have tried the following but I get a ClassCastException <p>
    DCIteratorBinding detailBinding = ctx.getBindingContainer().findIteratorBinding("DetailIterator");
    detailBinding.getViewObject().<b>setMasterRowSetIterator</b>(masterBinding.getRowSetIterator());
    <p>
    here is the relevant stack trace:
    java.lang.ClassCastException
    at oracle.jbo.client.remote.ViewUsageImpl.getImplObject(ViewUsageImpl.java:1829)
    at oracle.jbo.client.remote.RowSetImpl.setMasterRowSetIterator(RowSetImpl.java:512)
    at oracle.jbo.client.remote.ViewUsageImpl.setMasterRowSetIterator(ViewUsageImpl.java:1147)
    at oracle.jbo.common.ws.WSViewObjectImpl.setMasterRowSetIterator(WSViewObjectImpl.java:1005)

  • Using JDBC ? Style Parameters and Oracle Style :param on view objects

    can i use :0 style on predicate side of a sql statement
    example
    ===========================================================
    select nvl(:0, null) from dual
    ===========================================================
    After some test for me only work using ? style.
    The ? style cause me problem on my already creaded master details view objects
    Any help on this
    Best Regards

    Frank tnx for repply
    My problems is , when i use parameters on functions like decode
    ===================================================
    SELECT decode(:0,'VALOR1', 'VALOR1','SINVALOR') VALOR,
           Dept.DEPTNO,
    FROM DEPT Dept
    and
    SELECT decode(:0,'VALOR1', 'VALOR1','SINVALOR') VALOR,
           Emp.EMPNO,
           Emp.DEPTNO
    FROM EMP Emp===================================================
    on a view object that is detail view object (departments vo -> employees vo)
    and have a view link EmpsByDeptViewLink
    the parameter of my view link SQL dont work (in my case :1) <-param of SQL view link
    In my vo :0 is my first parameter, :1 of my view link is my second parameter,
    but when i access my EmpsByDept.do ADF page and set
        ViewObject vo = getDeptView1();
        vo.setWhereClause("DEPTNO = :0");
        vo.setWhereClauseParam(0,"VALOR2");
        vo.setWhereClauseParam(1,"10");
        vo.executeQuery();
        ViewObject vo1 = getEmpView1();
        vo1.setWhereClause("EMPNO = :1");
        vo1.setWhereClauseParam(0,"VALOR1");
        vo1.executeQuery();its doesnot work.
    I need to do some aditional steps to parameter of my view link SQL work?
    Also i has uploaded a TestCase on http://www.geocities.com/mroseroc/ScottADFTest.zip
    Errors from my Jdeveloper Debug level are:
    =======================================================
    SELECT * FROM (SELECT decode(:0,'VALOR1', 'VALOR1','SINVALOR') VALOR,
           Emp.EMPNO,
           Emp.ENAME,
           Emp.JOB,
           Emp.MGR,
           Emp.HIREDATE,
           Emp.SAL,
           Emp.COMM,
           Emp.DEPTNO
    FROM EMP Emp) QRSLT  WHERE (EMPNO = :1)
    06/04/26 21:55:03 [915] Bind params for ViewObject: EmpView1
    06/04/26 21:55:03 [916] Binding param 1: VALOR1
    06/04/26 21:55:03 [917] ViewObject: EmpView1 close single-use prepared tatements
    06/04/26 21:55:03 [918] QueryCollection.executeQuery failed...
    06/04/26 21:55:03 [919] java.sql.SQLException: Missing parameter IN o OUT on index:: 2=======================================================
    (EMPNO = :1) <- this value is never passed

  • Detail view with bind variable. TreeTable not showing all detail result.

    I’m having trouble with treeTable using detail view with bind variables and where clause defined in VO definition.
    Both, master and detail view objects, base on the same entity and have the same condition in where clause. The view objects also have bind variables, which are set in prepareRowSetForQuery() method.
    Again, these are two different views, that get different result, based on value of one of the bind variable.
    When I show results in two different tables on jsf page, where master table has "RowSelection" set on "single", all results are displayed in detail table.
    But when I use treeTable, only the first result of the detail is shown.

    I tested it in applicationModule and it works, but i think that's the same as two tables on a jsf page.
    This is the order in which overridden methods are called in ADF BC or two tables on jsf page
    when clicking on row in master table.
    PrepareRowSetForQueryDetail
    executeQueryForCollection_Detail user param: 2
       Object 2: class [Ljava.lang.Object;  -> print of the object2[] parameter in executeQueryForCollection
         List 0: Bind_ChildId -> viewLink parameter
         List 1: 400035313 -> viewLink parameter value
    getEstimatedRowCount_Detail
    count: 2
    getEstimatedRowCount_Detail
    count: 2 And when i click on "expand node" in tree table:
    getEstimatedRowCount_Root
    count: 2
    PrepareRowSetForQuery_Detail
    executeQueryForCollection_Detail user param: 2
       Object 2: class [Ljava.lang.Object;
         List 0: Bind_ChildId -> viewLink parameter
         List 1: 400035321
    PrepareRowSetForQueryDetail
    executeQueryForCollection_Detail user param: 2
       Object 2: class [Ljava.lang.Object;
         List 0: Bind_ChildId -> viewLink parameter
         List 1: 400035313
    getEstimatedRowCount_Root
    count: 2
    getEstimatedRowCount_Root
    count: 2
    getEstimatedRowCount_Root
    count: 2
    PrepareRowSetForQueryDetail
    executeQueryForCollection_Detail user param: 2
       Object 2: class [Ljava.lang.Object;
         List 0: Bind_ChildId -> viewLink parameter
         List 1: 400035313
    PrepareRowSetForQueryDetail
    executeQueryForCollection_Detail user param: 2
       Object 2: class [Ljava.lang.Object;
         List 0: Bind_ChildId -> viewLink parameter
         List 1: 400035321
    getEstimatedRowCount_Root
    count: 2
    getEstimatedRowCount_Root
    count: 2Values of user parameters are OK. Is there another method that i should override?
    I also noticed, that if detail view doesn't have user bind variables, the tree works fine and is shown even in ADF BC (aplication module).
    I guess we loose a tree, when using bind variables in detail view object.
    Is there a way around it?

  • Iterating through master view objects and child view objects in same page

    I am working on a project using ADF UIX and Business Components.
    I have an application module with two view objects one the master view object and the second the detail object. They are related via a view link.
    I would like to iterate through the master view objects displaying a customer name as bold text and then below each customer name I'd like to display the detail records in a table via the detail view object i.e. a seprate table for each customer.
    Is this possible - I haven't had much luck!?
    Thanks in advance.

    That's because
    $(".ms-vb2 a").
    is bringing back all the pieces that have that class with an anchor on the whole page, not just the ones in the .ms-wpContentDivSpace
    I don't know the exact syntax, but I think you need to iterate through all the '.ms_vb2 a' items as well - there are multiple ones, and do something like this inside your other grouping
    $(".ms-vb2 a").each(function(index) {
        var val=$(this).html();
       var val2=val.replace(/_/g," ")
       $(this).html(val2);
    That's not quite right but maybe that will help.
    Robin

  • Add hyperlink on the field txt in Search Result List to access Detail View

    Hi, SDN fellows.
    I have a PCUI requirement stated the following:
    1) In the line item of the Search Result List (table), there is one hyperlink in field 1.
    2) When click on the hyperlink, it will trigger the action to open up Detail View (Object Data Pattern 1 - ODP1) of the line item.
    3) Problem: When the value of the field is null, there will be no hyperlink to open up the Detail View.
    4) For work around, my requirement is to make the other fields (i.e. field 2) to have a hyperlink to trigger the action for opening the Detail View of the line item.
    I am not strong in PCUI. Please advise how to do so, while I am exploring the guide in the PCUI Book.
    Thanks,
    Kent

    Hello Kent,
    check out the settings of the Field Group element where the link is already active. Copy that settings to the Field which you want to be linked too.
    Regards
    Gregor

  • Use View Object with Alternative Data Sources in View Link

    In my case, I created a view object based on alternative data source (not with SQL query). I have setQuery(null) in the override create() function for this View Object. When I use this View Object at the destination end of the View Link, the setQuery(null) will raise Jbo-26016 exception (You cannot set customer query (calling setQuery()) on a view object if it is the detail view object in a master detail view link.) which does not allow me to do that. I looked Avrom's Framework for Database API-Based ADF BC, in which he override the DBTransaction and CallableStatement in order to intercept the default query clause set by the View Link. I'd like to see if there is any alternative ways to achieve my objective?

    Just following up what I found so far. I'm trying to use customized View Object based on alternative data source at the destination end of View Link with ADF 10.1.3.
    1. For the View Object at the destination end of View Link, I can not call setQuery() which will raise Jbo-26016 exception.
    2. I can omit the setQuery(null) call in my customized ViewObjectImpl, and as long as there is no SQL statement in the View Definition XML, it won't cause problem when calling the executeQueryForCollection() of the super class.
    3. The override executeQueryForCollection() must call the super.executeQueryForCollection() in order to get appropriate result (I tried to skip the call and it does not give back any results)
    4. The funny thing is, when I make getQuery() call in my customized ViewObjectImpl (I'm just trying to double check if the Query object is clean or not), the query object is set to "SELECT FROM" following the getQuery() call, and which causes the exceptions when I call super.exeuteQueryForCollection(). I found out later from the Javadoc API which is implemented in that way.
    So I guess my case is resolved by not making specific call to setQuery(null).

  • Performance Problem with Master-Detail Views

    Hi,
    I have developed a JSP-Applikcation with the master-detail views.
    I would like to report a bad performance at fetching data records from the detail view, because all records
    from master view have firstly to be retrieved to locate right row (rangesize="-1"). The number of records in
    the master table ist 2500 and 7000 in detail table.
    ============= Code Snippets (See HOWTO:Navigate using Data Tags of J. Oropeza) =====
    <jbo:DataSource id="dsMaster appid=testAppId viewobject="MaterView" rangesize="-1">
    <jbo:RefreshDataSource datasource="dsMaster">
    <jbo:Row id="msRow" datasource="dsMaster" action="Find" rowkeyparam="RowkeyValue">
    <jbo:dataSource id="dsDetail" appid="testAppId viewobject="DetailView">
    ======================================================================
    When rangesize="20" sets, performance is good, but the right row location of master view ist not found if the row
    is not positoned in this range (No data from detail view object are displayed).
    How can I improve the performance?
    Many thanks for your help.
    regards,
    Yoo

    Sung:
    Thank you for your suggestion.
    According to your suggestion I have changed my BC4J/JSP-application. However, the performance ist still bad.Whenn I click on a row retrieved from the master view, it takes 15 seconds until the associated data in detail view will be displayed on the other window (The application has been deployed on the test system of ISP).
    In an other case with much less data (162 master and 228 detail rows), it takes only 2 seconds (The application
    goes with the local server and DB of our company).
    ======================== master.jsp =================================
    <jbo:DataSource id="dsMaster appid=testAppId viewobject="MaterView" >
    <a href="detail.jsp?RowKeyValue=<jbo:ShowValue datasource="dsMaster" dataitem="RowKey"/>">
    Here Click
    </a>
    ======================== detail.jsp ======================================
    <jbo:DataSource id="dsMaster appid=testAppId viewobject="MaterView">
    <jbo:RefreshDataSource datasource="dsMaster">
    <jbo:Row id="msRow" datasource="dsMaster" action="Find" rowkeyparam="RowkeyValue">
    <jbo:dataSource id="dsDetail" appid="testAppId viewobject="DetailView">
    How do you think of this coding (My application is based on the document How to of J. Oropeza)?
    How can I increase the performance independently of the number of rows?
    Many thanks for your help.
    regards,
    Yoo

  • SetWhereClause not working for standard view object

    Hi All,
    We are trying to customize one standard page and for that we have add extra where conditions in the standard view object. In th standard view object query is null which is actually getting executed in vo impl using setQuery as follows:
    Please refer setUpQuery Method:
    Below is the controller code from where it is getting fired:
    if(oapagecontext.getParameter("SearchButton") != null)
                            oapagecontext.putParameter("CurrAction", "SEARCH");
                            validateCategoryCriteria(oapagecontext, oawebbean);
                            SupplierSearchVOImpl suppliersearchvoimpl = (SupplierSearchVOImpl)suppliersearchamimpl.findViewObject("SupplierSearchVO");
                            if(flag)
                                suppliersearchvoimpl.setupQueryForRequestedSupplier(oapagecontext, oawebbean);
                            else
                                suppliersearchvoimpl.setupQuery(oapagecontext, oawebbean);
                            suppliersearchvoimpl.executeQuery();
                            oapagecontext.setForwardURLToCurrentPage(null, true, "S", (byte)99);
                            break label0;
    As in the seeded condition setForwardURLToCurrentPage is getting fired we have added additional where condition in the processRequest of the extended controller as follows:
    public void processRequest(OAPageContext pageContext, OAWebBean webBean) {
    super.processRequest(pageContext, webBean);
        pageContext.writeDiagnostics(this, "inside PR",1);
        OAApplicationModule am = (OAApplicationModule)pageContext.getApplicationModule(webBean).findApplicationModule("SupplierSearchAM");
       // OAViewObject vo = (OAViewObject)am.findViewObject("SupplierSearchVO");
        SupplierSearchVOImpl vo = (SupplierSearchVOImpl)am.findViewObject("SupplierSearchVO");
        //String voQuery = vo.getQuery();
        //pageContext.writeDiagnostics(this, "SupplierSearchVO Query : "+voQuery, 1);
        //String whereClause1 = vo.getWhereClause();
        //pageContext.writeDiagnostics(this, "SupplierSearchVO Where Clause : "+whereClause1, 1);
        //pageContext.writeDiagnostics(this, "vo count "+vo.getRowCount(),1);
        //vo.setWhereClauseParams(null);
         pageContext.writeDiagnostics(this, "sessionVal PR"+pageContext.getSessionValue("sessionVal"),1);
        if (pageContext.getSessionValue("sessionVal")!=null) {
           if(pageContext.getSessionValue("sessionVal").equals("NO")) {
               if(vo!= null){
              // vo.setWhereClause("QRSLT.vendor_id = :2");
              // vo.setWhereClauseParam(1,1486622);
                 //  vo.setWhereClause("vendor_id = 1486622");
                  String voQuery = vo.getQuery();
                  StringBuffer stringbuffer = new StringBuffer(" ");
                      stringbuffer.append("SELECT select_flag,vendor_id,vendor_name,asl_entry,trading_partner_id,\n" +
                          "Po_Hold_Switcher_Col,po_docs_totals,tot_invited_negs,tot_awarded_negs,requested_supplier_id from (");
                      stringbuffer.append(voQuery);
                      stringbuffer.append(") where vendor_id = 1486622" );
                      String str = stringbuffer.toString();
                   vo.setQuery(null);
                   vo.setFullSqlMode(vo.FULLSQL_MODE_AUGMENTATION);
                          pageContext.writeDiagnostics(this, "new query string==>" + str,1);
                   vo.setQuery(str);
                          pageContext.writeDiagnostics(this, "new query after vo==>" + vo.getQuery(),1);
                   pageContext.writeDiagnostics(this, "new query ready toexecute==>" + vo.isPreparedForExecution(),1);
               if(vo.isPreparedForExecution()) {
                   vo.executeQuery();
               else {
                   vo.setPreparedForExecution(true);
                   vo.executeQuery();
                   pageContext.writeDiagnostics(this, "vo count "+vo.getRowCount(),1);
                   pageContext.writeDiagnostics(this, "new query "+vo.getQuery(),1);
    * Procedure to handle form submissions for form elements in
    * a region.
    * @param pageContext the current OA page context
    * @param webBean the web bean corresponding to the region
    public void processFormRequest(OAPageContext pageContext,
    OAWebBean webBean) {
         // sessionVal="No";
          pageContext.putSessionValue("sessionVal","NO");
          pageContext.writeDiagnostics(this, "sessionVal PFR"+pageContext.getSessionValue("sessionVal"),1);    
    super.processFormRequest(pageContext, webBean);
    pageContext.writeDiagnostics(this, "ProcessFormRequest called...", 1);
    OAApplicationModule am = (OAApplicationModule)pageContext.getApplicationModule(webBean).findApplicationModule("SupplierSearchAM");
    //if (pageContext.getParameter("SearchButton")!=null)
    //  pageContext.writeDiagnostics(this, "inside serach button custom",1);
    //super.processFormRequest(pageContext, webBean);
    //    SupplierSearchVOImpl vo = (SupplierSearchVOImpl)am.findViewObject("SupplierSearchVO");
    //OAViewObject vo = (OAViewObject)am.findViewObject("SupplierSearchVO");
    //String voQuery = vo.getQuery();
    //pageContext.writeDiagnostics(this, "SupplierSearchVO Query : "+voQuery, 1);
    //String whereClause1 = vo.getWhereClause();
    //pageContext.writeDiagnostics(this, "SupplierSearchVO Where Clause : "+whereClause1, 1);
    //pageContext.writeDiagnostics(this, "vo count "+vo.getRowCount(),1);
    //vo.setWhereClauseParams(null);
    //vo.setWhereClause("vendor_id = :1");
    //vo.setWhereClause("city = :2");
    // vo.setWhereClause("vendor_id = :1");
    //vo.setWhereClauseParam(0, "1486622");
    // vo.executeQuery();
      // pageContext.writeDiagnostics(this, "new query after execute ==>" + vo.getQuery(),1);
       // vo.executeQuery();
    //pageContext.writeDiagnostics(this, "vo count "+vo.getRowCount(),1);
    // SupplierSearchAMImpl suppliersearchamimpl = (SupplierSearchAMImpl)pageContext.getApplicationModule(webBean).findApplicationModule("SupplierSearchAM");
    // boolean flag = "PROSPECTIVE".equals(pageContext.getParameter("SupplierStatus"));
      //  if(pageContext.getParameter("SearchButton") != null)
           // pageContext.putParameter("CurrAction", "SEARCH");
           // validateCategoryCriteria(pageContext, webBean);
           // SupplierSearchVOImpl suppliersearchvoimpl = (SupplierSearchVOImpl)am.findViewObject("SupplierSearchVO");
           // if(flag)
           //     suppliersearchvoimpl.setupQueryForRequestedSupplier(pageContext, webBean);
           // else
            //    suppliersearchvoimpl.setupQuery(pageContext, webBean);
            //suppliersearchvoimpl.customExecuteQuery();
           // oapagecontext.setForwardURLToCurrentPage(null, true, "S", (byte)99);
           // break label0;
      We have tried setting both where clause and query but the issue is condition is getting added in the query when I am printing getQuery but while executing it is executing the old vo query only.
    So can anyone help us on this?

    When you post a question, please use the Advanced Editor and paste the code with appropirate syntax. It will make it easy to read. Otherwise your question might get ignored by others as it is very very difficult to read.
    What is the output you are getting for the below diagnostic messages  ? Is it returning the correct query and correct count ?
    pageContext.writeDiagnostics(this, "vo count "+vo.getRowCount(),1);
    pageContext.writeDiagnostics(this, "new query "+vo.getQuery(),1);
    Cheers
    AJ

  • OAF, View object used with the clausule setWhereClause, show the error  not have been properly initialized.

    Hi to all,
    I'm new with oaf and in mi AM i have to VO that I use to find relative information to the one is shown to the user on a query region, after the user pressed the go buton  the CO request the AM tho load both VO and those information are used to show in a popup region to display and update. the main problem is when the popup region closes it send a submit to the server an the error "View object may not have been properly initialized during Update." is displayed
    The main page and the popup uses the same AM, the initM2mVo() and initTavleVo() are  called by the CO at the processRequest of the main PG, the popup dosen´t have a CO.
    This the AM that uses the main PG and the popup region
    package tasc.oracle.apps.tasc.m2m.imei.server;
    import oracle.apps.fnd.framework.OAViewObject;
    import oracle.apps.fnd.framework.server.OAApplicationModuleImpl;
    import oracle.apps.fnd.framework.server.OAViewObjectImpl;
    import oracle.jbo.Row;
    import oracle.jbo.ViewObject;
    // ---    File generated by Oracle ADF Business Components Design Time.
    // ---    Custom code may be added to this class.
    // ---    Warning: Do not modify method signatures of generated methods.
    public class ActualizarImeiAMImpl extends OAApplicationModuleImpl {
        /**This is the default constructor (do not remove)
        public ActualizarImeiAMImpl() {
        /*******************************USE FOR CUSTOM CODE****************************/
         * Inicializa el vo a través del cual se ejecutara la actualización del IMEI.
         * @param taskNumber
        public void loadImeiVo(String taskNumber) {
            OAViewObject voTableQry = getTableQryVO1();
            if (voTableQry != null) {
                voTableQry.reset();
                voTableQry.setWhereClause(null);
                voTableQry.setWhereClauseParams(null);
                voTableQry.setWhereClause("TASK_NUMBER = :1");
                voTableQry.setWhereClauseParam(0, taskNumber);
                voTableQry.executeQuery();
                if (voTableQry.hasNext()) {
                    voTableQry.next();
                    String idActuacion =
                        (String)voTableQry.getCurrentRow().getAttribute("IdActuacion");
                    String dsM2m =
                        (String)voTableQry.getCurrentRow().getAttribute("DsM2m");
                    String imei =
                        (String)voTableQry.getCurrentRow().getAttribute("Imei");
                    if (idActuacion != null) {
                        OAViewObjectImpl m2mVo = (OAViewObjectImpl)this.getTascTransEqInstM2mVO1();
                        m2mVo.reset();
                        if (!m2mVo.isPreparedForExecution()) {
                            m2mVo.setMaxFetchSize(0);
                            m2mVo.executeQuery();
                        m2mVo.setWhereClause(null);
                        m2mVo.setWhereClauseParams(null);
                        m2mVo.setWhereClause("ID_ACTUACION = :1 AND DS_M2M = :2 AND IMEI = :3 ");
                        m2mVo.setWhereClauseParam(0, idActuacion);
                        m2mVo.setWhereClauseParam(1, dsM2m);
                        m2mVo.setWhereClauseParam(2, imei);
                        m2mVo.executeQuery();
                        if(m2mVo.hasNext()){
                            m2mVo.next();
         * Carga los valores disponibles de IMEI según el taskNumber al cual pertenezca
         * el  IMEI seleccionado.
        public void loadImeiValuesList(String taskNumber) {
            ViewObject viewobject = this.getImeiListVO1();
            OAViewObject voTableQry = getTableQryVO1();
            if (voTableQry != null && voTableQry.getCurrentRow() != null) {
                String imeiType =
                    (String)voTableQry.getCurrentRow().getAttribute("Attribute17");
                if (viewobject != null & imeiType != null) {
                    viewobject.setWhereClause(null);
                    viewobject.setWhereClauseParams(null);
                    viewobject.setWhereClause("TASK_NUMBER = :1 AND ATTRIBUTE17 = :2");
                    viewobject.setWhereClauseParam(0, taskNumber);
                    viewobject.setWhereClauseParam(1, imeiType);
                    viewobject.executeQuery();
        /*******************************USE FOR CUSTOM CODE****************************/
        /**Container's getter for TableVO1
        public OAViewObjectImpl getTableVO1() {
            return (OAViewObjectImpl)findViewObject("TableVO1");
        /**Sample main for debugging Business Components code using the tester.
        public static void main(String[] args) { /* package name */
            /* Configuration Name */launchTester("tasc.oracle.apps.tasc.m2m.imei.server",
                                                 "ActualizarImeiAMLocal");
        /**Container's getter for TascTransEqInstM2mVO1
        public OAViewObjectImpl getTascTransEqInstM2mVO1() {
            return (OAViewObjectImpl)findViewObject("TascTransEqInstM2mVO1");
        /**Container's getter for ImeiListVO1
        public OAViewObjectImpl getImeiListVO1() {
            return (OAViewObjectImpl)findViewObject("ImeiListVO1");
        /**Container's getter for TableQryVO1
        public OAViewObjectImpl getTableQryVO1() {
            return (OAViewObjectImpl)findViewObject("TableQryVO1");
    this is the CO of the main PG
    /*===========================================================================+
    |   Copyright (c) 2001, 2005 Oracle Corporation, Redwood Shores, CA, USA    |
    |                         All rights reserved.                              |
    +===========================================================================+
    |  HISTORY                                                                  |
    +===========================================================================*/
    package tasc.oracle.apps.tasc.m2m.imei.webui;
    import java.io.Serializable;
    import oracle.apps.fnd.common.VersionInfo;
    import oracle.apps.fnd.framework.OAApplicationModule;
    import oracle.apps.fnd.framework.webui.OAControllerImpl;
    import oracle.apps.fnd.framework.webui.OAPageContext;
    import oracle.apps.fnd.framework.webui.TransactionUnitHelper;
    import oracle.apps.fnd.framework.webui.beans.OAWebBean;
    import oracle.apps.fnd.framework.webui.beans.layout.OAQueryBean;
    * Controller for ...
    public class ActualizarImeiCO extends OAControllerImpl {
        public static final String RCS_ID = "$Header$";
        public static final boolean RCS_ID_RECORDED =
            VersionInfo.recordClassVersion(RCS_ID, "%packagename%");
         * Layout and page setup logic for a region.
         * @param pageContext the current OA page context
         * @param webBean the web bean corresponding to the region
        public void processRequest(OAPageContext pageContext, OAWebBean webBean) {
            super.processRequest(pageContext, webBean);
            //get the handle to AM Attached to our Simple Page Region MainRegionRN
            //The page is passed as parameter to this method, hence we can get handle
            //to the AM quite easily
            OAApplicationModule am = pageContext.getApplicationModule(webBean);
            //verifica si la transaccion de creacion esta activa todavia
            if (TransactionUnitHelper.isTransactionUnitInProgress(pageContext,"ActualizarImeiM2m", false))
                // deshace cambios y finaliza Txn
                am.invokeMethod("rollback");
                TransactionUnitHelper.endTransactionUnit(pageContext, "ActualizarImeiM2m");
         * Procedure to handle form submissions for form elements in
         * a region.
         * @param pageContext the current OA page context
         * @param webBean the web bean corresponding to the region
        public void processFormRequest(OAPageContext pageContext,
                                       OAWebBean webBean) {
            super.processFormRequest(pageContext, webBean);
            //get the handle to AM Attached to our Simple Page Region MainRegionRN
            //The page is passed as parameter to this method, hence we can get handle
            //to the AM quite easily
            OAApplicationModule am = pageContext.getApplicationModule(webBean);
            //Detección del botón go de la región de query.
            this.queryButonGO(pageContext, webBean, am);
            this.updateImei(pageContext, am);
         * Detección del botón go de la región de query
         * @param pageContext
         * @param webBean
         * @param am
        public void queryButonGO(OAPageContext pageContext, OAWebBean webBean,
                                 OAApplicationModule am) {
            OAQueryBean queryBean =
                (OAQueryBean)webBean.findIndexedChildRecursive("QueryRN");
            String idGo = queryBean.getGoButtonName();
            if (pageContext.getParameter(idGo) != null) {
                String tareaId = pageContext.getParameter("TaskNumberLovInput");
                //Inicializa el vo a través del cual se ejecutara la actualización del IMEI.
                Serializable[] parameters2 = { tareaId };
                Class[] paramTypes2 = { String.class };
                am.invokeMethod("loadImeiVo", parameters2, paramTypes2);
                //Carga los valores disponibles de IMEI según el taskNumber al cual pertenezca  el  IMEI seleccionado.
                Serializable[] parameters = { tareaId };
                Class[] paramTypes = { String.class };
                am.invokeMethod("loadImeiValuesList", parameters, paramTypes);
        public void updateImei(OAPageContext pageContext, OAApplicationModule am){
            if (pageContext.getParameter("ActualizarImei") != null){
                String imei = pageContext.getParameter("ImeiPopup");
                //TODO......
    thanks to all.

    I thing I got the problem.
    I have the following configuration:
    One Main Page and external RN that is call as popup in main page
    2 VO, queries by java code, one to capture some information that is used to query the 2 VO that I use to update information by the popup.
    One AM that is map only in the Main Page. (Initially I had the external RN mapped to same AM as the main PG, but I remove it).
    The solution was remove the mapping of the AM from the external region and in the messageimput of the external region set the View instance and view Attribute manually in this fields (http://screencast.com/t/uDTALEedCh do not use the wizard ) as the one instanced am the AM, so the problem it seem that was that defining an AM to the external region create a new instance, causing that it can not see the information that I load manually in the VO by query it them.
    for this case there is not need to use the next code, because the Rows are load with information by the query in the java code, this only will have to be made when inserting a new row .
        public void initM2mVo(){
            //get a handle to the View Object that we wish to initialize
            OAViewObject vo = (OAViewObject)this.getTascTransEqInstM2mVO1();
            if (!vo.isPreparedForExecution()) {
                vo.setMaxFetchSize(0);
                vo.executeQuery();
            //Create a blank Row
            Row row = vo.createRow();
            //Attach that blank row to the VO. Data will be fed into this row, when the user types into the fields
            vo.insertRow(row);
            //Set the status of the blank row to initialized. This tells OA Framework that record is blank and must not be included in DML
            //Operations until    changes are made to its underlying VO [via screen fields]
            row.setNewRowState(Row.STATUS_INITIALIZED);

Maybe you are looking for

  • How can I get Windows (v7 x64) to open in Dreamweaver (CS5) if I right click it?

    Hi How can I get Windows (v7 x64) to open in Dreamweaver (CS5) if I right click it? None of the normal mechanisms of setting an application to be the DEFAULT application for the .HTML file type seem to work... Extremely irritating. J

  • How can I remove a small handycam dvd from my dvd drive?

    My daughter put the small dvd from our handycam into the dvd drive of my macbook pro.  I can't get it out by pushing the eject button and don't know what else to do. 

  • Problem testing on localhost with vista 64 bit

    Hello, i have a new computer system on which vista 64 bit is installed. when i want to test my asp pages on localhost it does not work. when i test directly on the server it works fine. So there are no code mistakes. When i add a new site to dreamwea

  • Oracle Universal Records Management adapter with FAST ESP

    This is my first post on the forums and I have limited Oracle exposure. So if I'm posting in the incorrect spot or there are some other guidelines I need to observer, please let me know. I'm trying to figure out the possibility of leveraging the Orac

  • PHP put page-specific text in header file

    Hello!  I am creating a website, and I have created a header that includes a title bar (ALL of my pages are .php).  This code for the title bar is as follows:  <div id="titlebar"><table style="margin:0 auto;"><tr><td>TEST</td></tr></table></div> When