5 Replies Latest reply on Dec 19, 2002 10:43 PM by 58568

    OO4O 8.1.6 and dynaset eof()

    43601
      I'm having a weird problem since very recently. With some tables, not all of them, the eof() is not detected appropriately. For example, if I loop thru one table, the ODynaset::IsEOF() will be detected after the last record has been read twice. With another table, the EOF() is detected after the MoveNext() that moves the pointer past the last record.

      The one thing that scares me the most is that a simple Select * from table order by blablabla returns all 100 rows, with no double entry of the last record. This query is the same one used within my oo4o Odynaset object.

      Which brings me to the other problem: the Oracle Navigator won't show the 100 records. The scroll bar just les me move around to 79 records.

      Do I have a corrupted database? Or is there a rational explanation, solution, to this situation^

      Thanks in advance for any help and/or moral support!!! :)
        • 1. re:OO4O 8.1.6 and dynaset eof()
          43601
          Either it's a funny bug or I'm going mad.

          After reverting to 8.1.5, the problem still happened with the same table. Only with this table. So I whacked it, recreated it, no luck.

          I deleted a record.... WTF? The ODynaset::IsEOF() is detected when it happens and not on a second attempt. 99 rows in the table.

          I add a record. The problem is back. 100 rows in the table.

          Remove a record. Problem solved. 99 rows in the table.

          I add a record. The problem is back. 100 rows in the table.

          ADD A RECORD. No problem. 101 rows in the table.

          The more I add, doesn't break anything.

          Ok.... is there something I should know about having 100 rows in a table? I'm serious. This is happening with 8.1.5, 8.1.6 prior to release 13.
          • 2. re:OO4O 8.1.6 and dynaset eof()
            43601
            It is happening with Visual C++ 6.0, Service pack 5, OO4O 8.1.5
            • 3. re:OO4O 8.1.6 and dynaset eof()
              43601
              Actually, the problem is not with tables having 100 rows. It happens a query in a ODynaset returns 100 rows. It will read the last record twice before flagging the eof.

              • 4. Re: re:OO4O 8.1.6 and dynaset eof()
                59673
                I have the same problem with this simple sample code :
                ...
                Do While Not myRS.EOF()
                i=i+1
                myVar(i) = myRS.Fields("MYFIELD").Value
                myRS.MoveNext
                Loop
                ...

                I notice that if the amount of data is >2kb (size of an oracle size ?!?) then i'll receive the last record twice.
                Did you get some "official" information about it ?
                • 5. Re: re:OO4O 8.1.6 and dynaset eof()
                  58568
                  You are hitting a bug that was fixed in 8.1.6.3.7. You may want to upgrade, preferrably to the latest 8.1.7.3.15 version available for download here on OTN.