El Objeto RecordSet

  • 01 de enero de 2001
  • Valoración:
  • 13 Comentarios
  • Manuales de ASP
Describimos algunos de los métodos y propiedades que nos ayudarán a sacar partido de este objeto.
En nuestro manual de ASP I hemos introducido las nociones imprescindibles para la interacción con bases de datos. Hemos explicado cómo conectar con la base de datos y de qué forma podemos llevar a cabo las consultas mediante sentencias SQL.

Sin embargo, temiendo cargar en exceso un manual orientado a aprendices, no hemos presentado de una manera oficial los ADO (ActiveX Data Objects).

Cuando interaccionamos con una base de datos hay tres acciones principales que son llevadas a cabo por tres objetos diferentes:

-Primeramente se realiza una conexión a la base de datos. Esta tarea es realizada por el objeto Connection al cual tendremos que especificar la base de datos a la que nos queremos conectar mediante el interface ODBC.

-El objeto Command se encargará a continuación de ejecutar la sentencia SQL pertinente.

-Los resultados de la selección son almacenados en el objeto RecordSet en forma de una tabla que puede ser consultada y explotada de muchas maneras.

La tabla RecordSet se sirve fundamentalmente de un cursor que se sitúa inicialmente en el primer registro y que puede ser desplazado de múltiples formas a lo largo de la tabla para, de este modo, extraer las informaciones que puedan interesarnos.

Para mover este cursor he aquí los métodos que pueden ser empleados:

Método Descripción
MoveFirst Posiciona el cursor en el primer registro
MoveLast Posiciona el cursor en el último registro
MoveNext Avanza el cursor en un registro
MovePrevious Retrasa el cursor en un registro


Los métodos y propiedades que ofrece este objeto son asombrosamente numerosos. Aquí sólo comentaremos los más frecuentemente utilizados dejando al lector documentarse sobre el resto.

Elemento Descripción
Open Abre el objeto RecordSet
Close Cierra el objeto RecordSet
Eof End Of File. Devuelve el valor True cuando el cursor ha llegado más allá del último registro.
Bof Begining Of File. Devuelve el valor True cuando el cursor está posicionado antes del primer registro. Muy útil cuando se leen tablas al revés.
AbsolutePage En caso de estar paginando los resultados, nos indica la página actual en la que nos encontramos.
PageCount En caso de estar paginando los resultados, nos indica el numero de página s total.
RecordCount Nos devuelve la cantidad de registros contenidos en el objeto RecordSet.
Fields.Count Nos devuelve la cantidad de campos contenidos en el objeto RecordSet


Puede que despues de leer este artículo, todavía resulten vagos algunos conceptos relativos a la aplicación de estos métodos y propiedades. Esperamos que nuestro siguiente capítulo, en donde pondremos en práctica muchos de estos elementos, permita aclararos todo tipo de dudas.

Autor

Rubén Alvarez

Redactor de DesarrolloWeb.com

Comentarios

raul

17/12/2002
He utilizado el metodo RecordCount para contar los usuarios registrados en mi BBDD y siempre salen -1, es curioso porque el resto de métodos sí que me funcionan

RESPUESTA

Se puede utilizar la propiedad recordcount de un recordset, en Access incluso. Lo que ocurre es que, dependiendo del tipo de recordset que abras, tendrás disponible o no dicha propiedad.

Por ejemplo, abriendo el recordset así si que puedes acceder a recordcount

'constantes ADO VBScript
Const adCmdText = &H0001
Const adOpenStatic = 3

'Set Conn = Server.CreateObject("ADODB.Connection")
Set RS =Server.CreateObject("ADODB.RecordSet")
RS.Open sSQL,Conn,adopenstatic,adcmdtext


(Donde sSQL es la variable que tiene la cadena en lenguaje SQL que se quiere ejecutar)

Cesar

23/1/2003
Con RecordSet puedo listar una subconjunto de registros, pero la propiedad RecordCount siempre me da -1, como explicarias esto. Mi solución de momento es crear un contador al interior de un bucle while...

Francisco Dopacio

09/10/2004
Es por que la propiedad Cursortype de
tu recordset es 0 prueba poniendo este codigo

Recordset1.CursorType = 1
donde recorset1 es el nombre de tu recorset

PepeMax

07/12/2004
Es por el modo en que abres las conexion.
Debes abrir el recordset de la siguiente manera:
rs.Open sqlStr, conexion , 2 , 3
lo importante es el numero 2
que indica la modalidad en que funcionara el recordset.
Espero te sirva :)

Juan Linares

21/10/2005
Existe un método para sumar valores de registros?
Por ejemplo: mi recorset me devuelve 25 registros y en un campo determinado hay valores, necesito obtener la suma de dichos numeros pero no a través de SQL pues eso ya lo tengo resuelto. Gracias de antemano

Delfin

15/12/2005
la propiedad recordset puede dar una respuesta si abre el recordset de la siguiente forma
........................
RS.Open sSQL,Conn,1,2

y puedes mostrar por ejemplo cuantos registros se han recuperado en esa conculta
................
if rs.recordcount=0 then
response.Redirect("p_error.htm")
end if

Alfonso Figueroa (Lechu)

17/5/2006
Para poder evitar ese error de que el contador no salga 0, antes de abrir el recorset hay que setearlo con estos parámentros.
rs.cursortype=3
rs.cursorlocation=3
y finalmente el
rs.open

Muchas gracias por la ayuda que me sirvio y espero mi aporte tambien ayude a alguien.

Hugo Ramirez

24/4/2010
problema resuelto
muchas gracias, a mi tampoco me funcionaba el metodo recSet.RecordCount, me daba siempre como resultado -1

pero agregando estos valores a la coneccion RS.Open sSQL,Conn,1,2 si funciona

royser

18/3/2011
thank you
esta muy bueno este programa gracias

JOVANY

10/9/2012
Como puedo actualizar desde visual basic una tabla de acces
Tengo mis datos llenos en una tabla de acces... al dar clic en un boton quiere que dependiendo de una consulta me cambia los valores de un campo a otro (1 a 2 ) como le hago ??? ayuda

sergio

16/10/2012
Contar registros en un Recorset
Felicitaciones a Alfonso Figueroa:<br />
Para contar registros en un Recordset, se debe configurar de la siguiente forma:<br />
rs.Open SQL, cnn, adOpenStatic, adLockOptimistic<br />
<br />
Saludos

Juan

28/2/2013
Gracias por mantener la comunidad asp clasico!
Gracias por mantener la comunidad asp clasico!

Mamen

20/4/2013
La funncion buscar valor pero aplicada a Access
Hola:
En alguna ocasion he utilizado la sintasis siguiente y he consegido que me busque el valor en una tabla y me devuelva el valor o valores que está al lado.
El Access 2007 no me entiende ;(. ¿Me podei ayudar?

Dim MIDB As DAO.Database
Dim mirs As DAO.Recordset

Set MIDB = DBEngine.Workspaces(0).Databases(0)
Set mirs = MIDB.OpenRecordset("CARTERA FERT", DB_OPEN_TABLE)

mirs.MoveFirst
Do Until mirs.EOF
x = Me![Orden Proceso/Orden previsional]
y = mirs![Orden Proceso_8]
If x = y Then
mirs.Index = "PrimaryKey" 'Selecciona el índice, dicho ídice es el
'preestablecido al diseñar la tabla
mirs.Seek "=", y 'Busca el registro

Me![Material] = mirs![Código Material_8]
Me![Denominación] = mirs![Texto Breve de Material_8]


End If
mirs.MoveNext
Loop
mirs.Close

Compartir