Обсуждение: 8.1.1.0, VB6, RDO, rdoResultset.RowCount
Hi. I noticed a difference in behaviour in 8.1.1.0, related with the RowCount property in RDO resultsets in VB6. In version 7xxx, for some specific purposes, I used to open a resultset and immediatly check RowCount. For non-empty resultsets, at this point in time RowCount would be innacurate but NOT EQUAL to 0, and based on this first evaluation I would proceed to the next step, either assuming an empty set or forcing a move to the last row to obtain a precise RowCount. In version 8.1.1.0, RowCount always seems to be EQUAL to 0, unless I force a move to the last row. At this point, my problem is that I don't know which is the right behaviour... Should I assume that in this and later versions of the driver RowCount will always be EQUAL to 0 before visiting the last row ? Thanks in advance. Helder M. Vieira
hi there this was discussed earlier today i think... the recordset has an EOF (end of file) flag. if rs.EOF equals False, then there are rows in the resultset. cheers, thomas ----- Original Message ----- From: "Hélder M. Vieira" <hmv@mail.telepac.pt> To: <pgsql-odbc@postgresql.org> Sent: Thursday, November 10, 2005 2:06 AM Subject: [ODBC] 8.1.1.0, VB6, RDO, rdoResultset.RowCount > Hi. > > > I noticed a difference in behaviour in 8.1.1.0, related with the RowCount > property in RDO resultsets in VB6. > In version 7xxx, for some specific purposes, I used to open a resultset > and immediatly check RowCount. > For non-empty resultsets, at this point in time RowCount would be > innacurate but NOT EQUAL to 0, and based on this first evaluation I would > proceed to the next step, either assuming an empty set or forcing a move > to the last row to obtain a precise RowCount. > In version 8.1.1.0, RowCount always seems to be EQUAL to 0, unless I force > a move to the last row. > At this point, my problem is that I don't know which is the right > behaviour... Should I assume that in this and later versions of the driver > RowCount will always be EQUAL to 0 before visiting the last row ? > > > Thanks in advance. > > > Helder M. Vieira > > > > > > > > > > > > ---------------------------(end of broadcast)--------------------------- > TIP 5: don't forget to increase your free space map settings >
> this was discussed earlier today i think...
>
> the recordset has an EOF (end of file) flag. if rs.EOF equals False, then
> there are rows in the resultset.
Thanks and yes, EOF is indeed a much cleaner way for early testing of a
potentially empty resultset.
But now I have another disturbing situation, that came up during EOF
tests...
If I have a non-empty resultset, traveling all the way (using MoveNext)
until EOF is found doesn't produce a valid RowCount.
Only a MoveLast seems to do the job.
I created a five rows / two columns table, opened a 'select *' resultset and
performed the following sequence:
With ordoRs
.MoveFirst
While Not .EOF
Debug.Print .rdoColumns("f1"), .rdoColumns("f2"), .RowCount ' <----
RowCount is always equal to 0
.MoveNext
Wend
.MoveLast
Debug.Print , , .RowCount ' <---- RowCount is correct
End With
This seems somewhat dangerous to me, although I must say I never made a
similar test with any ODBC driver (as far as I can remember, I always used
MoveLast to get an accurate RowCount).
Helder M. Vieira
easy workaround:
Dim lCount as Integer
lCount = 0
With ordoRs
.MoveFirst
While Not .EOF
lCount = lCount + 1
Debug.Print .rdoColumns("f1"), .rdoColumns("f2"), lCount
.MoveNext
Wend
End With
i never used rowcount, not even when accessing other db-systems: rowcount is
not available for other resultset-modes like forwardonly..
cheers,
thomas
----- Original Message -----
From: "Hélder M. Vieira" <hmv@mail.telepac.pt>
To: <pgsql-odbc@postgresql.org>
Sent: Thursday, November 10, 2005 3:16 AM
Subject: Re: [ODBC] 8.1.1.0, VB6, RDO, rdoResultset.RowCount
>> this was discussed earlier today i think...
>>
>> the recordset has an EOF (end of file) flag. if rs.EOF equals False, then
>> there are rows in the resultset.
>
>
> Thanks and yes, EOF is indeed a much cleaner way for early testing of a
> potentially empty resultset.
> But now I have another disturbing situation, that came up during EOF
> tests...
> If I have a non-empty resultset, traveling all the way (using MoveNext)
> until EOF is found doesn't produce a valid RowCount.
> Only a MoveLast seems to do the job.
>
> I created a five rows / two columns table, opened a 'select *' resultset
> and
> performed the following sequence:
>
> With ordoRs
> .MoveFirst
> While Not .EOF
> Debug.Print .rdoColumns("f1"), .rdoColumns("f2"), .RowCount '
> <---- RowCount is always equal to 0
> .MoveNext
> Wend
> .MoveLast
> Debug.Print , , .RowCount ' <---- RowCount is correct
> End With
>
> This seems somewhat dangerous to me, although I must say I never made a
> similar test with any ODBC driver (as far as I can remember, I always used
> MoveLast to get an accurate RowCount).
>
>
> Helder M. Vieira
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 2: Don't 'kill -9' the postmaster
>