Método OPEN de ADODB para un Recordset, cómo usar y tipos de parámetros. Recorrer los datos


El objeto Recordset almacena los registros de un comando ejecutado. Una de las peculiaridades de este objeto es que en cada momento, hace referencia a un solo registro, por lo que si nuestra consulta, hubiese dado como resultado 3 registros, el objeto Recordset, mostraría los valores sólo del primer registro. Para moverse por el Recordset, disponemos de los siguientes métodos:

Recorset.MoveFirstPosicionarse en el primer registro
Recorset.MoveLastPosicionarse en el último registro
Recorset.MoveNextPosicionarse en el siguiente registro
Recorset.MovePreviousPosicionarse en el registro anterior
Recorset.Move NumRegistros [comienzo]Posicionarse NumRegistros, dependiendo el valor de comienzo:

0 - adBookmarkCurrent(Por defecto) Desde la posición actual
1 - adBookmarkFirstDesde el comienzo
2 - adBookmarkLastDesde el final

Ejemplos:
Recorset.Move 1 ' Se mueve un registro adelante, igual que MoveNext
Recorset.Move -1, adBookmarkCurrent ' Se mueve un registro atrás, igual que MovePrevious
Recorset.Move -4, adBookmarkLast ' Se posiciona en el último registro y se mueve 4 atrás
Recorset.Move 5, adBookmarkFirst ' Se posiciona en el primer registro y se mueve 5 adelante


El método open del Recordset, permite conectar con el tipo de conexión pasado, cómo una Base de Datos. Su definición es:

Recordset.open comando, conexion, cursor, bloqueo, opciones

Donde:

NombreTipo de datosDescripción
comandoStringCadena con el comando de la sentencia, como una sentencia SQL, una llamada a un procedimiento almacenado, ...
conexionobjeto de conexiónOpcional. Referencia a un objeto de conexión valido (Crear conexión a una BD (Base de Datos))
cursorEntero, CursorTypeEnumOpcional. El tipo de cursor con que se abre el Recordset, puede ser:
-1 (adOpenUnspecified)Cursor sin especificar.
0 (adOpenForwardOnly)Por defecto. Sólo se pueden recorrer los datos hacia adelante, de forma secuencial.
1 (adOpenKeyset)Conjunto de claves, los datos introducidos o eliminados por otros usuarios ó procesos desde que se creo la conexión, no son visibles, sin embargo las modificaciones si.
2 (adOpenDynamic)Dinámico, se puede acceder a todos los datos modificados ó introducidos. No a los eliminados.
3 (adOpenStatic)Estático, se usan los datos como estén en el momento de abrir. No se verán ni modificaciones ni inserciones. Se tendría acceso a los datos eliminados.
bloqueoEntero, LockTypeEnumOpcional. El tipo de bloqueo con que se abre el Recordset, puede ser:
-1 (adLockUnspecified)Bloqueo sin especificar.
1 (adLockReadOnly)Sólo lectura.
2 (adLockPessimistic)El proveedor, hace lo necesario para garantizar que las ediciones son correctas, poco útil para ASP.
3 (adLockOptimistic)El proveedor no hace nada para evitar inserciones incorrectas.
4 (adLockBatchOptimistic)Como adLockOptimistic, por lotes.
opcionesEntero, CommandTypeEnum o ExecuteOptionEnumOpcional. Indica como se debe interpretar el comando, los valores pueden ser combinados mediante el operador de Bits OR. Puede ser:
Tipo de comandos (CommandTypeEnum):
-1 (adCmdUnspecified)Sin especificar.
1 (adCmdText)Lo evalúa como un comando.
2 (adCmdTable)Lo evalúa como un nombre de la tabla, devolverá todas las columnas de esta.
4 (adCmdStoredProc)Lo evalúa como un procedimiento almacenado.
8 (adCmdUnknown)Por defecto. Desconocido. ADO interpretará el comando.
256 (adCmdFile)comando pasará un nombre de fichero de un recordest almacenado.
512 (adCmdTableDirect)Como adCmdTable. Además permite usar el método seek.

Tipo de ejecución (ExecuteOptionEnum):
16 (adAsyncExecute)Se ejecuta de forma asíncrona.
32 (adAsyncFetch)Las filas después del Cachesize, se recupera de forma asíncrona.
64 (adAsyncFetchNonBlocking)Como adAsyncFetch. Los registros no se bloquean mientras se leen.
128 (adExecuteNoRecords)La sentencia no devuelve filas valores.
1024 (adExecuteRecord)La sentencia es un comando o procedimiento almacenado que sólo devuelve una fila



Código:
<%
'Copyright © www.McAnam.com
'http://www.mcanam.com/articulos/ASP.php?id=9

Dim oConexion
Dim oRS

' Creamos la Conexión (http://www.mcanam.com/articulos/ASP.php?id=8)
Set oConexion = Server.CreateObject("ADODB.Connection")
oConexion.open "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\inetpub\wwwroot\bd\db.accdb;"

' Creamos el objeto Recodset
Set oRS = Server.CreateObject("ADODB.Recordset")

' Lo abrimos dinámicamente como solo lectura pasandole un SQL
oRS.Open "Select * from TABLA", oConexion, adOpenDynamic, adLockReadOnly, adCmdText

' Descomentar para abrir secuencialmente y poder insertar y modificar campos pasandole un SQL
'oRS.Open "Select * from TABLA", oConexion, adOpenForwardOnly, adLockOptimistic, adCmdText

' Recorremos y mostramos los 2 primeros registros
Do While NOT oRs.EOF
    response.Write oRs(0) &amp;amp;amp;amp;amp; " - " &amp;amp;amp;amp;amp; oRs(1) &amp;amp;amp;amp;amp; "<br/>"
    oRs.MoveNext
Loop

' Descomentar para modificar el primer campo de la primera fila
'oRs.MoveFirst
'oRs.Fields(0).value = "Texto"
'oRs.Update

' Cerramos las conexiones
oRs.Close
oConexion.Close

%>

Links relacionados:
Crear conexión a una BD (Base de Datos)
Crear origen de datos DSN para conexión ODBC
Leer, modificar e insertar datos en Excel con ADODB
Funciones de conexión a bases de datos
Ejecutar sentencias SQL a un array bidimensional


Para cualquier duda, consulta, sugerencia, opinión, colaboración, etc; no dude en ponerse en contacto con nosotros

Copyright © 2002-2017 [McAnam]. Reservados todos los derechos.
www.mcanam.com