View Object transient query object question

One of the view object attribute is based upon a sql query as follows:
Select count(*) from TABLE where TABLE.customer_id=<The customerId in each column returned>
How do I configure this transient attribute?
Thanks.

Not sure what the exact requirement of this functionality is, but you can also get the size of the result by coding up something similar to the following:
Build a generic read only vo with the sql like:
select * from Employee
Now use either ViewCriteria based search, bind variable or findByKey() method to filter for targeted match. for example using the programmatic bind variable method:
ViewObject employeeVo= findViewObject("EmployeeVo");
employeeVo.setWhereClause("ID=:id");
employeeVo.defineNamedWhereClauseParam("id", null, null);
employeeVo.setNamedWhereClauseParam("id", someid);
employeeVo.executeQuery();
long numberOfMatches = employeeVo.getEstimatedRowCount();
Hope that helps.
-Z

Similar Messages

  • ADF View objects question

    Hello,
    I created a view object (which bases on an entity object) that I'd like to use for searching for records in a table called "CARS". Cars will be searched by names. I also have a JSP page for adding cars (administration functionality).
    The situation is as follows:
    1. I go to the page for adding cars and click "Submit" (which only submits data without committing to the database).
    2. Then I have validation errors (which is ok because some fields are mandatory).
    3. I search for cars by name.
    The funny part is that if I search for cars with given names, I get those cars AND I get the empty row with this new car I'd tried to add just a moment ago. It's definitely not yet in the database and the name of this car is not set (so it shouldn't match with the name I'm searching for).
    My question is: why is it happening and what should I do to get the rows created but not yet committed not appear in the search results?
    I tried to use clearCache() method of ViewObjectImpl but the result is still the same.
    Please help because I desperately need this for my diploma project.
    Thanks,
    Anna

    I run: "java -Djbo.viewlink.consistent=false -jar oc4j.jar" and I still get new rows. I'm using OC4J 10g (9.0.4.0.0) standalone that comes with JDeveloper 10g (9.0.5.2) on Linux.
    And about that Create pages: I mean I click on a link "New something" 3 times (for example). I don't use the browser back button because I have my menu on each page. In this case I'm just curious if it's possible to somehow "overwrite" previous "new" rows with the most recent one.
    I thought I would need that but now I know I need something else.
    Imagine such a situation:
    1. A user wants to create a new row or update an existing one.
    2. They start filling the form and submit it (in my case it's committing at the same time)
    3. During validation it turns out that some required values are missing so the user has to enter them.
    4. At this point the user leaves the input form and decides to add or update a different row.
    5. The user enters all the required values and this time validation would succeed. However, because of points 2. and 3. it does not.
    Now my question is: how can I make ADF somehow "forget" about the row inserted/updated in point 2. I know that ADF validates all new/changed rows at a time. But I would like to change that behavior so that it would validate only the row changed/created most recently.
    Thanks,
    Anna

  • Extending View Object Question

    When I extend a View Object in iSupplier Portal, and set project Substitutions.
    Does it mean that all pages that use this VO would be substitute by new VO?
    If the above answer is Yes.
    Is there any way to substitute VO only for one page?
    Also where can I find which pages use this VO, or I can only looking
    page by page to know who have used the VO that I intended to substitute ?
    Thanks a lot.

    When I extend a View Object in iSupplier Portal, and set project Substitutions.
    Does it mean that all pages that use this VO would be substitute by new VO?
    --Yes all the pages that use this VO would be substituted by new VO.
    If the above answer is Yes.
    Is there any way to substitute VO only for one page?
    -- No
    Also where can I find which pages use this VO, or I can only looking
    page by page to know who have used the VO that I intended to substitute ?
    -- You need to check the page by page the usage of the VO.
    ANoop

  • Question on view objects

    Hi I have couple of question both might be related.
    1. In one jsf page I have several items. They are selectInputText, InputText,Shuttle,Select one choice etc. Select input text,Select one choice and Shuttle gets populated from different view objects. For others user has to enter data. I need all entered data to go to the next page for confirmation and from confirmation page once user click confirm button data should be entered in data base.
    How do you take all the data from first page to confirmation page. I have seen SRdemo tutorial where suggestion was to create Global view Object with transient column and drop them as ADF form in first page so that in next page we can get the data from Global view object. But looking at my requirement when I bring ADF form it doesn't allow to have input items as select InputText or Shuttle.
    How do I do this?
    Second question is
    2. In one jsf page I have a table with Select Many. I want to update one of the column for selected row. So if user selects the rows and click continue I need to first go on confirmation page and show him all the selected row and then when user confirms, my custom method should go and update those rows in database with predefined value. If user doesn't selects any row I should throw a warning.
    I am using Jdev10.1.3.4.0
    thanks
    Ajay

    Hi,
    1. The ADF form that you see when dragging a collection from he data control palette to the page is a "template". You can change each attribute and input component added to teh page. Just delete the field the gets created and drag and drop the attribute of teh Collection again. Then you can choose the input item you like to have.
    2. If the rows have a primary key, you can get the PK from the selected rows and then pass them to a ExecuteWithParameters method that you can create for a VO that uses bind variables. So the bind variable could be used like select ... from ... where pk_col in (:bindVariable)
    Frank

  • How to Use Transient View Objects to Store Session-level Global Variables

    hi
    Please consider section "40.8.5 How to Use Transient View Objects to Store Session-level Global Variables"
    at http://download.oracle.com/docs/cd/E14571_01/web.1111/b31974/bcstatemgmt.htm#ADFFD19610
    Based on this documentation I created the example application
    at http://www.consideringred.com/files/oracle/2010/ProgrammaticalViewObjectAndRollbackApp-v0.01.zip
    It behaves as show in the screencast at http://screencast.com/t/qDvSQCgpvYdd
    Its Application Module has a Transient View Object instance "MyEmployeesContextVOVI", as master for the child View Object instance "EmpInCtxJobVI".
    On rollback the Transient View Object instance keeps its row and attribute values.
    Also when passivation and activation is forced (using jbo.ampool.doampooling=false ) the Transient View Object instance seems to keep its row and attribute values.
    questions:
    - (q1) Why does the expression #{bindings.MyEmployeesContextVOVIIterator.dataControl.transactionDirty} evaluate as true when a Transient View Object instance attribute value is changed (as shown in screencast at http://screencast.com/t/qDvSQCgpvYdd )?
    - (q2) What would be a robust approach to make a Transient View Object instance more self-contained, and manage itself to have only one single row (per instance) at all times (and as such removing the dependency on the Application Module prepareSession() as documented in "5. Create an empty row in the view object when a new user begins using the application module.")?
    many thanks
    Jan Vervecken

    Thanks for your reply Frank.
    q1) Does sample 90 help ? http://blogs.oracle.com/smuenchadf/examples/
    Yes, the sample from Steve Muench does help, "90. Avoiding Dirtying the ADF Model Transaction When Transient Attributes are Set [10.1.3] "
    at http://blogs.oracle.com/smuenchadf/examples/#90
    It does point out a difference in marking transactions dirty by different layers of the framework, "... When any attribute's value is changed through an ADFM binding, the ADFM-layer transaction is marked as dirty. ...".
    This can be illustrate with a small change in the example application
    at http://www.consideringred.com/files/oracle/2010/ProgrammaticalViewObjectAndRollbackApp-v0.02.zip
    It now shows the result of both these expressions on the page ...
    #{bindings.MyEmployeesContextVOVIIterator.dataControl.transactionDirty}
    #{bindings.MyEmployeesContextVOVIIterator.dataControl.dataProvider.transaction.dirty}... where one can be true and the other false respectively.
    See also the screencast at http://screencast.com/t/k8vgNqdKgD
    Similar to the sample from Steve Muench, another modification to the example application introduces MyCustomADFBCDataControl
    at http://www.consideringred.com/files/oracle/2010/ProgrammaticalViewObjectAndRollbackApp-v0.03.zip
    public class MyCustomADFBCDataControl
      extends JUApplication
      @Override
      public void setTransactionModified()
        ApplicationModule vApplicationModule = (ApplicationModule)getDataProvider();
        Transaction vTransaction = vApplicationModule.getTransaction();
        if (vTransaction.isDirty())
          super.setTransactionModified();
    }Resulting in what seems to be more consistent/expected transaction (dirty) information,
    see also the screencast at http://screencast.com/t/756yCs1L1
    Any feedback on why the ADF Model layer is so eager to mark a transaction dirty is always welcome.
    Currently, question (q2) remains.
    regards
    Jan

  • Changing the query on a view object

    I have a view object right now, based on an entity. It is the default view object, so that means the query in the view object is straight forward, it grabs all of the attributes from the table. And there is no WHERE clause.
    In reality I only want to show a finite set of rows from my table. Every time a record is changed/edited in this entity and committed, a new row in the database is created with the same information (I'm using CreateWithParams) except for a few columns.
    I actually don't really have update on this table, just creation of new rows. But to the user, I want it to 'look' like they are editing something in the table.
    Example:
    12, 11:32,Thompson, 60 (the user edits this information in an adf table, and a new row is created in the db)
    12, 11:55, Thompson, 75
    I have a timestamp (see above) field in the database that is used as part of my primary key, so that I know which record is the latest.
    When the VO query is run, I want the user to only see the latest row from the db.
    12, 11:55, Thompson, 75
    So...
    I went to my VO, and I changed the WHERE query to add this:
    where t1.TimeStamp = (Select MAX(t2.TimeStamp) FROM rcl.x t2 where t1.uid = t2.uid);
    Now, this isn't a mysql/sql question. There's actually a better query that I'd rather run, but the VO editor doesn't allow me to change the query itself....
    When I save the new WHERE to my VO, run my page again, I get the expected result (showing me only the latest records).
    However, when I try and sort on the table in which my data is displayed, I am now getting ORDER BY errors.
    I don't want my VO to be read-only sql based. I want to be able to update my table, so I have my VO running off of the entity.
    Why doesn't the VO allow me to change the query itself? (Like do a subquery, instead of having my where clause do the work)
    Why are order by errors being thrown when I sort on my adf table after changing the where clause in my view?
    Hopefully I wasn't too convoluted in the explanation of my problem..
    Thanks in advance,
    Joel

    HI Joe,
    Regarding your problem you can do one of the following tasks:
    1- easily to tuning on your view object, I mean in the tuning page of the view you can set that only return 1 record or 2-3 record fetch not all the record.
    in the order by you will order by the timestamp field and descending.
    2- you can order by the timestamp descending and in the where clause only set the rownum<2 (will return the last record) you can also set rownum<5 and get the 4 last record etc.
    3-editing the view query in the expert mode is not advised at all because of many consequences that you will face.
    4- maybe it is not bat that you add a readonly view for the table you mentioned and every time you unpdate the entity just re-execute the read-only view.( this method maybe is good maybe is not it depends on your business logic)
    Regards.
    Edited by: Amir Khanof on Sep 3, 2010 11:11 PM

  • Passing an argument in the SQL Query of a View Object

    Hi,
    It is possible that this question has been asked before, however I have searched for a half an hour in the forums and couldn't find a solution.
    I am also new to using JDeveloper and ADF. Here's the situation:
    I am developing an application that doesn't have to do anything else then displaying data from a database. Pretty straightforward actually.
    Now I have made a vew pages with several collapsible panels (af:showDetailHeader) and have setup the datasources (or so I thought).
    All that remains is:
    - drag & drop a view object, from the application module that I created, onto the collabsible panels, so a child element gets created which displays data from the database.
    - hack the layout so it looks like I want it to.
    The problem that I have is the following:
    I am using a 'User'-class that contains values I need when quering the database.
    That User-object is part of a user-session.
    What I want, for example, is to use the 'getPersonId()' function of that User-object and pass the argument to a SQL-query of a certain view-object.
    The query would become something like:
    'SELECT * FROM people WHERE people.personId = :someNumber'.
    Now I've read some stuff about variable binding, which is complemented by something like (backing bean code):
    getDBTransaction().getRootApplicationModule().getACertainViewObject().setWhereClauseParameter(1, user.getPersonId());
    The examples I have found that might match my wishes are not using business components, but EJB's. I am having difficulty with understanding the 'how'-part of variable binding.
    Also, I do not know enough of ADF to be able to create a situation like:
    'User loads page, collapsible panel 1 is fully shown, the others are undisclosed.'
    (meaning, that for panel1 a query has been executed.)
    'User clicks on collapsible panel 2 which triggers a backingbean that somehow retrieves data from a view object'.
    I would appreciate any help that somebody can give.
    If it is not too much of a problem, please provide code snippets in case you have a solution. I am new to ADF :(.
    -edit
    I am using JDeveloper 10.1.3.3.0 in case that is of any importance.
    Message was edited by:
    Hugo Boog

    Hello Stijn,
    I didn't think about a referenced bean rule in the faces-config.
    I added it right away and I am now able to set parameters of a View-object, not using a page button and before the page loads. You made my day!
    In case anyone ever reads this post again, the summary of how to generate a table based on a View-object using dynamic parameters.:
    1a: Go to faces-config.xml -> Overview tab'
    1b: Go to the menuitem "Referenced Beans"
    1c: Click on 'new' and select the existing bean you want to access data from and input a name. In this example I use name="user"
    2: Create a View-object using the wizard.
    2a: Specify the query you want in the menuitem 'SQL Statement'.
    Add the 'parameters' you want to. You will have something like:
    "SELECT * FROM someTable WHERE table.columnname LIKE :someArgument".
    - hint: if you want the result to become something like:
    "SELECT * FROM someTable WHERE table.columnname LIKE '%someArgument%'" then you have to add the '%'-characters in your code itself (read: someClass.setParameter("%" + someArgument);).
    2b: In the menuitem 'Bind Variables' you have to add the variables you are referring to in the query. If you look at the query in 2a, then you have to add a variable with name "someArgument".
    2c: Add the View-object to a Application Module (create one if nessecairy).
    3a: Open a .jsp(x) file. Drag the View-object created in step 2 from the 'Data Controls'-pane to the page.
    3b: Click on the '+' of the View-object in the 'Data Controls'-pane and open 'Operations' and drag 'ExecuteWithParams' to your page as a button.
    3c: We do not want to use a button, the action has to be executed immediatly. So In the page source remove the lines that were created after dropping 'ExecuteWithParams'.
    3d: Right-click on the page and select "Go to Page Definition".
    3e: Go to the action id that is called 'ExecuteWithParams#', where # is a number.
    Change the id to something useful.
    3f: Change the NDValue so it corresponds with the value you want.
    Example:
    <action id="getAddressData" IterBinding="AddressesView1Iterator"
    InstanceName="MyHRServiceModuleDataControl.AddressView1"
    DataControl="MyHRServiceModuleDataControl" RequiresUpdateModel="true" Action="95">
    <NamedData NDName="someArgument" NDType="java.lang.String"
    NDValue="#{user.personId}"/>
    </action>
    Note: It is possible to use the value of a Backing Bean in NDValue.
    Note 2: user is the bean I referred to in the faces-config.xml!
    3g: Under the executables item, add an 'invokeAction' to pass the parameter to the View-object before your JSP-file loads:
    <executables>
    <invokeAction Binds="getAddressData"
    id="loadAddressDataOfPersonIdInSession"
    Refresh="prepareModel"/>
    Thank Stijn Haus for this :)

  • How to populate transient attribute from view object dynamically

    I have three 4 tables named as "employee,event,event_progress,and checklist progress". i have created a view object using the first three tables . i ahave also created 5 transient variables in to the same view object.when i dragged the view object in to my page as a table i want to populate those transient attribute.
    i have 5 transient attribute which are present as a column value named as chechlist_name in another table "checklist".those all transient attribute also having two sub rows whose data should be populated from the checklist progress table.

    Hi
    Please post your question on this forum, your question belong to this forum.
    JDeveloper and ADF
    Muhammad Nasir

  • View Link w/ Transient View Objects

    I'm trying to create 2 view objects that contain only transient attributes and create a view link between them. I have a key defined in the parent and 2 keys in the child. When I create the view link I'm unable to generate the accessor in the source because the boxes are all grey'd out. The destination side works correctly.
    Is there any reason this shouldn't be possibly in BC4J? I've been scouring the documentation and so far I haven't found any mention that a view link will not work in this situation.
    This is in JDev. 9.0.4.
    Thank you

    A view link builds its corresponding where clause based on the selected attributes. On the source side, the attributes are used as parameters to the query, so transient attributes are fine. Attributes on the dest side get built into a where clause which would not work with transient attributes, so they are disabled.
    for example:
    select * from blah where (%1 == destVo.attr1) would not work if destVo.attr1 is transient.

  • How to Create an Input Form using a Transient View Object?

    I would like to use a Transient View Object to store data from input forms across a multiple-page enrollment process.
    My question is how to I create the input form using the Transient View Object on the .jspx page? Do I drag/drop an ADF creation form onto the page? Or, use a regular ADF form? Do I need to create the initial row progammatically?
    Just looking for some general directions or set of instructions? I've looked at the SRDemo example (Globals Transient View Object), but I'm not sure how they created the page at design time?
    thanks

    Well following the SRDemo example, this seems to work:
    1. Create Transient View Object
    2. Add to Application Module as a Data control
    3. Add to .jspx page as an ADF Form (not as an ADF Create Form)
    4. Add following code to Application Module containting Transient VO instance:
    protected void prepareSession(Session session) {
    super.prepareSession(session);
    insertTransientViewObjRows();
    private void insertTransientViewObjRows() {
    ViewObject transientvo = getViewObj1();
    transientvo.clearCache();
    transientvo.insertRow(transientvo.createRow());
    }

  • Question on View Object method to use to reset a data entry form?

    I am using a transient View Object form for the purpose of collecting and persisting data entered by users in a set of web data forms that span multiple pages. In the Application Module, I create the first row (see below.) After the user submits the last form, I programmatically add the data to the database (later may change to an Entity Object, but right now I don't use one.) So, the data they entered remains in the VO (it only ever has one row.)
    My question is which method do I use to clear out the current set of data values. I tried VO.clearcache() but it deletes the row, and VO.reset() did not clear the data? If the only way is to delete the row, then please advise the best way to re-create the row or re-set the iterator.
    thanks!
    -- sample code to insert initial row in App Module --
    protected void prepareSession(oracle.jbo.Session session) {
    super.prepareSession(session);
    insertTransientViewObjRows();
    private void insertTransientViewObjRows() {
    ViewObject transientvo = getView1();
    transientvo.clearCache();
    transientvo.insertRow(transientvo.createRow());
    ---- in service method after user submits the form and row remains in VO, I have tried: --
    vo1.reset(); // does not delete data from the row
    vo1.clearCache(); // deletes the row

    Thanks. Yes this looks more like what I need. How do I call this method from the client-tier, or from within a service method in my Application Module?
    vo1 = findViewObject("myViewObject");
    row = (MyViewRowImpl)vo1.first();
    row.initDefaults();
    compiler error message received:
    Error(279,21): method initDefaults() has protected access in class oracle.jbo.server.ViewRowImpl
    "Customer applications should not access this class on the client-tier of an application. Instead, the Row interface should be used for client tier access"
    Which Row interface method can I call?
    Message was edited by:
    javaX

  • DOC BUG: 9.0.3.1 View Object Wizard and a Question

    First the question: What is the Passivate property for in the View Object Wizard's Attribute Settings page?
    Related Doc Bugs 9.0.3.1
    Topic: Define New View Attribute Dialog
    (click Help button in New Attribute dialog when creating a view object attribute)
    Problems: The description for the "Attribute" property is "foo"; Descrimator, Updateable, and Queriable have single letter descriptions. Key Attribute and Passivate are not listed.
    Topic: View Object Wizard - Attribute Settings Page
    (click Help button in Attribute Settings page in View Object Wizard)
    Problems: Query Column Type and Passivate are not listed. Attribute Settings column lists properties in a strange order (not a bug).
    Peter Koletzke

    Peter,
    I've logged doc bug 2814172: BC4J GLOSSARY SHOULD HAVE ENTRIES FOR PASSIVATE AND ACTIVATE.
    For more information, you could read the "About Application Module Pooling" topic in the online documentation. Passivation is what happens when the application module's state is saved to the database - and activation happens when an application module instance retrieves passivated state from the database.
    Thanks
    Blaise

  • Filtering Transient view objects

    Guys,
    I have transient view object.
    i have populated the rows programatically.
    Based on some UI action, i need to filter the rows in the view object. Whenever i filter the rows (using view criteria), i can't get back the lost rows again.
    For eg.. i have populated the view object with 5 rows.
    Based on View criteria(VC1), i got only 2 rows.
    Now i need to apply the same view criteria(VC1) with different values for bind variables, but it applies the criteria on the remaining 2 rows. (but am expecting to apply the criteria on the actual 5 rows)
    I think transient view object is loosing rows on applying view criteria.
    How this can be solved?

    Hi,
    can you try using rowmatch
    refer following method inside viewobjectimpl
        public void matchByCustomerNumber(String custno) {
            RowMatch rm = new RowMatch("CustNumber = " + custno);
            setRowMatch(rm);
            setQueryMode(ViewObject.QUERY_MODE_SCAN_VIEW_ROWS | ViewObject.QUERY_MODE_SCAN_DATABASE_TABLES);
            setSortBy("CfMonth DESC");
            executeQuery();
        }you should also see other query modes.
    ViewObject
    look for QUERY_MODE_SCAN.. contants.
    Regards,

  • Filter transient view object based SOC

    i have a SOC in a popup which is built on a Transient VO in a page on which popup is displayed.
    i need to filter contents of this SOC based on value selected in another SOC.
    both SOCs are based on same transient VO which is denormalized from a relationship point of view.
    transient vo rows are populated programatically.
    what is the best way to filter a transient view object whose rows will be displayed in UI as SOC.
    VO does not have any EO or SQL query defined. only attributes which are populated programatically.

    Hi!
    I encountered the same problem, and found out that each param[] entry is itself an Object[]. So with the following code you can find the contents:
    Object[] bindvar = (Object[])params[0];
    String varName = (String)bindvar[0];
    Object varValue = bindvar[1];Hope this helps,
    Jeroen

  • Problem facing with Transient in View Object

    Hi Friends,
    I had created a new table in the database and create an Entity Object for that table,
    i had add this entity object in one of the View Object and when i was trying to add attributes from Available List to the Selected List.
    The Attributes are changing to Transient and that particular attribute Mapped to column got unchecked, even tho i check it manually it is turning unchecked automatically when i click on Apply Button.
    * In Entity Object Attributes are checked with >Persistent and Queryable and Type is NUMBER Updatable checked to Always.
    Can you please suggest me where am i going wrong, i had done me best to solve this problem.
    Please help me out from this problem.
    Thanks in advance,
    Rahul

    Rahul,
    Your question is related to ADF Business Components, not to JHeadstart.
    Please use the JDeveloper forum for this question.
    Thank you,
    Steven Davelaar,
    JHeadstart team.

Maybe you are looking for

  • F.13 clearing for EBS entries

    Hi Friends, Unable to clear the bank subaccount in f.13 We are using ZBRS transaction for EBS upload. When upload the file the cheque number is assigning as the text fields .when uploaded in to Sap That time entry must be Bank outgoing a/c To main ba

  • Why won't it download?

    I have bought a brand new MacBook Pro last week, and the guys at the retail store said when Mounttain Lion Comes out, i can just download it for free. Well, it was free, but i left it for couple of hours, and it still says downloading and the bar has

  • Wrong translation for correspondence

    From Class has been translated as "Clase Festivo" in customizing entry Define Standard Form Classes for Correspondence using Spanish like logon language. Form Class = Clase de Formulario

  • HT4993 how can u find a phone if the icloud has not been turned on?

    does anyone know how to track ur phone if it is stolen?

  • How to preserve menu visible?

    I'm trying to implement smthing like custom tooltip. That is, when you move your mouse over a menu item a JDialog pops up with some comments. This works fine on components other than menus and menu items. The thing is that when I tried to do it I cam