Resumen RecordCount en ADO   (3 mensajes )

Mensaje enviado por "Jorge Ojeda B." <jojeda@mtt.cl>

Saludos Lister@s:
Acerca del Valor del Recordcount del ADODB.Recordset (a ver si te sirve).
Es un Tip que me llego desde el sitio de ZD Tips. Si te interesa, la direccion es : http://www.zdtips.com/ (en ingles)
Esta Lista es genial!!
Jorge Ojeda B.
_______________________________________

Generate accurate ADO RecordCount values in VB

As you know, the ADO RecordCount property returns the number of records in an ADO recordset.
Of course, in several instances, this property also returns a -1 instead. The value RecordCount returns depends on the recordset's cursor type: -1 for a forward-only cursor; the actual count for a static or keyset cursor; and either -1 or the actual count for a dynamic cursor, depending on the data source.

You may be surprised to learn that RecordCount will be -1 for recordsets created with the Execute method from a Connection or Command object. That's because this method generates a forward-only recordset, which, as we mentioned earlier, returns -1.

As an example, enter and run the following procedure in a standard VB project. When you run it, the message box displays -1 for the recordset based on myConRst, and 6246 for myKeyRst.

Sub TestRecordCount()

Dim myConn As ADODB.Connection
Dim myComm As String
Dim myConRst As ADODB.Recordset
Dim myKeyRst As ADODB.Recordset
Dim sConnection As String
sConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=D:\Microsoft Visual Studio\VB98\Biblio.mdb"

Set myConn = New ADODB.Connection
Set myKeyRst = New ADODB.Recordset

myConn.Open sConnection
myComm = "Select * From Authors"
Set myConRst = myConn.Execute(myComm, , adCmdText)

myKeyRst.Open myComm, myConn, adOpenKeyset
MsgBox "RecCount from Connection: " & myConRst.RecordCount & _
vbCr & "From Recordset: " & myKeyRst.RecordCount

Set myKeyRst = Nothing
Set myConRst = Nothing
Set myConn = Nothing

End Sub

Mensaje enviado por Sergio Daniel Galván <sergioreport@fibertel.com.ar>

    Se me perdió el E-Mail de alguien que preguntaba como utilizar marcadores en un RecordSet de ADO para mostrar la ubicación del Registro en el texto en un Control para hacer algo como:

    Registro: 15/2000


    Recuerdo que alguien propuso correctamente que cambiara el CursorLocation de adUseServer a adUseClient para pasar de "Extremo de Servidor" a "Extremo de Cliente", aprovechando que ADO soporta marcadores para todos los RecordSets Estáticos y de "Conjunto de Claves" del lado del Cliente, y así evitar el -1 que devuelve la propiedad RecordCount.

    Hay una excepción en la que ADO soporta marcadores del lado del Servidor y es con ADO 2.1 o superior y "Microsoft OLE DB Provider for SQL Server" o "Microsoft Jet 4.0 OLE DB Provider". Una buena práctica en todos los casos es verificar que el RecordSet obtenido del Proveedor soporte marcadores con el Método Supports y el parámetro de CursorOptions adBookmark.

    En el caso planteado me parece que eran archivos Fox por lo que las dos excepciones propuestas quedan descartadas.


Sergio Daniel Galván
Report System

Mensaje enviado por AVernieri@juncalnet.com.ar

Hola!

Para que funcione el RecordCount en un recordset ADO se deben dar 3 condiciones:

1) El recordset debe ser estático, no dinámico... puede ser un KeySet, un ForwardOnly... pero no un Dynamic.

2) El cursor debe estar del lado del cliente.

3) El recordset se debe haber "populado" (llenado) La forma más sencilla de hacerlo es hacer un MoveLast seguido de un MoveFirst, pero esto no se puede hacer en un ForwardOnly.

De no cumplirse cualquiera de estas condiciones el RecordCount devolverá True (-1) si existe algún registro y False (0) si no hay ninguno...

Saludos
Alberto



Resumen Resumen

Visual Basic Página de Visual Basic

Página principal Página principal

www.jrubi.com