Applying different view criterias to af:query based different situations

Hi all;
Lets say i have 3 different view criterias ....and i want to apply only one of them to af:query based user's role....
I dont have an idea how to do that...My only clue is my supervisor mentioned to me i can use page definition to do that;
<searchRegion Criteria="DepartmentViewCriteria" Customizer="oracle.jbo.uicli.binding.JUSearchBindingCustomizer"
                  Binds="DepartmentView1Iterator" id="DepartmentViewCriteriaQuery"/>Can u help me on this matter please!
If post is too shallow to understand i can elaborate more...
jDeveloper 11.1.2.1.0
Oracle DB 11g

Create a custom public method in yr applicationmoduleImpl class. Get the viewcriteria of target vo or programmatically create yr viewcriteria.
Based on current loggedInUser role which can be access by ADFContext.getCurrent().getSecurityContext().getUserRoles(), u can apply specific viewcriteria on VO.
After that u can follow this link - http://dstas.blogspot.com/2010/09/adf-11g-methodaction-and-invokeaction.html, from +"We will now expose the method in the client interface of the AM"+ teopic.
At the end u will be able to execute this method from pagedef file, whenever u enter to this page.
Hope this helps.

Similar Messages

  • View Criteria in ADF Query Panel with Table-Class Cast Exception

    Hi,
    I am getting Class Cast Exception when using view criteria for ADF Query Panel with Table. The version I am using is 11g Release 1(11.1.1.2.0)
    Here is what I did:
    1. created a view criteria on a view object
    2. all are optional
    3. all are Strings
    3. Dragged the view criteria as a query component (ADF Query panel with Query table) on to the design layout
    and the error when I clicked the Search button is:
    javax.el.ELException: java.lang.ClassCastException: oracle.jbo.common.ViewCriteriaImpl cannot be cast to oracle.jbo.ViewCriteriaRow
    at com.sun.el.parser.AstValue.invoke(AstValue.java:161)
    at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:283)
    at org.apache.myfaces.trinidad.component.UIXComponentBase.broadcastToMethodExpression(UIXComponentBase.java:1289)
    at oracle.adf.view.rich.component.UIXQuery.broadcast(UIXQuery.java:115)
    at oracle.adf.view.rich.component.fragment.UIXRegion.broadcast(UIXRegion.java:148)
    at oracle.adf.view.rich.component.fragment.UIXRegion.broadcast(UIXRegion.java:148)
    at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl.broadcastEvents(LifecycleImpl.java:812)
    at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._executePhase(LifecycleImpl.java:292)
    at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:177)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292)
    at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at oracle.adf.model.servlet.ADFBindingFilter.doFilter(ADFBindingFilter.java:191)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at sni.foundation.facesextensions.filters.FoundationFilter.doFilter(FoundationFilter.java:92)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at oracle.adfinternal.view.faces.webapp.rich.RegistrationFilter.doFilter(RegistrationFilter.java:97)
    at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:420)
    at oracle.adfinternal.view.faces.activedata.AdsFilter.doFilter(AdsFilter.java:60)
    at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:420)
    at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._doFilterImpl(TrinidadFilterImpl.java:247)
    at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl.doFilter(TrinidadFilterImpl.java:157)
    at org.apache.myfaces.trinidad.webapp.TrinidadFilter.doFilter(TrinidadFilter.java:92)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:94)
    at java.security.AccessController.doPrivileged(Native Method)
    at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:313)
    at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:413)
    at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:138)
    at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:70)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at oracle.dms.wls.DMSServletFilter.doFilter(DMSServletFilter.java:326)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3592)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
    at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2202)
    at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2108)
    at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1432)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
    Caused by: java.lang.ClassCastException: oracle.jbo.common.ViewCriteriaImpl cannot be cast to oracle.jbo.ViewCriteriaRow
    at oracle.adfinternal.view.faces.model.binding.FacesCtrlSearchBinding._clearFilterCriteriaRows(FacesCtrlSearchBinding.java:4549)
    at oracle.adfinternal.view.faces.model.binding.FacesCtrlSearchBinding._addFilterCriteria(FacesCtrlSearchBinding.java:4603)
    at oracle.adfinternal.view.faces.model.binding.FacesCtrlSearchBinding.processQuery(FacesCtrlSearchBinding.java:423)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.sun.el.parser.AstValue.invoke(AstValue.java:157)
    Thanks
    Venkatesh

    Hi Frank.
    I'm using JDev 11.1.1.3.0 as you suggest the error is no longer present in the latest version.
    I can pick my query from the "Saved Search" pick list on the QueryPanel list of queries just fine, and it sets up the filter properly, but when I press the "Search" button, I get the same reported error...
    <RegistrationConfigurator><handleError> Server Exception during PPR, #1
    javax.el.ELException: java.lang.ClassCastException: oracle.jbo.common.ViewCriteriaImpl cannot be cast to oracle.jbo.ViewCriteriaRow
         at com.sun.el.parser.AstValue.invoke(AstValue.java:161)
         at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:283)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.broadcastToMethodExpression(UIXComponentBase.java:1303)
         at oracle.adf.view.rich.component.UIXQuery.broadcast(UIXQuery.java:115)
         at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl.broadcastEvents(LifecycleImpl.java:812)
         at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._executePhase(LifecycleImpl.java:292)
         at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:177)
         at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
         at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
         at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
         at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
         at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at oracle.adf.model.servlet.ADFBindingFilter.doFilter(ADFBindingFilter.java:191)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at oracle.adfinternal.view.faces.webapp.rich.RegistrationFilter.doFilter(RegistrationFilter.java:97)
         at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:420)
         at oracle.adfinternal.view.faces.activedata.AdsFilter.doFilter(AdsFilter.java:60)
         at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:420)
         at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._doFilterImpl(TrinidadFilterImpl.java:247)
         at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl.doFilter(TrinidadFilterImpl.java:157)
         at org.apache.myfaces.trinidad.webapp.TrinidadFilter.doFilter(TrinidadFilter.java:92)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:94)
         at java.security.AccessController.doPrivileged(Native Method)
         at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:313)
         at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:414)
         at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:138)
         at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:71)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at oracle.dms.wls.DMSServletFilter.doFilter(DMSServletFilter.java:330)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.doIt(WebAppServletContext.java:3684)
         at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3650)
         at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
         at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
         at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2268)
         at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2174)
         at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1446)
         at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
         at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
    Caused by: java.lang.ClassCastException: oracle.jbo.common.ViewCriteriaImpl cannot be cast to oracle.jbo.ViewCriteriaRow
         at oracle.adfinternal.view.faces.model.binding.FacesCtrlSearchBinding._clearFilterCriteriaRows(FacesCtrlSearchBinding.java:4588)
         at oracle.adfinternal.view.faces.model.binding.FacesCtrlSearchBinding._addFilterCriteria(FacesCtrlSearchBinding.java:4642)
         at oracle.adfinternal.view.faces.model.binding.FacesCtrlSearchBinding.processQuery(FacesCtrlSearchBinding.java:424)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:597)
         at com.sun.el.parser.AstValue.invoke(AstValue.java:157)
         ... 42 more

  • Set view criteria on af:query choice LOV field

    i have an af:query. one of the fields is a choice. the LOV for the choice come from a VO. i need to set view criteria for the query for the LOV for the choice. that is, the query for the values of the choice requires view criteria.
    moreover, that search criteria is only known by the view. because the hooks for the choice are set up entirely in the model, i don't see how it would ever be possible to use values from the view to define the query for the LOV for the choice.
    any ideas?

    Assuming that you can have a method at the AM level that sets the viewCriteria for your VO, you can drag this method to the page flow to be executed before you go into the query page - this will set the right condition for the list that needs to populate the LOV.
    Then the query component can use that VO as an LOV like this:
    http://blogs.oracle.com/shay/2009/12/adf_query_with_parameters_and_1.html

  • How to apply common View criteria for all LOV View programatically?

    Hi,
    In my application I use nearly 100 VOs, which will be mapped as LOV to some base VOs. These VOs are not only for LOV but also will be used directly in screen as read-only table. All these VOs contains EFF_BGN_DTand EFF_END_DT. Requirement is to display only the active records in VO.
    We don't want to crete view criteria at design time for each and every VO. Instead we want to have a base ViewObjectImpl class, create at runtime and add this common criteria with the existing view criterias (If any given, which are actually required for the developer for screen specific functionality).
    NOTE: As all of our VOs are custom java data source implemented and none of them have queries, we cannot use whereclause API but only ViewCriteria.
    We want to create a view criteria, that somewhat looks like the below condition.
               (     (TO_CHAR( EffBgnDt, 'yyyy-mm-dd') <= '2010-02-01' )
                 AND (TO_CHAR( EffEndDt, 'yyyy-mm-dd') >= '2010-02-01' )
                 OR
               (     (TO_CHAR( EffBgnDt, 'yyyy-mm-dd') <= '2010-02-01' )
                 AND (EffEndDt IS NULL )
               )Question:
    1. Which is the best place in ViewObject class, where I will be able to create common view criteria, include it with existing criterias.
    Thanks in Advance.
    Raghu

    No it is not working. I've tested. When i test your implementation in my sample using AM tester, it is not at all going inside getCriteriaItemClause(ViewCriteriaItem pViewCriteriaItem). For example when i say, AM.findViewObject(String ViewObjectName), followed by getEstimatedRowCount(), it should apply common filter criteria and give me the result.
    Given below required scenario:
    Department table:
    ID     DEPT_NAME     START_DATE     END_DATE
    1     Hr          1-Jan-2010     
    2     Purchasing     1-Jan-2010     31-Dec-2010
    3     Shipping             1-Jan-2010     31-Dec-2055
    4     Sales          1-Jan-2010     
    Common criteria to be applied (Programatically) : :bind_current_date between StartDate and EndDate or :bind_current_date >= StartDate and EndDate is null
    VO specific view criteria (may vary VO to VO): DeptName not equal to 'Sales'
    Expected Result:
    Case 1:
             a. DeptView = AM.findViewObject("DepartmentVO")
             b. DeptView.getEstimatedRowCount()
              It should give me 3 records (Hr, Shipping, Sales)
    Case 2:
             a. DeptView = AM.findViewObject("DepartmentVO")
             b. Create View Criteria 'NotSalesDeptVC', which should not list out Sales department.
             c. Apply NotSalesDeptVC using RowSet rowSet = (RowSet) this.findByViewCriteria(NotSalesDeptVC, -1, ViewObject.QUERY_MODE_SCAN_VIEW_ROWS)
             d. rowSet.getEstimatedRowCount()
              It is in-memory filtering, will not disturb the default rowset, should give me 2 records (Hr, Shipping)
    Case 3:
             a. DeptView = AM.findViewObject("DepartmentVO")
             b. Apply 'NotSalesDeptVC' to the default row set, followed by executeQuery
             c. DeptView.getEstimatedRowCount()
              It should give me 2 records. (Hr, Shipping)
    Case 4:
             a. DeptView = AM.findViewObject("DepartmentVO")
             b. Unapply the applied 'NotSalesDeptVC', followed by executeQuery
             c. DeptView.getEstimatedRowcount()
              It should give me 3 records (Hr, Shipping, Sales)Essence is at any point of time, User should always work with active records. He no need to write extra logic to retrieve only the active records but the base Viewobject impl should have. Note, All of my view objects are custom java data source implemented and not query based. Similarly it does not meant that all of my VOs will be having some business specific View criteria. Some VOs may have. Some VOs may not have. However basic active records criteria is applicable for all VOs

  • Programmtically Setting View Criteria in ADF Query Component

    I have created two view criterias for a View Object and used ADF Query component for searching. User can select any one of the View Criteria from "saved search" in ADF Query component. but i want to set it programmatically based on some business rules. How i can do that?

    No I don't want to set view criteria on search click. Actually I have ADF Query component on my page which is by default disabled. There are also some fields outside the query component on the value of which i enable ADF Query component and wants to set a particular ViewCriteria based on context. All ViewCriterias are defined and listed in "saved search" of ADF Query component but i don't want to allow user to select it but wants to application set it automatically based on context. For it i will be needed to set a particualar ViewCriteria for ADF Query component through code and then refresh ADF Query component to show newly set ViewCriteria. I know how to refresh query component or any other component through code but don't know how to set ViewCriteria on ADF Query component?

  • Different view of the same query between users

    Hi at all,
    I strongly hope you can help me.
    The problem that i have is that:
    I have a different view of a query inserted in a workbook respect the view of the same query that have other users.
    In particular I watch in my query 4 fixed characteristic of the query ( Cost center, order type , controlling area, fiscal variant ), below the free characteristic block  and before data table.
    Instead other user watch only 3 fixed characteristics ( Cost center, order type , controlling area ).
    This is a problem because in the workbook there is a macro that reads the data from a fixed raw. So that this macro doesn't' t work in my workbook.
    I would specify that the workbooks is called from rules and not from fevorites.
    Thank you very much for your attention!
    Bye
    Fabio

    Hi Erwan,
    i have the SAPGUI version 3500.8.044 and the item you describes :
    Bex menu ( Business explorer -> Change Query -> Change variable values )
    let me to change the values of input variables.
    The new layout query, after the input of the new values, has the same rows of the fixed query value ( fyscal variant too).
    Thank you for your answer..
    bye
    Fabio

  • Applying view criteria dynamically

    Hi,
    its urgent...... please guide me....
    in my application I want to execute the viewobject once using database than it should store in cache memory and after applying view criteria it should filter the data and give from the memory after clearing it it should return all the records from the cache memory no need to go database...
    I have used the following code......
    public void getViewdata()
                   ApplicationModule am = Configuration.createRootApplicationModule("model.HRAppModule", "HRAppModuleLocal");
            ViewObject viewobject = am.findViewObject("employeesVo1");
            viewobject.executeQuery();
                  System.out.println("no of records:\t" + viewobject.getRowCount());
            System.out.println("no of records:\t " + viewobject.getFetchedRowCount());
            System.out.println("no of records:\t" + viewobject.getEstimatedRowCount());
            System.out.println("Query Mode of viewobject:\t" + viewobject.getQueryMode());
            ViewCriteria Viewcriteria = null;
            Viewcriteria = viewobject.createViewCriteria();
            Viewcriteria.setCriteriaMode(Viewcriteria.CRITERIA_MODE_QUERY | Viewcriteria.CRITERIA_MODE_CACHE);
            System.out.println("Viewcriteria mode is:\t" + Viewcriteria.getCriteriaMode());
            viewobject.setQueryMode(viewobject.QUERY_MODE_SCAN_VIEW_ROWS);
            System.out.println("Query Mode of viewobject:\t" + viewobject.getQueryMode());
            Viewcriteria.setConjunction(Viewcriteria.VC_CONJ_AND);
            ViewCriteriaRow Viewcriteriarow = Viewcriteria.createViewCriteriaRow();
            ViewCriteriaRow Viewcriteriarow1 = Viewcriteria.createViewCriteriaRow();
            Viewcriteriarow.setAttribute("ManagerId", this.getMgr());
            Viewcriteriarow.setConjunction(Viewcriteriarow.VC_CONJ_AND);
            Viewcriteriarow1.setAttribute("Salary", this.getSal());
            Viewcriteriarow1.setConjunction(Viewcriteriarow.VC_CONJ_AND);
            Viewcriteria.add(Viewcriteriarow);
            Viewcriteria.add(Viewcriteriarow1);
            if (Viewcriteria.hasData())         {
                System.out.println("Query Mode of viewobject:\t" + viewobject.getQueryMode());
                viewobject.applyViewCriteria(Viewcriteria);
                viewobject.executeQuery();
                System.out.println("no of records after apply view criteria:\t" + viewobject.getRowCount());
                System.out.println("no of records after apply view criteria:\t" + viewobject.getFetchedRowCount());
                System.out.println("no of records after apply view criteria:\t" + viewobject.getEstimatedRowCount());
                System.out.println(" view criteria where clause:\t" + viewobject.getViewCriteria());
                           System.out.println("Viewcriteria mode is:\t" + Viewcriteria.getCriteriaMode());
                System.out.println("Query Mode of viewobject:\t" + viewobject.getQueryMode());
                System.out.println("Query :\t" + viewobject.getQuery());
            else
                          Viewcriteria.removeAllElements();
                viewobject.applyViewCriteria(Viewcriteria);
                System.out.println("Viewcriteria mode is:\t" + Viewcriteria.getCriteriaMode());
                 System.out.println(" view criteria where clause:\t" + viewobject.getViewCriteria());
                           System.out.println("Query :\t" + viewobject.getQuery());
                viewobject.executeQuery();
                System.out.println("no of records after apply view criteria:\t" + viewobject.getRowCount());
                System.out.println("no of records after apply new view criteria:\t" + viewobject.getFetchedRowCount());
                System.out.println("no of records after applying new view criteria:\t" + viewobject.getEstimatedRowCount());
                System.out.println("Viewcriteria mode is:\t" + Viewcriteria.getCriteriaMode());
                System.out.println("Query Mode of viewobject:\t" + viewobject.getQueryMode());
            }Edited by: user13385388 on Jan 21, 2011 6:59 AM

    Hi,
    I'm not able to get that so I have put all the things u go through it tell me the solution please its urgent...... please guide me....
    in my application I want to execute the viewobject once using database than it should store in cache memory and after applying view criteria it should filter the data and give from the memory after clearing it it should return all the records from the cache memory no need to go database...
    I have used the following code......
    backing bean code
    public class Beanclass
        private String deptid;
        private String mgrid;
        private String sal;
        public void setDeptid(String deptid)
            this.deptid = deptid;
        public String getDeptid()
            return deptid;
        public void setSal(String sal)
            this.sal = sal;
        public String getSal()
            return sal;
        public String ROView_action()
            // Add event code here...
            FacesContext facesContext = FacesContext.getCurrentInstance();
            Application app = facesContext.getApplication();
            ExpressionFactory elFactory = app.getExpressionFactory();
            ELContext elContext = facesContext.getELContext();
            ValueExpression valueExp = elFactory.createValueExpression(elContext, "#{bindings}", Object.class);
            BindingContainer bindings = (BindingContainer) valueExp.getValue(elContext);
            DCIteratorBinding iter = (DCIteratorBinding) bindings.get("EmPdetails1Iterator"); //("employeesVo1Iterator");
            ViewObject viewobject = iter.getViewObject();
            System.out.println("no of records without applying view criteria value:\t" + viewobject.getRowCount());
            System.out.println("no of records without applying view criteria value:\t " + viewobject.getFetchedRowCount());
            System.out.println("no of records without applying view criteria value:\t" + viewobject.getEstimatedRowCount());
            System.out.println("Query Mode of viewobject before applying view criteria:\t" + viewobject.getQueryMode());
            ViewCriteria Viewcriteria = null;
            Viewcriteria = viewobject.createViewCriteria();
            Viewcriteria.setCriteriaMode(Viewcriteria.CRITERIA_MODE_CACHE);
            //Viewcriteria.setCriteriaMode(Viewcriteria.CRITERIA_MODE_QUERY | Viewcriteria.CRITERIA_MODE_CACHE);
            System.out.println("Viewcriteria mode is:\t" + Viewcriteria.getCriteriaMode());
            viewobject.setQueryMode(viewobject.QUERY_MODE_SCAN_VIEW_ROWS);
            System.out.println("Query Mode of viewobject:\t" + viewobject.getQueryMode());
            Viewcriteria.setConjunction(Viewcriteria.VC_CONJ_AND);
            ViewCriteriaRow Viewcriteriarow = Viewcriteria.createViewCriteriaRow();
            ViewCriteriaRow Viewcriteriarow1 = Viewcriteria.createViewCriteriaRow();
            ViewCriteriaRow Viewcriteriarow2 = Viewcriteria.createViewCriteriaRow();
            Viewcriteriarow.setAttribute("DepartmentId", this.getDeptid());
            Viewcriteriarow.setConjunction(Viewcriteriarow.VC_CONJ_AND);
            Viewcriteriarow1.setAttribute("ManagerId", this.getMgrid());
            Viewcriteriarow1.setConjunction(Viewcriteriarow.VC_CONJ_AND);
            Viewcriteriarow2.setAttribute("Salary", this.getSal());
            Viewcriteriarow2.setConjunction(Viewcriteriarow.VC_CONJ_AND);
            Viewcriteria.add(Viewcriteriarow);
            Viewcriteria.add(Viewcriteriarow1);
            Viewcriteria.add(Viewcriteriarow2);
            viewobject.applyViewCriteria(Viewcriteria);
            viewobject.executeQuery();
            System.out.println("no of records after applying view criteria value:\t" + viewobject.getRowCount());
            System.out.println("no of records after applying view criteria value:\t" + viewobject.getFetchedRowCount());
            System.out.println("no of records after applying view criteria value:\t" + viewobject.getEstimatedRowCount());
            System.out.println("Viewcriteria mode is:\t" + Viewcriteria.getCriteriaMode());
            System.out.println("Query Mode of viewobject:\t" + viewobject.getQueryMode());
            Viewcriteria.removeAllElements();
            viewobject.applyViewCriteria(Viewcriteria);
            //  viewobject.setQueryMode(viewobject.QUERY_MODE_SCAN_DATABASE_TABLES);
            viewobject.executeQuery();
            System.out.println("no of records after removing view criteria:\t" + viewobject.getRowCount());
            System.out.println("no of records after removing view criteria:\t" + viewobject.getFetchedRowCount());
            System.out.println("no of records after removing view criteria:\t" + viewobject.getEstimatedRowCount());
            System.out.println("Viewcriteria mode is:\t" + Viewcriteria.getCriteriaMode());
            System.out.println("Query Mode of viewobject:\t" + viewobject.getQueryMode());
            return null;
    }Jspx code
    <?xml version='1.0' encoding='UTF-8'?>
    <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1"
              xmlns:f="http://java.sun.com/jsf/core"
              xmlns:h="http://java.sun.com/jsf/html"
              xmlns:af="http://xmlns.oracle.com/adf/faces/rich">
      <jsp:directive.page contentType="text/html;charset=UTF-8"/>
      <f:view>
        <af:document id="d1">
          <af:messages id="m1"/>
          <af:form id="f1">
            <af:pageTemplate viewId="/oracle/templates/threeColumnTemplate.jspx"
                             id="pt1">
              <f:facet name="center">
                <af:panelGroupLayout id="pgl2" layout="vertical"
                                     inlineStyle="width:1327px;">
                  <af:table value="#{bindings.EmPdetails1.collectionModel}"
                            var="row" rows="#{bindings.EmPdetails1.rangeSize}"
                            emptyText="#{bindings.EmPdetails1.viewable ? 'No data to display.' : 'Access Denied.'}"
                            fetchSize="#{bindings.EmPdetails1.rangeSize}"
                            rowBandingInterval="0"
                            selectedRowKeys="#{bindings.EmPdetails1.collectionModel.selectedRow}"
                            selectionListener="#{bindings.EmPdetails1.collectionModel.makeCurrent}"
                            rowSelection="single" id="t1" partialTriggers="::cb1"
                            width="1290">
                    <af:column sortProperty="DepartmentId" sortable="true"
                               headerText="#{bindings.EmPdetails1.hints.DepartmentId.label}"
                               id="c5">
                      <af:outputText value="#{row.DepartmentId}" id="ot11">
                        <af:convertNumber groupingUsed="false"
                                          pattern="#{bindings.EmPdetails1.hints.DepartmentId.format}"/>
                      </af:outputText>
                    </af:column>
                    <af:column sortProperty="DepartmentName" sortable="true"
                               headerText="#{bindings.EmPdetails1.hints.DepartmentName.label}"
                               id="c10">
                      <af:outputText value="#{row.DepartmentName}" id="ot3"/>
                    </af:column>
                    <af:column sortProperty="EmployeeId" sortable="true"
                               headerText="#{bindings.EmPdetails1.hints.EmployeeId.label}"
                               id="c1">
                      <af:outputText value="#{row.EmployeeId}" id="ot9">
                        <af:convertNumber groupingUsed="false"
                                          pattern="#{bindings.EmPdetails1.hints.EmployeeId.format}"/>
                      </af:outputText>
                    </af:column>
                    <af:column sortProperty="FirstName" sortable="true"
                               headerText="#{bindings.EmPdetails1.hints.FirstName.label}"
                               id="c9">
                      <af:outputText value="#{row.FirstName}" id="ot2"/>
                    </af:column>
                    <af:column sortProperty="LastName" sortable="true"
                               headerText="#{bindings.EmPdetails1.hints.LastName.label}"
                               id="c3">
                      <af:outputText value="#{row.LastName}" id="ot12"/>
                    </af:column>
                    <af:column sortProperty="Email" sortable="true"
                               headerText="#{bindings.EmPdetails1.hints.Email.label}"
                               id="c11">
                      <af:outputText value="#{row.Email}" id="ot10"/>
                    </af:column>
                    <af:column sortProperty="PhoneNumber" sortable="true"
                               headerText="#{bindings.EmPdetails1.hints.PhoneNumber.label}"
                               id="c6">
                      <af:outputText value="#{row.PhoneNumber}" id="ot7"/>
                    </af:column>
                    <af:column sortProperty="HireDate" sortable="true"
                               headerText="#{bindings.EmPdetails1.hints.HireDate.label}"
                               id="c7">
                      <af:outputText value="#{row.HireDate}" id="ot1">
                        <af:convertDateTime pattern="#{bindings.EmPdetails1.hints.HireDate.format}"/>
                      </af:outputText>
                    </af:column>
                    <af:column sortProperty="JobId" sortable="true"
                               headerText="#{bindings.EmPdetails1.hints.JobId.label}"
                               id="c4">
                      <af:outputText value="#{row.JobId}" id="ot5"/>
                    </af:column>
                    <af:column sortProperty="Salary" sortable="true"
                               headerText="#{bindings.EmPdetails1.hints.Salary.label}"
                               id="c12">
                      <af:outputText value="#{row.Salary}" id="ot8">
                        <af:convertNumber groupingUsed="false"
                                          pattern="#{bindings.EmPdetails1.hints.Salary.format}"/>
                      </af:outputText>
                    </af:column>
                    <af:column sortProperty="CommissionPct" sortable="true"
                               headerText="#{bindings.EmPdetails1.hints.CommissionPct.label}"
                               id="c2">
                      <af:outputText value="#{row.CommissionPct}" id="ot6">
                        <af:convertNumber groupingUsed="false"
                                          pattern="#{bindings.EmPdetails1.hints.CommissionPct.format}"/>
                      </af:outputText>
                    </af:column>
                    <af:column sortProperty="ManagerId" sortable="true"
                               headerText="#{bindings.EmPdetails1.hints.ManagerId.label}"
                               id="c8">
                      <af:outputText value="#{row.ManagerId}" id="ot4">
                        <af:convertNumber groupingUsed="false"
                                          pattern="#{bindings.EmPdetails1.hints.ManagerId.format}"/>
                      </af:outputText>
                    </af:column>
                  </af:table>
                </af:panelGroupLayout>
              </f:facet>
              <f:facet name="header"/>
              <f:facet name="start">
                <af:panelGroupLayout id="pgl1" layout="vertical">
                  <af:inputText label="Department Id" id="it1"
                                value="#{Viewcriteriabackingbean.deptid}"/>
                  <af:inputText label="Salary" id="it2"
                                value="#{Viewcriteriabackingbean.sal}"/>
                  <af:commandButton text="ApplyviewcriteriaUsingIteratorBindingforROView" id="cb1"
                                    partialTriggers="t1"
                                    action="#{Viewcriteriabackingbean.ROView_action}"/>
                </af:panelGroupLayout>
              </f:facet>
              <f:facet name="branding"/>
              <f:facet name="copyright"/>
              <f:facet name="status"/>
              <f:attribute name="startColumnSize" value="200"/>
            </af:pageTemplate>
          </af:form>
        </af:document>
      </f:view>
      <!--oracle-jdev-comment:preferred-managed-bean-name:Viewcriteriabackingbean-->
    </jsp:root>output:
    its returning the filtered records based on deptid and sal after removing view criteria its not returning the all the records its returns filtered records only.
    Edited by: user13385388 on Jan 25, 2011 1:58 AM

  • LOV view criteria missing in af:query field when AM pooling is disabled

    Hi all,
    Again, another strange behaviour with fields in af:query when AM pooling is disabled.
    I have a field with a LOV in the af:query area. This LOV has a view criteria that involves a bind variable. In the VO, the view accessor for this LOV applies the view criteria and sets the bind variable. When AM pooling is disabled, double clicking a row or clicking the OK button in the LOV window removes the where clause defined by the view criteria. When activation occurs, the bind variable still exists but the framework doesn't know where to apply it...
    Any help will be very appreciated,
    Thanks
    JDeveloper 11.1.1.3.0 with ADF BC
    We've just realised that this behaviour occurs even when pooling is enabled. So this is becoming now a serious problem.
    The scenario is as following: We have two LOVs in the search area (af:query). One of them is dependent on the other. Then, this second LOV has a view criteria and a bind variable representing the value selected for the first LOV. The query for the second LOV is filtered properly, but once a value has been selected and the LOV window dismissed, nothing is returned to the field.
    We have observed that SecondLovViewImpl.executeQueryForCollection() method executes twice:
    1. When LOV is opened: here, the bind variable is correctly setted.
    2. When a row in the LOV table is selected: here, the bind variable is reset to null.
    The log says (in Spanish):
    <OracleSQLBuilderImpl><bindParamValue> [46062] Binding null of type 12 for "bindProgram"
    <FacesCtrlLOVBinding$ListOfValuesModelImpl><_getRowFromSelectedRowKey> ADFv: No se ha encontrado ninguna fila para rowKey: [oracle.jbo.Key[P1 SP11 ]].
    I would be very grateful if somebody asked me... even for saying "this is nonsense", "this is a known bug", "cascading LOVs are not supported by af:query", or anything else... If a code snippet is required, I'll put it as well.
    Thanks in advance
    Edited by: Marge on 02-sep-2010 5:41

    Hi,
    there are two bugs associated with bind variables in successors that I am aware of. One of them is supposed to be fixed in the next patch set, another one is still open. However, both problems were found with AM pooling enabled as well, so I don't know this is the same problem (though it sounds like). If you can, I suggest to create a reproducible testcase on one of the Oracle database schema, like HR or OE, and file a bug. If you don't have a time for or access to support, send the test case in a zip file (rename ".zip" to ".unzip") to the mail Id you find in my OTN profile. However, be aware that when I file the bug then it wont be visible for you, nor can it be escalated on your behalf. Anyway, at least it would get filed
    Frank

  • Issue while applying View Criteria

    Hi all,
    We have a taskflow which has View Criteria as the input parameter.
    When the taskflow is invoked, the View Criteria is set in the pageFlowScope.
    Requirement is that we need to apply this view criteria to a View object.
    When we applied the view criteria to the View object and executed the query, an SQLException is being thrown
    (Missing IN or OUT Parameter at index::1)
    In the ManagedBean's method, verified if the view criteria has bindVariables:
    VariableValueManager variableValueManage = vc.ensureVariableManager();
    System.err.println("Name :"+variableValueManage.getVariableValue("pName"));
    Confirmed that the bind variable is carrying the appropriate value.
    This View Criteria when applied to the corresponding VO and executed, java.sql.SQLException is thrown:
    ViewObjectImpl testVO = gettestVO() ;
    ViewCriteriaManager vcm = testVO.getViewCriteriaManager();
    vcm.applyViewCriteria(quickSearchViewCriteria);
    testVO.executeQuery();     
    Exception: java.sql.SQLException: Missing IN or OUT parameter at index:: 1     
    In the query, the bind Variable "pName" is not binded, though the view criteria has the value.
    Thanks in advance,
    Raghu

    Hi all,
    We have a taskflow which has View Criteria as the input parameter.
    When the taskflow is invoked, the View Criteria is set in the pageFlowScope.
    Requirement is that we need to apply this view criteria to a View object.
    When we applied the view criteria to the View object and executed the query, an SQLException is being thrown
    (Missing IN or OUT Parameter at index::1)
    In the ManagedBean's method, verified if the view criteria has bindVariables:
    VariableValueManager variableValueManage = vc.ensureVariableManager();
    System.err.println("Name :"+variableValueManage.getVariableValue("pName"));
    Confirmed that the bind variable is carrying the appropriate value.
    This View Criteria when applied to the corresponding VO and executed, java.sql.SQLException is thrown:
    ViewObjectImpl testVO = gettestVO() ;
    ViewCriteriaManager vcm = testVO.getViewCriteriaManager();
    vcm.applyViewCriteria(quickSearchViewCriteria);
    testVO.executeQuery();     
    Exception: java.sql.SQLException: Missing IN or OUT parameter at index:: 1     
    In the query, the bind Variable "pName" is not binded, though the view criteria has the value.
    Thanks in advance,
    Raghu

  • Issue in Creating an "EXISTS" View Criteria

    Hi,
    Jdev -11.1.1.5.0
    Following is the usecase to apply 'Exists' View criteria.
    We have one NodesEO and two VOs (NodesVO & TopicsVO) which are from same NodesEO.
    NodesVO=> Used to form tree structure . Filtering topics with topic_type is null
    SELECT * FROM MD_TOPICS NodesEO WHERE NodesEO.TOPIC_TYPE is null and doc_name is not null ORDER BY NodesEO.DOC_NAME
    TopicsVO=> Used to prepare ADF table based on selected tree nodes. Filtering nodes with topic_type is not null
    SELECT * FROM MD_TOPICS NodesEO WHERE NodesEO.TOPIC_TYPE is not null
    Issue: As of now, iam preparing list of selected nodes from tree and then sending the comma separated string to IN clause.
    As there is limitation for maximum number of expressions in a list is 1000.
    Iam trying to Create an 'EXISTS' View Criteria. So i got reference to implement the same.
    http://one-size-doesnt-fit-all.blogspot.in/2011/02/adf-bc-creating-exists-view-criteria.html
    Look like, we need to have ViewLink to create EXISTS VC. I tried to create VL from TopicsVOToNodesVO. At the end, I dragged the TopicsVO instance as a table on jsff.
    Here iam unable to filter the rows from NodesVO based on checkbox status.
    Iam using transient attribute (checkboxConfirmedStatus- String, checkboxCOnfirmed- boolean). Here i've applied VC on transient attribute by selecting 'In memory' option.
    At run time, iam getting exception.
    <QueryCollection> <buildResultSet> [1729] java.sql.SQLException: Attempt to set a parameter name that does not occur in the SQL: bind_checkboxConfirmed
    Please suggest any option to filter the rows from NodesVO based on checkbox (transient attribute) status before applying 'Exists' clause.
    Let me know, if I am in wrong process.
    Thanks in advance,
    Samba.

    Can some one suggest on our issue?
    Thanks,
    Samba.

  • Programmatically adding two view criteria

    Hello,
    I am using Jdev version 12.1.2.0.0 and i am trying to apply two view criteria to a view object:
    ViewObject vo = ...
    ViewCriteria vc1 = vo.createViewCriteria();
    ViewCriteriaRow vcr1 = vc1.createViewCriteriaRow();
    vcr1.setAttribute(smt,smt);
    vc1.add(vcr1);
    ViewCriteria vc2 = vo.createViewCriteria();
    ViewCriteriaRow vcr2 = vc2.createViewCriteriaRow();
    vcr2.setAttribute(smt,smt);
    vc2.add(vcr2);
    vo.applyViewCriteria(vc1);
    vo.applyViewCriteria(vc2,true);
    vo.executeQuery();
    I don't know why, but it executes just the second view criteria.
    Thank you in advanced.

    From the dos it looks like you add multiple rows to one view criteria but can only apply one view criteria
    public static void demoCriteria(ApplicationModule appMod)
      // Create and populate criteria rows to support query-by-example.
      ViewObject empView = appMod.createViewObject("Emp", "mypackage1.EmpView");
      ViewCriteria vc = empView.createViewCriteria();
      ViewCriteriaRow vcRow = vc.createViewCriteriaRow();
      // ViewCriteriaRow attribute name is case-sensitive.
      // ViewCriteriaRow attribute value requires operator and value.
      // Note also single-quotes around string value.
      ViewCriteriaItem jobItem = vcRow.ensureCriteriaItem("Job");
      jobItem.setOperator("=");
      jobItem.getValues().get(0).setValue("MANAGER");
      vc.add(vcRow);
      vcRow = vc.createViewCriteriaRow();
      ViewCriteriaItem salItem = vcRow.ensureCriteriaItem("Sal");
      salItem.setOperator(">");
      salItem.getValues().get(0).setValue(new Integer(2500));
      vc.add(vcRow);
      empView.applyViewCriteria(vc);
      // Multiple rows are OR-ed in WHERE clause.
      System.out.println("Demo View Criteria");
      // Should print employees that are MANAGER or have Sal > 2500
      QueryDemo.printViewObject(empView);
    Timo

  • OBIEE report based on same criteria but different view based on filter

    Hi,
    I am trying to create a report in OBIEE 11.1.1.5 where In the same report using the same criteria, I can have different views which applies different filter.
    Suppose, I have a report criteria as
    Dim1, Dim2, Measure1, Measure 2.
    I want to create two pivot view based on the same data.
    One view will be showing data Dim1="Value1". The other view is duplicate of this view but will show data Dim1="Value2".
    Is it possible in OBIEE?
    basically what I want is work on the same dataset but different representation and show them in the same report. Please share your opinion.
    Regards,
    Tanveer.

    Hi,
    You create a new dim dummy column in criteria and in presentation level create new pivot table view use this dummy dimension column and filter with dim1=value2.
    give updates on this.
    Mark if Helpful/correct.
    Thanks.

  • Applying distinct to a query search panel view criteria

    I have a VO that returns multiple instances of the same project code...In the ADF query panel I only need to display a distinct set of these project codes...
    When building a simple ADF query panel based on a view criteria declaratively the project codes will repeat themselves in the select one choice component of the query panel.
    What is the best way to apply a distinct to a view criteria of this sort?
    Thanks in advance.

    Hi
    Edit query- Select Sql Mode to "Expert" and manually change the query.
    M Niaz

  • Is it even possible to dynamically apply view criteria in an ADF Web App?

    This is one of those situations where something that should take an hour ends up taking days.
    * I have a view.
    * The view has Bind Variables associated with it.
    * The view has View Criteria associated with it.
    * Each of the View Criteria use different Bind Variables.
    * I have a search criteria input page that receives from the user what will ultimately be used to set the bind variables.
    * I have a search results page that uses the view to display a table.
    * I have the code that dynamically sets view criteria and parameters. It is based on the following:
    http://download.oracle.com/docs/cd/E15523_01/web.1111/b31974/bcadvvo.htm#BCGFHAGA
    * This code works great, until the iterator associated with the table binding to the view is initialized. At that time, the view is reset to its defaults, and all of my code's doings are discarded. How do I know this? Because I have gone so far as to run my code that sets view criteria and binding variables dynamically in a phase event handler for the search results page in the render response phase. There is no other point at which to dynamically modify the view.
    This is turning into a situation where it seems I will need 5 different views and 5 different pages in order to show a single set of query results. I cannot get dynamically applied view criteria to work in an ADF web app. Has anyone else done it? Can anyone relate to this? Are there any other suggestions before I conclude that it's not possible for this framework to handle this simple scenario?
    Thanks

    There must be a setting or something that I am still missing here. If I write code just like this and make sure it is executed, I still only see the results of my view executed without the view criteria applied using the default bind variable values that I supplied in the view object.
    It's like the fact that I set the bind variables, the view criteria, and executed the view query programmatically is lost on the iterator -- it's like it never happened. What setting is used to ensure that the iterator uses the outcome of what I executed programmatically? There has to be a critical set or setting that I am missing.
    Here is the iterator and search region definitions defined in the page def "executables" section:
      <executables>
         <iterator Binds="CustomSearchView1" RangeSize="25"
                  DataControl="AppModuleDataControl"
                  id="CustomSearchView1Iterator"/>
        <searchRegion Binds="CustomSearchView1Iterator"
                      Customizer="oracle.jbo.uicli.binding.JUSearchBindingCustomizer"
                      id="CustomSearchView1Query"/>
        </executables>Here's the "tree" binding in the page def file:
      <bindings>
       <tree IterBinding="CustomSearchView1Iterator" id="CustomSearchView1">
          <nodeDefinition DefName="Model.CustomSearchView" Name="CustomSearchView10">
            <AttrNames>
              <Item Value="CustomId"/>
              <Item Value="CustomProjectNumber"/>
              <Item Value="CustomName"/>
              <Item Value="CustomStatus"/>
              <Item Value="CustomStatusDate"/>
            </AttrNames>
          </nodeDefinition>
        </tree>
      </bindings>In an effort to take page flow out of this mess, I had modified this to include the search criteria and search results on a single page. So, I now have a "Search" button. When the "Search" button is clicked, the action method does the following:
        public String searchActionListener ()
              // Get search criteria from select one choice and text input controls.
              AppModule appModule =
                    ( AppModule ) Configuration.createRootApplicationModule (
                        "Model.AppModule",
                        "AppModuleLocal");
              appModule.customSearch( searchCriteria1,
                                                   searchCriteria2,
                                                   searchCriteria3 );
        }In my application module this translates to:
        public void customNoticeSearch ( String searchCriteria1, String searchCriteria2, String searchCriteria3)
           CustomSearchViewImpl searchViewImp =
               ( CustomSearchViewImpl ) this.getCustomSearchView1 ();
           searchViewImp.customExecuteQuery ( searchCriteria1, searchCriteria2, searchCriteria3);
        }Finally, in my custom view object implementation code:
        public void customExecuteQuery ( String searchCriteria1, String searchCriteria2, String searchCriteria3 )
            // Set-up the parameters that are part of the core query.
            this.setp_searchCriteria1( searchCriteria1);
            this.setp_searchCriteria2( searchCriteria2);
            if ( searchCriteria3 != null )
                ViewCriteriaManager vcm = this.getViewCriteriaManager();
                ViewCriteria vc = vcm.getViewCriteria ( "WithLastCriteria" );
                this.setp_searchCriteria3( new Number ( searchCriteria3 ) );
                this.applyViewCriteria( vc );
            System.out.println ("This is fun.");
            this.executeQuery();
        }This code executes, but the results table is empty, and I know that there are results, because I can execute use execute with params to execute the base query and get the correct results back.
    Thanks for taking a look at this.

  • How can I use a single query panel with two view criteria?

    Hi all,
    I have a requirement to allow users to change the "display mode" on a search results tree table for an advanced search page. What this will do is change the structure of how the data is laid out. In one case the tree table is 3 levels deep, in the other case it's only 2 with different data being at the root node.
    What I've done so far:
    1) I exposed the data relationship for these two ways of viewing the data in the application module's data model.
    2)  I created a view criteria in the two view objects that are at the root of the relationships, where (for simplicity sake) I'm only comparing a single field.
    This is in one view object:
    <ViewCriteria
        Name="PartsVOCriteria"
        ViewObjectName="gov.nasa.jpl.ocio.qars.model.views.PartsVO"
        Conjunction="AND">
        <Properties>... </Properties>
        <ViewCriteriaRow
          Name="vcrow23"
          UpperColumns="1">
          <ViewCriteriaItem
            Name="PartDiscrepantItemsWithIRVO"
            ViewAttribute="PartDiscrepantItemsWithIRVO"
            Operator="EXISTS"
            Conjunction="AND"
            IsNestedCriteria="true"
            Required="Optional">
            <ViewCriteria
              Name="PartDiscrepantItemsWithIRVONestedCriteria"
              ViewObjectName="gov.nasa.jpl.ocio.qars.model.views.PartDiscrepantItemsWithIRVO"
              Conjunction="AND">
              <ViewCriteriaRow
                Name="vcrow26"
                UpperColumns="1">
                <ViewCriteriaItem
                  Name="InspectionRecordNumber"
                  ViewAttribute="InspectionRecordNumber"
                  Operator="="
                  Conjunction="AND"
                  Value=""
                  Required="Optional"/>
              </ViewCriteriaRow>
            </ViewCriteria>
          </ViewCriteriaItem>
        </ViewCriteriaRow>
      </ViewCriteria>
    and this is in the other view object:
    <ViewCriteria
          Name="IRSearchCriteria"
          ViewObjectName="gov.nasa.jpl.ocio.qars.model.views.InspectionRecordVO"
          Conjunction="AND">
          <Properties>... </Properties>
          <ViewCriteriaRow
             Name="vcrow7"
             UpperColumns="1">
             <ViewCriteriaItem
                Name="InspectionRecordNumber"
                ViewAttribute="InspectionRecordNumber"
                Operator="="
                Conjunction="AND"
                Required="Optional"/>
          </ViewCriteriaRow>
       </ViewCriteria>
    3) I had a query panel and tree table auto-generated by dragging the data control for ONE of the view object data relationship that's exposed in the app module. Then I created a second query panel and tree table the same way but using the data control for the other. I'm hiding one of the query panels permanently and toggling the visibility of the tree tables based on the display mode the user chooses. Both tables have separate bindings and iterators.
    This is a portion of the page definition:
    <executables>
        <variableIterator id="variables"/>
        <searchRegion Criteria="IRSearchCriteria"
                      Customizer="oracle.jbo.uicli.binding.JUSearchBindingCustomizer"
                      Binds="InspectionRecordVOIterator"
                      id="IRSearchCriteriaQuery"/>
        <iterator Binds="InspectionRecordVO" RangeSize="25"
                  DataControl="QARS_AppModuleDataControl"
                  id="InspectionRecordVOIterator" ChangeEventPolicy="ppr"/>
        <iterator Binds="Root.QARS_AppModule.PartsVO1"
                  DataControl="QarsMasterAppModuleDataControl" RangeSize="25"
                  id="PartsVO1Iterator"/>
        <searchRegion Criteria="PartsVOCriteria"
                      Customizer="oracle.jbo.uicli.binding.JUSearchBindingCustomizer"
                      Binds="PartsVO1Iterator" id="PartsVOCriteriaQuery"/>
      </executables>
    4) I've created a custom queryListener to delegate the query event.
    This is in my advanced search jsp page:
    <af:query id="qryId1" headerText="Search" disclosed="true"
                      value="#{bindings.IRSearchCriteriaQuery.queryDescriptor}"
                      model="#{bindings.IRSearchCriteriaQuery.queryModel}"
                      queryListener="#{pageFlowScope.SearchBean.doSearch}"
                      queryOperationListener="#{bindings.IRSearchCriteriaQuery.processQueryOperation}"
                      resultComponentId="::resId2" maxColumns="1"
                      displayMode="compact" type="stretch"/>
    This is in my backing bean:
    public void doSearch(QueryEvent queryEvent) {
          String bindingName = flag
             ? "#{bindings.IRSearchCriteriaQuery.processQuery}"
             : "#{bindings.PartsVOCriteriaQuery.processQuery}";
          invokeMethodExpression(bindingName, queryEvent);
       private void invokeMethodExpression(String expr, QueryEvent queryEvent) {
          FacesContext fctx = FacesContext.getCurrentInstance();
          ELContext elContext = fctx.getELContext();
          ExpressionFactory eFactory = fctx.getApplication().getExpressionFactory();
          MethodExpression mexpr =
             eFactory.createMethodExpression(elContext, expr, Object.class, new Class[] { QueryEvent.class });
          mexpr.invoke(elContext, new Object[] { queryEvent });
    When no inspection record number (the only search field so far)  is supplied in the query panel, then it behaves correctly. Namely, the tree tables shows all search results. However, when an inspection record number is supplied the tree table that was created with the query panel in use (remember there are two query panels, one of them is hidden) shows a single result (this is correct) while the other tree table (the one with the hidden query panel that isn't in use) shows all results (this is NOT correct).
    Is what I'm trying to accomplish even doable? If so, what am I missing?
    I'm using JDeveloper 11.1.1.7
    Thanks,
    Bill

    I ended up keeping one query panel permanently visible and the other permanently hidden. When performing a search using the table that has the hidden query panel, I seed the query descriptor for the hidden query panel using the visible query panel's query descriptor and then delegate the request:
       public void doSearch(QueryEvent queryEvent) {
          String bindingName = null;
          if(isIrTableRendered()) {
             bindingName = "#{bindings.IRSearchCriteriaQuery.processQuery}";
          } else {
             seedPartsQueryDescriptor();
             bindingName = "#{bindings.PartsVOCriteriaQuery.processQuery}";
             queryEvent = new QueryEvent(partsQuery, partsQuery.getValue());
          invokeMethodExpression(bindingName, queryEvent);
       private void seedPartsQueryDescriptor() {
          ConjunctionCriterion criterion = irQuery.getValue().getConjunctionCriterion(); 
          for(Criterion criteria : criterion.getCriterionList()) {
             AttributeCriterion attributeCriteria = (AttributeCriterion)criteria;
             List values = attributeCriteria.getValues();
             String qualifiedName = attributeCriteria.getAttribute().getName();
             int indexOfDot = qualifiedName.lastIndexOf(".");
             String name = indexOfDot < 0
                ? qualifiedName
                : qualifiedName.substring(indexOfDot + 1);
             ConjunctionCriterion partsCriterion =
                partsQuery.getValue().getConjunctionCriterion();
             for (Criterion partsCriteria : partsCriterion.getCriterionList()) {
                AttributeCriterion partsAttributeCriteria =
                   (AttributeCriterion) partsCriteria;
                String partsQualifiedName =
                   partsAttributeCriteria.getAttribute().getName();
                if (partsQualifiedName.endsWith(name)) {
                   partsAttributeCriteria.setOperator(attributeCriteria.getOperator());
                   List partsValues = partsAttributeCriteria.getValues();
                   partsValues.clear();
                   for (int i = 0, count = values.size(); i < count; i++) {
                      partsValues.set(i, values.get(i));
       private void invokeMethodExpression(String expr, QueryEvent queryEvent) {
          FacesContext facesContext = FacesContext.getCurrentInstance();
          ELContext elContext = facesContext.getELContext();
          ExpressionFactory expressionFactory =
             facesContext.getApplication().getExpressionFactory();
          MethodExpression methodExpression =
             expressionFactory.createMethodExpression(elContext, expr, Object.class, new Class[] { QueryEvent.class });
          methodExpression.invoke(elContext, new Object[] { queryEvent });
    Then when the advanced/basic button is pressed for the visible query panel, I programmatically set the same mode for the hidden query panel:
       public void handleQueryModeChange(QueryOperationEvent queryOperationEvent) {
          if(queryOperationEvent.getOperation() == QueryOperationEvent.Operation.MODE_CHANGE) {
             QueryMode queryMode = (QueryMode) irQuery.getValue().getUIHints().get(QueryDescriptor.UIHINT_MODE);
             QueryDescriptor queryDescriptor = partsQuery.getValue();
             queryDescriptor.changeMode(queryMode);
             AdfFacesContext.getCurrentInstance().addPartialTarget(partsQuery);

Maybe you are looking for