Visual Basic - Problema con RecordSet

Life is soft - evento anual de software empresarial
 
Vista:

Problema con RecordSet

Publicado por David (1 intervención) el 06/06/2005 10:17:55
Hola a todos: tengo un problema con un recordset.
La propiedad RecordCount del rst1 vale –1 y no se corresponde con el número de registros que hay en rst1, ¿cómo podría solucionar esto? Que tenga el valor de la cantidad de registros que hay en el rst1.

La bd es access2000, el programa lo estoy realizando con vb 6.0 Pro sobre un PC con XP Pro

.................Codigo...................
Dim sBase,sql As String


' Asignar el nombre de la base de datos
' (si la aplicación se ejecuta en el directorio raiz, quitar el \)
sBase = App.Path & "\BD\dbbajas.mdb"

' Crear los objetos
Set Cnn1 = New ADODB.Connection
Set rst1 = New ADODB.Recordset

Cnn1.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & sBase
sql = "SELECT * FROM Tcategorias ORDER BY nombre"
rst1.Open sql, Cnn1, adOpenForwardOnly, adLockReadOnly

rst1.MoveFirst
...........................................................

El Error que me sucede es que cuando llamo a una función, pasándole como parámetro el RecordSet rst1 entre otros más me dice:

Error: Se esperaba una matriz

Yo supongo que como el RecordSet tiene algunos valores que no están bien, como el RecordCount, la tabla tiene 2 registros y con el debug se ve que los ha leído, supongo que algunos de los valores que no están bien guardará relación con el mensaje de error emitido, ¿haber si me ayudáis a encontrar la causa del dichoso fallo?

Un saludo
David
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema con RecordSet

Publicado por Julio Aguilar (69 intervenciones) el 08/06/2005 20:53:40
Mira el problema puede ser otro en tu funcion, pero si queres que la propiedad recordcount te muestre el valor indicado, debes poner la propiedad

rst1.CursorLocation = adUseClient

que establece o devuelve la posición de un motor de cursores tu codigo te quedaria asi:

Dim sBase, sql As String
Dim rs As New ADODB.Recordset

' Asignar el nombre de la base de datos
' (si la aplicación se ejecuta en el directorio raiz, quitar el \)
sBase = App.Path & "\BD\dbbajas.mdb"

rs.CursorLocation = adUseClient
' Crear los objetos
Set Cnn1 = New ADODB.Connection
Set rst1 = New ADODB.Recordset

Cnn1.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & sBase
sql = "SELECT * FROM Tcategorias ORDER BY nombre"
rst1.CursorLocation = adUseClient
rst1.Open sql, Cnn1, adOpenForwardOnly, adLockReadOnly

rst1.MoveFirst

si lo depuras despues de abierto la propiedad te dara el numero 2.

pero como te digo no creo que sea ese tu error, asi que postea tus comentarios para estar al tanto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar