No row set iterator in transactionvo1

if any error occurs in my code
in my catch block i am doing getdbtransaction.rollback()
but when i go to ui and try to perform the next transaction ... i am getting error as no row set iterator in transactionvo1
how can i handle this to perform next transaction.

User, you need to give more information about your environment like jdev version and use case to get a good answer.
What I can tell you is that a rollback also rests the state of the current iterator so that you don't have a current row in the UI.
This will cause the error you see.
Timo

Similar Messages

  • How can i use row set iterator to create multiple dummy detail rows upfront

    Hello i am new to ADF and jdeveloper and have a Forms 9i/PLSQL background.
    I have a 1 to many master to detail view link and 2 vo's one for each of the master and detail table.
    I am trying unsuccsessfully to create 7 unique detail rows up front to populate at a later stage.
    I have created a master record with primary key being staff number and week ending date.
    i then use code below to try and create 7 detail records - P.S i have trimmed it to the first 2 for demonstration.
    I am using
    RowSetIterator rsi = this.mydetailVO.getRowSetIterator();
    Row newRow1=rsi.createRow();
    newRow1.setAttribute("Staff Num","123456A");
    newRow1.setAttribute("Week_Ending_Date", "2010-01-01");
    newRow1.setAttribute("Claim_Date", "2010-01-01");
    newRow1.setAttribute("Day", "Sun");
    rsi.insertRow(newRow1);
    Row newRow2=rsi.createRow();
    newRow2.setAttribute("Staff Num","123456A");
    newRow2.setAttribute("Week_Ending_Date", "2010-01-01");
    newRow2.setAttribute("Claim_Date", "2010-01-02");
    newRow2.setAttribute("Day", "Sat");
    rsi.insertRow(newRow2);
    However it does create two rows but it always writes over the first row with the details of the second row so they are not unique.
    How can i get a new unique row inserted with different details to the firat and how then do i access it uniquely.
    Thanks

    John thanks for reply.
    I have tried the following and still i get 2 rows created but the first one gets overwritten with the last one. I'm confused as to why the inbuilt insert row doesnt move it on to the next available row. Any idea what i'm not doing in between inserting rows?
    ViewObject vo1 = this.getmyVO1();
    vo1.executeQuery();
    Row newRow1 = vo1.createRow();
    newRow1.setAttribute("Staff Number","123456A");
    newRow1.setAttribute("Week_end_date", "2010-04-04");
    newRow1.setAttribute("Date", "2010-04-01");
    newRow1.setAttribute("Day", "Sun");
    vo1.insertRow(newRow1);
    Row newRow2 = vo1.createRow();
    newRow2.setAttribute("Staff Number","123456A");
    newRow2.setAttribute("Week_end_date", "2010-04-04");
    newRow2.setAttribute("Date", "2010-04-03");
    newRow2.setAttribute("Day", "Sat");
    vo1.insertRow(newRow2);
    P.S Yes they are dates but i made them strings for the time being until i get this working thanks for noticing.
    Edited by: user13012264 on 20-Apr-2010 04:19
    Edited by: user13012264 on 20-Apr-2010 04:20

  • Default and secondary row sets not working as expected

    I am trying the following code to understand how the default and secondary row sets work in ADF. However, the implementation doesn't seem straightforward.
    public void testRowSets(){
      CountryVOImpl vo = (CountryVOImpl)findViewObject("Countries");
      vo.setApplyViewCriteriaName("CountryVOSearchByRegionIdVC");
      vo.setbindRegionId(new Integer(4));
      vo.executeQuery();
      RowSetIterator iter1 = vo.getRowSetIterator();
      while (iter1.hasNext()){
      System.out.println("default iterator, for region id 4, has countries="+iter1.next().getAttribute("CountryName")); //prints Zimbabwe,Nigeria,Israel
      RowSet rowSet = vo.createRowSet("secondaryRowSet");
      vo.setbindRegionId(new Integer(4)); 
      vo.setQueryMode(ViewObject.QUERY_MODE_SCAN_VIEW_ROWS);
      rowSet.executeQuery();
      while (rowSet.hasNext()){
      System.out.println("secondary row set, for region id 4, has countries="+rowSet.next().getAttribute("CountryName")); //prints nothing
      rowSet.closeRowSet();      
      RowSetIterator iter = vo.getRowSetIterator();
      System.out.println("default row set iterator row count="+iter.getEstimatedRangePageCount());
      iter.reset();
      while (iter.hasNext()){
      System.out.println("default row set iterator, for region id 4, has countries="+iter.next().getAttribute("CountryName"));
    Now, iter1 prints X, Y, and Z country names (line #9).The secondary row set prints no countries (line #17). After executeQuery() on the secondary row set, the default row set iterator also prints nothing (line #25). Believe the secondary row set has a different query collection only as long as the row filter is different, and in the case above it's the same. But if that's the case then when we perform rowSet.executeQuery in QUERY_MODE_SCAN_VIEW_ROWS, why does it not see the records in the default row set which have already been placed in the cache by iteration over the default row set?
    NOTE: Changed the subject in the hope to get more suggestions/answers

    have you tried resetting the rowset after the first iteration - my guess its pointing to the end after the first iteration. So perhaps try closing the rowsetitertor first
    iter1 .closeRowSetIterator();
    and then
    RowSetIterator iter=vo.createRowSetIterator('secondaryRowSetIterator')

  • SQL to read with the DISABLE STORAGE IN ROW set

    I am having problems inserting a clob > 4k. I have changed my default setting to DISABLE STORAGE IN ROW. The problem is, when my clob
    4k, I get a null pointer exception on my read. THE INSERT:
    insert into XML_W_BOOKING (WORKCONVERSATIONID, FREQUENTFLYERNUMBER, XMLSTRING)values(WORKCONVERSATIONID_SEQ.NEXTVAL, pCntr.frequentFlyerNumber, EMPTY_CLOB());
    THE UPDATE:
    PreparedStatement pstmt = this.connection.prepareStatement("update XML_W_BOOKING set XMLSTRING = ? where WORKCONVERSATIONID = ?");
    pstmt.setAsciiStream(1, new StringBufferInputStream(pCntr.xmlString), pCntr.xmlString.length());
    pstmt.setLong(2, pCntr.workConversationId);
    pstmt.executeQuery();
    pstmt.close();
    THE READ:
    myContainer.workConversationId= pRset.getLong(1);
    myContainer.frequentFlyerNumber=pRset.getLong(2);
    java.sql.Clob clob = pRset.getClob(3);
    int c;
    int length = new Long(clob.length()).intValue();
    StringBuffer strBuf = new StringBuffer(length);
    BufferedInputStream bin = new BufferedInputStream(pRset.getAsciiStream(3));
    while((c = bin.read()) != -1){
    strBuf.append((char)c);
    String str = strBuf.toString();
    System.out.println("str: " + str);
    myContainer.xmlString = str;
    Any suggestions? Is there a special sql statement I should be using to read when the "DISABLE STORAGE IN ROW" setting? I am using Oracle 8i and wls 5.1.
    IP: Logged
    null

    Enable/Disable storage in row is used for LOB columns. If enable storage in row is specified and the length of the LOB field is less than 4K then the LOB is stored along with other table data, else it is stored in a seperate segment. If disable storage in row is specified then LOB data is stored always in a seperate segment. When the LOB is stored in a seperate segment the storage parameters are determined by the values specified for CHUNKS and PCTVERSION. One chunk stores only one LOB data even if enough space is aavailable in the chunk. If the size of LOB data is small then enable storage.
    To calculate the space used by the tables use the query below
    For Table Data
    select segment_name, sum(bytes) from user_segments where segment_name in ('TABLE', 'TABLE1', 'TABLE2') group by segment_name;
    For LOB's
    select segment_name, sum(bytes) from user_segments where segment_name in (select segment_name from user_lobs where table_name in('TABLE', 'TABLE1', 'TABLE2'))
    group by segment_name;
    Jayant

  • How to Handle Multiple row sets in BPEL

    Hi,
    I'm going to return list of records from a stored procedure, and try to catch it using BPEL and then those records should be insert to
    another stored procedure to insert those values to a Table.
    (Second Stored Procedure will do the INSERT function)
    Using ref cursor i can get row set. Is it possible to use Ref Cursor as IN parameter to next procedure??
    or else how can i handle this???
    thank you...

    Is your data model right? If you are adding in one and deleting in another it sounds to me more like a process that an entity, in which case you may revisit your data model and simplify it, add in a session bean with the process method to co-ordinate between the two.
    However, if you want to map multiple different tables within a single entity bean it is possible and just part of the mapping. How you actualyl specify it depends on which implementation you are working with.
    Cheers,
    Peter.

  • Can't insert new row in last position in row set

    I am trying to programmatically insert a new row into the last slot of a View Object's default row set.
    I normally can do this:
    Row newRow = vo.createRow();
    // set stuff on the row
    vo.last();
    vo.next();
    vo.insert(newRow);and, voila, the row is in the last position.
    But on this particualr view object, when I do the above, the row is inserted in the first slot.
    There doesn't seem to be anything unusual about the View object. it is a child Vo in the data model, but that shouldn't matter.
    When I debug with vo.getCurrentRowSlot(), even after performing last(); next();, vo.getCurrentRowSlot() returns 0, never 3.
    Has anyone else run into this behavior and if so, any resolution or explanation?
    FYI, I was able to use the following workaround:
    Row lastRow = vo.last();
    if (lastRow != null){
        int indx = vo.getRangeIndexOf(lastRow) + 1;
        vo.insertRowAtRangeIndex(indx, newRow);
    } else {
       vo.insertRow(newRow);
    }   

    would this solve your problem
    http://kohlivikram.blogspot.com/2008/10/add-new-row-in-adf-table-on-button.html

  • How to use open Row set in sql server 2014

    Hello All,
    How to open the row set using sql server 2014 using link server connection.

    Hi  denyy,
    Are you referring to the OPENROWSET function in SQL Server 2014?
    The OPENROWSET method is an alternative to accessing tables in a linked server and is a one-time, ad hoc method of connecting and accessing remote data by using OLE DB. The examples below demonstrate how to use the OPENROWSET function:
    A. Using OPENROWSET with SELECT and the SQL Server Native Client OLE DB Provider
    SELECT a.*
    FROM OPENROWSET('SQLNCLI', 'Server=Seattle1;Trusted_Connection=yes;',
    'SELECT GroupName, Name, DepartmentID
    FROM AdventureWorks2012.HumanResources.Department
    ORDER BY GroupName, Name') AS a;
    B. Using the Microsoft OLE DB Provider for Jet
    SELECT CustomerID, CompanyName
    FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
    'C:\Program Files\Microsoft Office\OFFICE11\SAMPLES\Northwind.mdb';
    'admin';'',Customers);
    GO
    C. Using OPENROWSET to bulk insert file data into a varbinary(max) column
    USE AdventureWorks2012;
    GO
    CREATE TABLE myTable(FileName nvarchar(60),
    FileType nvarchar(60), Document varbinary(max));
    GO
    INSERT INTO myTable(FileName, FileType, Document)
    SELECT 'Text1.txt' AS FileName,
    '.txt' AS FileType,
    * FROM OPENROWSET(BULK N'C:\Text1.txt', SINGLE_BLOB) AS Document;
    GO
    D. Using the OPENROWSET BULK provider with a format file to retrieve rows from a text file
    SELECT a.* FROM OPENROWSET( BULK 'c:\test\values.txt',
    FORMATFILE = 'c:\test\values.fmt') AS a;
    Reference:
    OPENROWSET (Transact-SQL)
    Using the OPENROWSET function in SQL Server
    Thanks,
    Lydia Zhang
    If you have any feedback on our support, please click
    here.

  • How can I learn about Row Set Navigator

    I would like to learn about Row Set Navigator and all DataWebBeans classes. Where do I find these informations.

    jdeveloepr has online documentation for all of this
    also review the tutorials ... provided there .

  • How to clear rows from iterator and re-fetch fresh data from the table ?

    Hi,
    I am using JDev 11.1.1.2.0
    I have generated JPA Service Facade and by using it, I have created Data Control which finally I have dragged & dropped on my .jsff file.
    In viewObject, there is a method clearCache() to clear the viewObject data.
    Iterator has also one method clear() but when it invoked, ADF framework throws StackOverFlow error.
    So, I want to clear my iterator before calling executeQuery() method.
    How Can I clear it ?
    Because In my case if I run executeQuery() method on DCIteratorBinding, it is not getting updated with the lates value from DB table.
    So I want to clear all the rows from iterator and then want to call executeQuery() method to updated latest data from DB tables.
    I have also tried below peace of code to refresh iterator but still iterator getting updated with two same rows () while in DB it is proper.
    FacesContext fctx = FacesContext.getCurrentInstance();
    ValueBinding dcb =
    fctx.getApplication().createValueBinding("#{bindings}");
    DCBindingContainer iteratorbindings =
    (DCBindingContainer)dcb.getValue(fctx);
    DCIteratorBinding dciter =
    iteratorbindings.findIteratorBinding(<iteratorname>);
    dciter.releaseData();
    dciter.executeQuery();
    dciter.refresh(DCIteratorBinding.RANGESIZE_UNLIMITED);
    regards,
    devang

    Hi,
    Have you try to drag and drop to your refresh or query button an "Execute" operation from the Data Control Pallete?
    We are using JPA/ EJB Session Beans and that works for us.
    regards,
    pino

  • FSG Reports : Row Set Account assignments (Display Type to show Account nar

    I have an FSG related issue. I've defined a report using a basic row set and a column set. In my row set, I've used account assignments and the display type as 'Expand' to my natural account. Is it possible to show the narration of the account in the report instead of the natural account number?
    For example, My report now displays '1401' - which is the natural account number. I want to display its narration which reads 'Revenue'
    Miranga

    Hi Miranga,
    it is possible to display the Account code description .. infact you can display both account code and description ... for which you need to create a ROW ORDER and attach it to your FSG Report ...
    Perform the below steps :
    1) Switch responsibility to General Ledger
    2) Navigate to Reports > Define > Order
    3) Enter a name for the ROW ORDER field
    4) In the Account Display section, enter SEQ as 1, Segment as ACCOUNT, order by as VALUE and DISPLAY as VALUE AND DESCRIPTION and Width as 15 ..
    You can increase/decrease the width based on the how the data is appearing in your report output ...
    5) Save the record ..
    6) Navigate to Reports > Define > Report
    7) Query your report ....
    8) In the optional Components section, click on the Row Order field and select the row order you have configured above from List of values ..
    9) Save the changes made to the report ...
    10) Run the FSG report afresh and see the output ...
    Regards,
    Ivruksha

  • FSG Row set Definition

    Hi ,
    In FSG Report Row set Definition,
    we have assigned the one parent account and choose expand for the Natural account . But the requirement is to fetch from multiple set of books , so we copied the same account assignment and assigned different set of books also ... Now my question here is ,
    when i run the report , it shows different row for each set of books .
    is it possible to combine all the rows of the different set of books?
    We are in release 11.5.10.2
    Thanks
    Regards
    Muthu

    Hello Muthu.
    On the query bellow, change the period name, the SOB id and the currency to your needs, run it, and let me know what other info you will need.
    SELECT cc.segment1, cc.segment2, nvl(sum(b.period_net_dr - b.period_net_cr),0) "Period Balance"
    FROM gl_balances b, gl_code_combinations cc
    WHERE cc.code_combination_id = b.code_combination_id
    AND b.set_of_books_id = 52
    AND b.period_name = 'Abril-2011'
    AND b.actual_flag = 'A'
    AND b.currency_code = 'EUR'
    GROUP BY cc.segment1, cc.segment2
    ORDER BY cc.segment2
    Octavio

  • Making set iterator thread-safe?

    Please consider:
    Set set = new HashSet();
    ........... // put stuff in "set"
    for(Iterator it = set.iterator(); it.hasNext(); ) {
      // <------ danger?
      Object s = (Object) it.next();
    }The only way to make this thread-safe??:
    Set set = new HashSet();
    synchronized(set) {
      for(Iterator it = set.iterator(); it.hasNext(); ) {
        Object s = (Object) it.next();
    }A different thread could, in theory, empty "set" between "it.hasNext()" and "it.next()"?
    So the entire (possibly huge/time consuming) "for" loop must be completely synchronized?
    thanks.

    rdkh wrote:
    DrClap wrote:
    Yes, that's correct. If you don't want anything else to monkey with the set while you're iterating over it, then obviously you have to lock everybody else out.what i was trying to explore was the one line of byte code between:
    (line A) it.hasNext()
    // <------- chance of the jvm swapping in a different thread and running its code that references to "set", and performs add/remove on "set" that effects the iterator
    (line B) it.next
    That chance has just got to be near 0. I mean, the lines are right next to each other in the same thread.It can happen so you have to assume it will. Thread safety is not about playing the odds. When the scheduler decides to switch a thread out, it does so. No matter what, it will be between to steps that are right next to each other. The fact that they're also "logically" close is 100% irrelevant.
    And of course, if it's a multicore or multi-CPU machine, you can get other threads coming in between those statements without this thread even being swapped out.
    And synchronizing might in theory hurt performanceBeing fast won't matter if you can't be sure it's right.
    Edited by: jverd on Jan 19, 2010 11:43 AM

  • Setting Row in Iterator by Attribute Value

    Hello,
    I'm using ADF business components in Jdeveloper 10.1.33.
    I have a table that lists some values. I want the user to be able to click a row in that table and have a separate iterator set the current row to one that has the same value as the row in the table.
    I can't just use the key because the view objects have different values, and I can't just use a view link because the table is controlled by the iterator I want to change.
    So far I've tried two methods:
    // My first try was just taking the rowkey from the table and using it to set the key on my other iterator:
    public void selectParentReq(ActionEvent Event){
           FacesContext fctx = FacesContext.getCurrentInstance();
           // From the table . . .
           ValueBinding vb = (ValueBinding) fctx.getApplication().createValueBinding("#{row}");
           JUCtrlValueBindingRef rwbinding = (JUCtrlValueBindingRef) vb.getValue(fctx);
           String rowkey = rwbinding.getRow().getKey().toStringFormat(true);
           // To the iterator . . .
           vb = fctx.getApplication().createValueBinding("#{bindings.vReqtotalp1Iterator}");
           DCIteratorBinding dciterReqView = (DCIteratorBinding)vb.getValue(fctx);
           dciterReqView.setCurrentRowWithKeyValue((String)rowkey );
    // But what happens there is that it tries to send a key of [value, null, null, null]. Which is not right. So next I tried building my own key:
        public void selectParentReq(ActionEvent Event){
           FacesContext fctx = FacesContext.getCurrentInstance();
           ValueBinding vb = (ValueBinding) fctx.getApplication().createValueBinding("#{row}");
           JUCtrlValueBindingRef rwbinding = (JUCtrlValueBindingRef) vb.getValue(fctx);
           Object Engineid = rwbinding.getRow().getAttribute("EngineId");
           Object Levelid = rwbinding.getRow().getAttribute("LevelId");
           Object Parentreq = rwbinding.getRow().getAttribute("Parentreq");
          java.lang.Object[] superkey = {Engineid, Levelid, Parentreq, Parentreq};
           vb = fctx.getApplication().createValueBinding("#{bindings.vReqtotalp1Iterator}");
           DCIteratorBinding dciterReqView = (DCIteratorBinding)vb.getValue(fctx);
           dciterReqView.setCurrentRowWithKeyValue((String)superkey );
          // But I can't cast my Array to String, and I can't find any function that takes the arraw as an argument
        }I feel like I'm missing something really obvious here, and I would really appreciate any help.
    Thanks,
    -Nelson

    How about this? Don't use a view link instance in your application module, but still use a view link definition, and then use its accessor methods.
    E.g., in a service method on the view object class displaying the list:
    public void findMatchingRows(Key keyForThisVo, String targetIteratorName) {
        Row[] selectedRowArray = findByKey(keyForThisVo);
        ViewRowImpl selectedRow = (ViewRowImpl) Row[0];
        RowIterator targetRows = selectedRow.getAttribute("NameOfViewLinkAccessor");
        Row targetRow = targetRows.first();
        RowSetIterator iterator = targetRow.getViewObject().findRowSetIterator(targetIteratorName);
        iterator.setCurrentRow(targetRow);
    }This should find the row matching the key you passed in, get its detail rows, and set the appropriate iterator in the target view object to the first detail row. Expose this as a client method and invoke it.
    (Warning: I haven't tested the above code; it's an outline/example.)

  • Compare current row of iterator with row.rowKeyStr of af:iterator

    Hi,
    I have an af:iterator looping though all employees.
    For each employee I display a button. When the user presses the button then the current row of the iterator is set (with setCurrentRowKey).
    This works so far.
    Now I need to mark the button which represents the current row (e.g. with a red border).
    For this purpose I want to compare empRow.rowKeyStr with the currentRowKeyString of the iterator to determine which button represents the current row.
    But empRow.rowKeyStr and currentRowKeyString of the ADF binding are always different.
                              <af:iterator id="iter2" var="empRow" varStatus="n"
                                           rows="#{bindings.EmployeesView.rangeSize}"
                                           value="#{deptRow.EmployeesView}"
                                           binding="#{backingBeanScope.backing_test_iterator.iter2}">
                                <af:panelGroupLayout id="pgl1" layout="vertical">
                                  <af:outputText value="currentRowKeyString: #{bindings.testEmployeesViewIterator.currentRowKeyString}"
                                                 id="ol1x"/>
                                  <af:outputText value="rowKeyStr: #{empRow.rowKeyStr}"
                                                 id="ol4"/>
                                  <af:commandButton text="#{empRow.LastName}"
                                                    id="cbEmpPos"
                                                    partialSubmit="true"
                                                    inlineStyle="height:80px;"
                                                    action="#{backingBeanScope.backing_test_iterator.invokeSetCurrentRowWithKey}"
                                                    binding="#{backingBeanScope.backing_test_iterator.cbEmpPos}"/>
                                </af:panelGroupLayout>
                              </af:iterator>Any ideas how to solve this issue?
    BTW: skining of af:commandButton which has the focus does not fullfill the requirement as the current row must not have the focus too.
    regards
    Peter

    Hello Timo,
    Thanks for the input. I checked the code in ADF code and both (rowKeyStr and currentRowKeyString) use toStringFormat(true).
    The problem IMO is that I have a tree binding for the nested af:iterator.
    So I have to compare empRow.rowKeyStr with the currentRowKeyString of the child iterator which is the Accessor "EmployeesView".
    At the moment I compare empRow.rowKeyStr with an extra iterator testEmployeesViewIterator --> the key can never be the same :-(
        <tree IterBinding="testDepartmentsViewIterator"
              id="testDepartmentsViewAFIter">
          <nodeDefinition DefName="model.DepartmentsView"
                          Name="testDepartmentsViewAFIter0">
            <AttrNames>
              <Item Value="DepartmentId"/>
              <Item Value="DepartmentName"/>
            </AttrNames>
            <Accessors>
              <Item Value="EmployeesView"/>
            </Accessors>
          </nodeDefinition>
          <nodeDefinition DefName="model.EmployeesView"
                          Name="testDepartmentsViewAFIter1">
            <AttrNames>
              <Item Value="EmployeeId"/>
              <Item Value="FirstName"/>
              <Item Value="LastName"/>
            </AttrNames>
          </nodeDefinition>
        </tree>If I'm able to access currentRowKeyString from the Accessor "EmployeesView" then I should have solved my problem.
    regards
    Peter

  • Sync Mode Immediate, create row causes iterator sync problems

    Hi,
    I'm building an application for a client and in that I've got a master detail ADF data page.
    The 'master' data is user details for the application and the 'detail' data is the various access privileges a user has related to different countries, i.e. update privilege for UK data, read access for Swedish data etc. etc.
    My page consists of a summary of master details (master iterator) in read only fields, a grid of detail records (detail iterator) and for each row in the grid, a 'select' link is provided which when selected, populates an input form on the same page with the details for that row (via setCurrentRowWithKey). The user can then update the details of the row and save.
    Problem I have is when a New detail record is created.
    The user presses a 'New' button (bound to Create action) which sets up the input form for a new detail record. The user enters the new details and presses 'Save' (bound to Commit action). Saving causes the detail grid to refresh (row position moves to 1st row in grid), showing the newly inserted record, however the input form itself on the page still contains the details of the inserted row.
    So if the record I insert should be displayed 3rd in the grid (due to an Order by I have on the VO), it does show up as 3rd. However, if I select the 1st record on the grid, the data for the 3rd is displayed in the input form, if I select the 2nd record on the grid, the data for the 2nd is displayed, if I select the 3rd record on the grid, the data for the 3rd is displayed again and so on. Selecting the 1st record again still displays data for the 3rd record in the input form.
    Somewhere the iterator is getting messed up.
    I always refresh the query at the prepareModel phase but this doesn't fix the issue. I'm using the initializeModelForPage method that was demonstrated in ToyStore. In fact my application is built in the style of the helper functions that were provided with ToyStore (and are an excellent help!)
    Can anyone point me in the right direction to fix this problem?
    I'm using JDev 10.1.2.1 with immediate sync mode.
    Thanks,
    Paul.

    I thought I'd pinned this down to the fact that on the page where there is no iterator problems, the PK of the table is a sequence.
    When I select any row in the grid (via setCurrentRowWithKey) on that page, the rowKeyStr for each row never changes when the page is reloaded (which is what I would expect).
    On the page where there is an iterator problems, each time I selected a row on the grid via setCurrentRowWithKey, the page reloaded and the rowKeyStr for that row had now changed to something else.
    The table underlying this page had a VARCHAR2 primary key. Thinking this was the cause of the problem, I added a new PK based on a sequence and set the previous PK to a unique key only. I changed all the related entity, link and view objects to reflect this. Also made sure that the previous PK field was not selected as a 'Key Attribute' under the view object dialog box. I've gone through the definition of the entity object closely to make sure it reflects the format of the table it's based on.
    Still though on this one page, a select of a row via setCurrentRowWithKey results in a change of the rowKeyStr when the page reloads and also JBO-33035 errors (as I said, pages that do work based on sequence PK tables don't change the rowKeyStr when reloaded).
    Any ideas on this behaviour would be welcome. Could there be something still ‘hanging around’ in the entity or view object definitions that is causing this behaviour? I'm really up against it now on this one.

Maybe you are looking for