Using record filter query to handle behavior of facets

Hi all,
I know for multiselect/single dimensions we should always perform a dimension query to populate the behaviour of our faceted navigation , but i still want to understand if instead of dimension query i perform a record filter query on my facets click then what all flexibility will i loose with the multi select/single select facets.
Regards,
Edited by: IKumar on Apr 7, 2012 11:48 AM

Hi.
In general record filters and navigation provide similar functionality (faceted search). Depending on your requirements, you can use one or the other or even a combination. There are two things related to records filters that you need to be aware of when considering their use in a scenario like yours.
1. Record filters are applied as the very first step in the query evaluation. They are used to define a sub-set of the indexed data for further query evaluation. This can have an effect on spell corrections and DYM suggestions. Since the MDEX calculates spell corrections and DYM suggestions from the actual data and not based on an external dictionary, you may find that these are more "strict" when using record filters since a smaller data set is used for their evaluation. That said, I have not yet seen this become an issue in real projects for the last 8 years.
2. Record filters do not give you breadcrumb information. Incorporating the record filter as a breadcrumb will require some custom coding (custom = can't copy-paste from the reference app) and could become a bit complicated.
Regards
Pavlos

Similar Messages

  • List item - Record Group Query - Alignment improper Order

    Dear All,
    When am trying to concatenate two columns using record group query and displaying in the list item, the alignment is not in proper order.
    E.g; Below is the columns and data's used in process:
    CODE_VALUE     SHORT_DESC     DESCRIPTION
    ROLL1     Customer - Non accidental     Production, booking with other carrier, bad projection.
    ROLL2     Customer - Accidental     L/C, B/L draft, Customs, Samples, AMS, LAR.
    ROLL3     ABC - Lack of empty     Lack of empty units.
    ROLL4     ABC CDE - Roll over     AGR RRR decision.
    ROLL5     ABC XXX - Accidental     IMO or OOG refused, operational problems, Cut & Run.
    ROLL6     ABC YYY - Fictive booking     Equipment buffer, dummy booking.
    Below is the record group query used in forms:
    PROCEDURE p_when_new_form_instance
    IS
    GROUP_ID recordgroup;
    list_id item := FIND_ITEM ('BLK_CONTROL.LI_ROLL_REASON');
    rg_name VARCHAR2 (20) := 'LI_ROLL_REASONS';
    status NUMBER;
    l_query VARCHAR2 (4000);
    BEGIN
    l_query :=
    'SELECT rpad(short_desc,50,'' '')||'' | ''||description description, code_value code_value FROM codes WHERE code_value IN (''ROLL1'', ''ROLL2'', ''ROLL3'',''ROLL4'',''ROLL5'',''ROLL6'')';
    GROUP_ID := CREATE_GROUP_FROM_QUERY (rg_name, l_query);
    status := POPULATE_GROUP (GROUP_ID);
    POPULATE_LIST (list_id, GROUP_ID);
    EXCEPTION
    WHEN OTHERS
    THEN
    pl_common.when_others;
    END;
    Moreover i have my list item font property by default as ""MS SANS SERIF" and when i run in Forms Builder am getting the alignment as below.
    Result:
    ====
    DESCRIPTION     CODE_VALUE
    Customer - Non accidental | Production, booking with other carrier, bad projection.     ROLL1
    Customer - Accidental | L/C, B/L draft, Customs, Samples, AMS, LAR.     ROLL2
    ABC - Lack of empty | Lack of empty units.     ROLL3
    ABC CDE - Roll over | AGR RRR decision.     ROLL4
    ABC XXX - Accidental | IMO or OOG refused, operational problems, Cut & Run.     ROLL5
    ABC YYY - Fictive booking | Equipment buffer, dummy booking.      ROLL6
    Above order is not the expected result as all the |(pipe) symbol should display in proper order as below.
    Expected Result:
    ==========
    DESCRIPTION     CODE_VALUE
    Customer - Non accidental | Production, booking with other carrier, bad projection.     ROLL1
    Customer - Accidental | L/C, B/L draft, Customs, Samples, AMS, LAR.     ROLL2
    ABC - Lack of empty | Lack of empty units.     ROLL3
    ABC CDE - Roll over | AGR RRR decision.     ROLL4
    ABC XXX - Accidental | IMO or OOG refused, operational problems, Cut & Run.     ROLL5
    ABC YYY - Fictive booking | Equipment buffer, dummy booking.      ROLL6
    I tried with RPAD and LPAD still the alignment issue is there; i know the issue is because of invariable length of the font.
    But is there any solution to override this it will be of great help.
    So please help!!!!!!!!!!!!!!!!!
    Thanks..................
    Regards,
    Sunil.G

    Hi Francois,
    Thanks for your reply. I have tried changing the font to "Courier(Western)" it is working fine.
    But as per the standards defined, it should be "Ms Sans Serif" nothing apart from that.So that is where the problem lies. :(
    Regards,
    Sunil.G

  • How to use OData Date filter query to filter data from OData NetWeaver Gateway Service?

    Hello,
    I am trying to use the OData Filter query. to filter data records from the OData Service, using Date range for filters.
    Please check the below URL for the SAP's sample OData Service, with filter option.
    Service Query URL :
    https://sapes1.sapdevcenter.com/sap/opu/odata/sap/ZGWSAMPLE_SRV/SalesOrderCollection?$filter=CreatedAt eq DateTime
    It gives out following error :->
    <message xml:lang="en">'$filter ' is not a valid system query option</message>
    Please let me know, if there is any mistake in the Query or is there anything that needs to be done on the
    Backend  Service.
    Thanks & Regards,
    Suraj Kumar

    Hi Jitendra,
    Once again, thank you for your help.
    I am able to filter the records using a date range.
    I am sharing the information, just in case anyone out there might need it.
    The OData Filter Query for Date Range (i.e. with Two date values) will return the results only if the OData Back-end Service is modified to accommodate such filter requests.
    This has to be done in ABAP.
    Please refer the following links which talks more about the Back-end ABAP Service being modified to ensure that the service returns records of data, as per the date range filter query
    http://scn.sap.com/thread/3170195
    http://scn.sap.com/blogs/lindsay.stanger/2012/12/29/gateway-odata-calls-convert-ivfilterstring-to-itfilterselectoptions
    http://scn.sap.com/thread/3173146
    Hope these links are helpful for those looking for OData Date Range filter query.
    Do let me know.
    Regards,
    Suraj Kumar.

  • ORA-00904 when use column alias in Record Group Query

    Is it possible to use column aliases in Record Group Queries?
    I have a query that runs fine in SQL*Developer, but gives me runtime errors when I use it as a Record Group Query.
    When I use it as a Record Group Query, the Form compiles, but at runtime I receive the following errors:
    FRM-40502: ORACLE error: unable to read list of values
    when I use Help - Display Error, I see:
    ORA-00904:"CHILDNAME":invalid identifier
    The query is something like this
    select decode(complex stuff here) as "childname" ....
    I've tried it with and without the double quotes surrounding the alias name, and have also tried it without using the "as" keyword.
    I would appreciate any suggestions or insights. I'm using Forms 9.0.4.
    Thanks.

    It looks like this is caused by bug 725059:
    "FILTER BEFORE DISPLAY" DOESN'T WORK IF LOV HAS COLUMN ALIASES (TRIAGE1098)
    My LOV does have the Filter Before Display turned on. Here's the text of the bug:
    IF an LOV is created with column aliases in the select statement, (eg: select ename emp_name from emp) and the LOV property "Filter Before Display" is "Yes", THEN when you attempt to filter the LOV at runtime, (eg: type '%' then press the 'Find' button) the internal WHERE clause that forms sends to the database is: WHERE column_alias LIKE '%%' This is incorrect syntax. A client-side sqlnet trace shows this. The correct syntax should be: WHERE column LIKE '%%' . The incorrect syntax results in no rows returned. However no error is displayed by forms to the user.

  • IP Characteristic Relationship used via Filter for derivation in Query

    Hello Experts,
    hopefully you can help me with following issue:
    Currency is an Attribute from Company. I created a Characteristic Relationsship to derive Currency from Company
    Afterwards I created an Aggregation Level with fields
    Currency, Company, Material, Amount, Quantity, Unit.
    On this Aggregation Level I defined a Filter with Company which will be filled from a Variable (Replacement Path, Query, single value).
    I use this Filter in a Ready-Input Query and defined it like follows:
    Rows: Amount and Quantity (restricted to TO)
    Column: Material and Currency
    The field currency should be filled automatically with Currency from Company but it did't. Due to this the Query is not ready input.
    I know that it can be filled via User Exit but this is my last solution if nothing else is working. A Variable with Replacementh path and filled by Attribute of Company does not solve my issue.
    Thank you in advance for any help.
    Kind Regards
    Doris

    Hello,
    thank you all for your answers. I used Workpackages for my issue. I picked it upfrom the "How to Use workpackages to control Locking in BI Integrated Planning".
    With this solution I can fill the currency with Replacmenth Path from Attribute Company.
    This is the first time that I worked with Workpackages for Authorization and I can recomend it because you don't need an User Exit.
    Kind Regards
    Doris

  • Use of Sub Query in a filter is throwing error

    Hi
    I am using a sub query in a filter which throws me the following error in owb 9i.
    PLS 00405 : Subquery cannot be used in this context.
    But the use of subquery works fine in a joiner operator.
    Use of Sub Query in a filter works fine in owb 2i.
    Could any one please help me.
    Thanks in Advance
    Nanda Kishore

    Nanda,
    Please wrap the source table in a view containing the subquery and then use the view as a source rather than use the subquery in the filter.
    Regards:
    Igor

  • Content Query not producing results when using [Me] filter

    Hi
    I'm using a Content Query web part and I'm trying to show the most recent document modified by each site user by applying it across the site collection and using the Filter, Modified By [_Hidden] equals [Me]. However, this doesn't seem to work for any user
    - the web part is always blank. I have tried different combinations such changing equals to contains, and using the Modified By field etc - nothing gives me the correct results. If I instead take the [Me] out and instead use the "people chooser"
    and set to a specific person then I seem to get the results I would expect - however I cannot hard code a given user.
    Does anyone know how to use [Me] correctly?
    Thanks

    Hi  sjb500,
    According to your description, please take steps as below to meet your demand:
    With the page layout open in Design view, double-click the Content Query Web Part.
    In the Content Query Web Part dialog box, click the plus sign (+) next to Query to expand it.
    In the Source section, click Show items from all sites in this site collection.
    In List Type section, in the Show items from this list type, click Document Library.
    In the Content Type section, in the Show items of this content type group list, click Document
    Content Types.
    In the Content Type section, in the Show items of this content type list, click Document.
    In the Additional Filters section, under Show Items When, click Modified By [_Hidden] in
    the first box, click Is Equal To in the second box, and then click [Me].
    In the Content Query Web Part dialog box, click the plus sign (+) next to Presentation to expand it.
    In the Grouping and Sorting section, in the Sort items by list, click Modified
    and Select Show items in descending order.
    Click OK.
    Reference:http://office.microsoft.com/en-us/sharepoint-designer-help/display-data-from-multiple-lists-with-the-content-query-web-part-HA010174134.aspx
    [Me] is a variable that stands for the user who is currently viewing the page that contains the Content Query Web Part in the browser.
    Here is some scenarios using [Me] in Content Query Web Part:
    http://social.technet.microsoft.com/Forums/en-US/346ffbe6-d7ba-467e-b7f5-6d6e289677a1/user-tasks-web-part
    Please inform me freely if you have any questions.
    Thanks

  • Filter/query using a List ?

    Hi,
    I'm trying to create a query using a filter where the criteria is equality on a list (ie. an ordered collection).
    I.e
    Using the ReflectionExtractor where the method returns an ArrayList and using the EqualsFilter, eg EqualsFilter(ArrayList.., ArrayList..)
    This produces an exception (ClassCastException) where using a set instead of a list works..
    Is there a recommended solution to do this as I can't see an existing filter that supports this, have I missed something, do I create a custom filter, do I use a comparator for the extractor (is this efficient)..
    Thanks
    Jesper

    Hi Jesper,
    you need not extend the EqualsFilter to use indexes.
    You just need to ensure that the equals() method of the return value (the specialized collection) does what you want, and also that you have the appropriately typed collection on both sides of the comparison. Naturally you also need to implement hashCode() by the collection class appropriately, so that it always returns the same hash code for instances for which equals() return true.
    One side is provided by the extractor/method return value, the other is provided by the parameter to the filter constructor.
    All the EqualsFilter does when using an index is looking up a collection of cache keys from a hash-based map keyed by the extracted value (i.e. the return value of your method). These are the keys to the cached values from which the extracted value is extracted from.
    It's not Coherence which has to support out of the box ordered collections. Coherence supports using the equals() method.
    If equals() is not implemented how you would like to do equality checking, then obviously you will not get the expected result. By default a list equals method uses the default Object.equals() check which is reference equality. This will always yield false in a pass-by-value environment.
    You have to implement equals() and hashCode() properly for all object types which you want to use as an indexed method return value.
    Best regards,
    Robert

  • Powerpivot filter query based on another table's visible results?

    Excel 2010 x32 on Win 7 x64
    I have multiple tables coming into Powerpivot via SQL connection. They have some relationships pre-defined from the source.
    I need to reduce the amount of data I'm bringing in for my testing. One of the tables has great granularity, containing every event in the database. One field in this data is "Event Type".
    A separate table has a short list of the event types of interest.
    I'd like to filter the first table's data pull (SQL refresh) to only include the event types that are listed (and visible) in the second table, in addition to an existing date range filter that is already in place. Ultimately my goal is to widen
    the date range I can pull in before hitting Excel's memory limits, by eliminating the events I don't care about.
    Currently I'm using a SQL query to pull in the granular data;
    SELECT
      [Fact RawData].*
    FROM
      [Fact RawData]
    WHERE
      [Fact RawData].[Event Date] >= N'2014-06-01T00:00:00'  
    How would I adjust this to also say "only where [Fact RawData].[Event Type] IN {a column in a data pull that is already in powerpivot}"
    and how will that work under a "refresh all" scenario, where I would need the event table to update before this SQL is executed each time?
    Many thanks!

    If I understand correctly, these articles indicate that I can apply filters during
    data import, but I'm not clear how rows can be filtered during import based on
    another powerpivot table results. <o:p></o:p>
    From the first link:<o:p></o:p>
    "For data feeds, you can only change the columns that are imported. You can’t filter
    rows by values unless the source of the data feed is a report, and the report
    is parameterized."<o:p></o:p>
    So I guess the clarification of my original question is: How do I create a parameterized
    report, based on the data in another powerpivot table, and also ensure that the
    parameterized report is executed /after/ the source powerpivot table is
    refreshed so that the proper row filtering is applied?<o:p></o:p>
    Simplified example:<o:p></o:p>
    Table 1 = List of all physicians who have ever had a patient in a large hospital system.
    Filter when bringing results into powerpivot limits results to physicians from
    a target physician group, clinical specialty, or other filter based on reporting needs. <o:p></o:p>
    Table 2 = anonymized records for all patients, physician listed in each record. Filtered
    by time period when bringing into powerpivot.<o:p></o:p>
    I could bring back the whole patient table, but it is so large that Excel runs out of
    resources unless my time period is tiny. If I can limit the returned rows from
    Table 2 based on the current list of physicians shown in Table 1, then I will
    have a much smaller data set and can expand the time period filter to be more
    meaningful and make sure all the target records are brought back, without
    having to run multiple subsets of physicians or time, and still have to
    merge/remove duplicate records.<o:p></o:p>
    Thank you for any advice/URLs/etc.<o:p></o:p>

  • Record group query question

    Just wondering if we need to check :system.mode = query or normal in the query for record groups or oracle forms handles it automatically
    Thanks

    No, you should not check System.Mode in a record group query. But then, Forms does not do that either.
    Your question makes me wonder what you are doing... Record groups are usually populated only when you need to see a list of values, or use an LOV to perform an edit.

  • Determine Reports "Record Filter" as a SQL equlvilant

    Afternoon All,
    I am using the latest release, and am trying to work out how I can retrieve the final SQL query the report is using.
    My report is based on data held in a Table ("TABLE_ABC"), not a Command Table.
    I have a "Record Filter" of
    {TABLE_ABC.First_Name} = {?pFirstName}
    The report is ordered on
    {TABLE_ABC.Last_Name}
    If I run my report with a pFirstName parameter of "Bob" I am able to find the following information in my Log4j logs:
    [2010-01-06 17:05:41,717] INFO 73543[main] - com.crystaldecisions.reports.queryengine.QueryInfo.vE(SourceFile:230) - QueryInfo openRowset:
    [2010-01-06 17:05:41,717] INFO 73543[main] - com.crystaldecisions.reports.queryengine.Rowset.bL(SourceFile:444) - Rowset restart: moveToStart true
    [2010-01-06 17:05:41,717] INFO 73543[main] - com.crystaldecisions.reports.queryengine.Rowset.z3(SourceFile:921) - Rowset execute
    [2010-01-06 17:05:41,717] INFO 73543[main] - com.crystaldecisions.reports.queryengine.Connection.a(SourceFile:2929) - Executing query using a Query Definition.
    [2010-01-06 17:05:41,733] INFO 73559[main] - com.crystaldecisions.reports.queryengine.querybuilder.QueryBuilder.GenerateQuery(?:?) - Query:
    SELECT "TABLE_ABC"."First_Name", "TABLE_ABC"."Last_Name", "TABLE_ABC"."Old_Age", "TABLE_ABC"."New_Age", "TABLE_ABC"."Old_***", "TABLE_ABC"."New_***"
    FROM   "SCHEMA_XYZ"."TABLE_ABC" "TABLE_ABC"
    WHERE  ("TABLE_ABC"."First_Name"='Bob')
    ORDER BY "TABLE_ABC"."Last_Name"
    Is there any possible way I can determine this exact information programmatically?
    The whole reason for me wanting this information is I want to find a way to further filter the data of a report, so that I can dynamically manipulate the
    "Record Filter" for the report and thus I can split a Single Report PDF into multiple PDF report outputs, based on the users single Parameter of "Bob".
    .... continued below

    ... continued
    If for example I wanted to group the previous report by the value of "Old_Age" into individual PDFs.
    I am able to retrieve the "Record Filter" using the below code
    IFilter myFilter = reportClientDocument.getDataDefController().getDataDefinition().getRecordFilter();
    String currentFilter = myFilter.getText();
    This is all well and good but this filter is in Crystal Syntax and if anything more complex than a simple "equals" condition, will be almost
    impossible to "convert" into SQL syntax, which I am wanting to use to determine all the possible values of TABLE_ABC.Old_Age that can be found
    which still match the data criteria using the reports "Record Filter"
    Once I have build an array of these possible Old_Age values I will use them in the following loop     
    String freeEditingFilter = "{TABLE_ABC.Old_Age} = ToNumber(\"" + arr_Grouping[j] + "\")";
    freeEditingFilter = "(" + currentFilter + ") AND (" + freeEditingFilter + ")";
    myFilter.setFreeEditingText(freeEditingFilter);
    reportClientDocument.getDataDefController().getRecordFilterController().modify(myFilter);
    reportClientDocument.getDatabaseController().checkDatabase(true);
    exportPDF(reportClientDocument);
    This is the only possible way I can think of when trying to further split a existing report up into individual PDF outputs.
    If I was able to determine the above "...QueryBuilder.GenerateQuery" entry that is output in my logs, or the SQL syntax equivilant of
    whatever the reports "Record Filter" I would be happy as anything.
    Currently my work around is to have a suppressed text field on every report containing a SQL syntax equivalent of the whole
    query used to build the report data. So in my above example I would have a text box containing the text:
    SELECT DISTINCT ?GrpParam FROM TABLE_ABC WHERE First_Name = ?pFirstName
    I would then retrieve this text programmatically, replace ?GrpParam with the selected "grouper/splitter" (Old_Age) and also replace
    ?FirstName with the users parameter entry (Bob)
    With the results from this query I would place all the results in arr_Grouping[] and then use that to loop through
    my code and produce mupltiple reports using the original clause of "First_Name = Bob" and also the new
    grouping/splitting condition of "Old_Age"
    This is what I have come up with, and if anyone else has some ideas or solutions or anything I would
    be great appreciated.
    Cheers
    Darren

  • How to make an index use in a query execution

    Hi,
    I have the below query for which ename column has an index. As of my knowledge below queries 1st and 2st will not use index. Hence i used the 3rd statement and that too its not using the index. Finally i used the 4th query, but even the 4th query is not using the index. Then how do i make this query to use my index??? Do i need to create a function based index for this??? Is that the final option????
    1. select * from emp where ename !='BH' ;
    2. select * from emp where ename <> 'BH';
    3. select * from emp where ename not in ('BH');
    4. select * from emp where ename < 'BH' or ename > 'BH';
    Regards,
    007
    Edited by: 007 on Jun 6, 2013 7:56 AM
    Edited by: 007 on Jun 6, 2013 8:06 AM
    Edited by: 007 on Jun 6, 2013 8:06 AM
    Edited by: 007 on Jun 6, 2013 8:06 AM
    Edited by: 007 on Jun 6, 2013 8:12 AM

    Sorry 007, I really thought you were posting a trick question as on the OCP tests.
    Anyway, as Justin mentioned, if you have an index on ename, it may be used when doing a comparison predicate statement with the ename value.
    What it depends on are several other things: stats, how many rows in the table, use of an index hint, etc.
    Rather than questioning the group on this, why not just turn on autotrace and run the query for the different scenarios.
    The output will show you if it used the index, number of rows returned, blocks read, etc.
    SQL> create table emp (ename  varchar2(40));
    Table created.
    SQL> insert into emp select username from sys.dba_users;
    25 rows created.
    SQL> commit;
    Commit complete.
    SQL> set autotrace on
    SQL> select * from emp where ename != 'SYSTEM';
    Execution Plan
    Plan hash value: 2951343571
    | Id  | Operation        | Name      | Rows  | Bytes | Cost (%CPU)| Time     |
    |   0 | SELECT STATEMENT |           |    24 |   528 |     1   (0)| 00:00:01 |
    |*  1 |  INDEX FULL SCAN | ENAME_IDX |    24 |   528 |     1   (0)| 00:00:01 |
    Predicate Information (identified by operation id):
       1 - filter("ENAME"<>'SYSTEM')As you can see, the above used an index, even though there were only 25 rows in the table.
    You can test each of your scenarios, one by one, including use of a hint.

  • How do I take data from a query sample record and query another block with it?

    I have a master/detail form (6i) that contains a master block (staff), and a detail block (phone). I would like to be able
    to query by phone number, but when I execute the query, I would like a 'search results' box to pop up that contains the
    phone number I queried for, as well as some other staff info. There might be multiple records that match my query,
    and I'd like them all to be listed (or list 10 or so, with a scrollbar). I'd like a push button next to each record that will take
    me back to the master/detail window with that record displayed. So, I created a third block that is based on a joined
    view of the staff and phone tables. It is a multi-record block, with 10 recs displayed and a scrollbar. It is in a separate
    window. I don't want the user to have to navigate to that block, however, to perform their query. I would like them to be
    able to enter the query in the phone number block, then somehow grab the phone number they've entered and use it to
    query my 'search' block. This is the part I'm having trouble with. Can someone please help? THANKS!

    Where do I put that line of code? I see that it goes at the Script part near the top, but how can I use that, I am pretty new to this language. I am not familiar with this line, where does it bind the value from the datagrid to the variable?
    fullXML[myDataGrid.selectedIndex].FIELD_NAME;
    myDataGrid would be the id from the grid I am guessing?
    and selected index would be the channel.description part?
    and FIELD_NAME; is the variable name?
    does this go into a funtion or is it placed at the top where the variables are declared?

  • How i can take a field of report for use it in query?

    i hve a table where bills of customer are ready i simply take it on report by select statement.all bills are ready for print.now problem is that i need history of bills for every customer at it's own bill.when i give self join for history, it also add other customer history .there is any possible way that take customer id(report field) from report and search it's records . plzzzzzzzzzzzzzz

    i hve a table where bills of customer are ready i
    simply take it on report by select statement.all
    bills are ready for print.now problem is that i need
    history of bills for every customer at it's own
    bill.when i give self join for history, it also add
    other customer history .there is any possible way
    that take customer id(report field) from report and
    search it's records . plzzzzzzzzzzzzzzmay be you can use a child query and create a data link between
    the original query and child query on customer id column.
    I mean write a child query for searching records on customer id and then link
    this customer id with your already existing query. I think this will solve your problem

  • 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

  • Cannot install Adobe Air on Windows 7 (64 bit)

    After an apparently succesfully installation of Adobe Air on a new PC with 64 bit Windows 7 operating system, it doesn't works at all. When I'm trying tu run an Adobe Air application or even the uninstaller of Adobe Air I get the message "This applic

  • How to Make a pdf that can be downloaded, filled in and saved and then emailed; Acrobat 9 Pro; Windows

    Hi, I hope this hasn't been asked before, but I really need to figure out how to do this.   We take forms in Word, convert them using the wizard, and then the only way I can figure how to make them fill in able and then saveable is to distribute thro

  • Passing Parameter to a form

    I am trying to create a link from my report to a form, this form is based on a procedure that brings up a detailed report. I tried to create a link from the wizard that would pass the parameter from the report to the form. My problem is that the link

  • System Crashed and I lost iTunes Playlist

    After all my items were restored on my computer and I downloaded iTunes again my playlists disappeared.  Unfortunately my iPod Nano was new and I did not have the opportunity to transer to my iPod.  Can the playlist be recovered or must I start from

  • Fix for Flash Player in Internet Explorer Issue

    I've seen quite a few people with this issue and they all seem to have issues finding the fix...I never found a 100% solution on Adobe's site, but I found some directions that finally worked. Basically, if Flash Player refuses to work in Internet Exp