Resumen Ado
Short Description
Descripción: Tema sobre Administracion de Base de datos...
Description
ADO: conexiones, cursores, recordsets, etc.
Por gentileza de F. Salvador
ADO, conexiones, cursores, recordsets, bloqueos, etc. Sin duda, la mejor parte de ASP y Visual Basic es la con el acceso a bases de datos, mediante la utilización de ActiveX Data Objects, más conocido como ADO. Este modelo de acceso a bases de datos se basa en la utilización de siete objetos: Connection, Recordset, Command, Field, Parameter, Property y Error. Sin embargo, de estos siete objetos uno de los más importantes y más ricos en cuanto a las posibilidades que nos brinda para el manejo de datos es el Recordset. Definiendo el Concepto Recordset En términos sencillos, un objeto Recordset es una tabla que contiene los datos que manejará nuestra aplicación. Esta tabla almacena el resultado obtenido por las consultas realizadas sobre la base de datos a la que nos encontremos conectados mediante el objeto Connection. Un Recordset se encuentra formado por filas (registros) y columnas (campos), a las que deberemos hacer referencia para poder acceder a sus datos. Las buenas aplicaciones de base de datos emplean el objeto Connection para establecer un vínculo y el objeto Recordset para manipular los datos devueltos. Ubicación del cursor Un aspecto que afecta al rendimiento y a un uso eficaz de los recursos es la ubicación del cursor. Un cursor puede estar localizado en el cliente o en el servidor. Ubicación
Valor
Descripción
adUseClient
3
Abre un cursor en el lado del cliente.
adUseServer
2
Abre un cursor en el lado del servidor.
Un cursor que reside en el cliente siempre será de tipo estático (adOpenStatic). Tipos de Cursor Un cursor es un conjunto lógico de registros administrados por el origen de datos o por el administrador de controladores ODBC. Dependiendo de cómo se configuren las propiedades del tipo de cursor, se puede recorrer y actualizar los registros. Los cursores de la base de datos se comportan como punteros que permiten encontrar un elemento específico de un conjunto de registros. Los cursores son especialmente útiles para recuperar y examinar registros, y después realizar operaciones basadas en dichos registros. Si lo que necesitamos es recorrer el Recordset en forma secuencial, lo mejor es utilizar el cursor por defecto (adOpenForwardOnly), ya que es el que consume menos recursos, agilizando las operaciones. La siguiente tabla resume los tipos de cursores.
Revisión: 1.0
Página 1
ADO: conexiones, cursores, recordsets, etc.
Por gentileza de F. Salvador
Tipo de Cursor
Valor
Descripción
adOpenForwardOnly
0
Es el cursor por defecto y nos permite recorrer el Recordset en forma secuencial con el metodo movenext. No soportan marcadores (bookmarks). Este tipo de cursor no informa del número de registros obtenidos mediante la propiedad recordcount.
adOpenKeySet
1
Este tipo de cursor crea una lista de claves hacia los registros que pertenecen al cursor, y usa esas claves para acceder a los campos del registro actual. El número de claves no cambia mientras el cursor esta abierto, lo que significa que no se pueden ver las inserciones realizadas por otros usuarios. La ventaja de estos cursores frente a los estáticos, es que se pueden ver las eliminaciones y modificaciones realizadas por otros usuarios. Cada vez que el usuario se mueve a otro registro del cursor, ADO obtiene los datos de la base de datos. Si el registro se ha modificado se obtiene la versión más reciente; si el registro ya no existe porque se ha borrado, ADO se lo saltará. Los cursores controlados por conjuntos de claves se pueden explorar en ambas direcciones. Por su condición de miembro fijo, admite la propiedad recordcount.
adOpenDynamic
2
Es el cursor más flexible y exigente. No lee los registros de la base de datos en el momento de la creación del cursor, sino que se accede a los registros mediante punteros en las filas reales. Si un usuario añade un registro después de la creación del cursor, se inserta una clave en el cursor para el nuevo registro en la posición adecuada. Así mismo, permite ver los cambios y registros eliminados hechos después de abrir el cursor. Los cursores dinámicos no pueden informar del numero de registros (propiedad recordcount) por su condición de miembros no fijos.
adOpenStatic
3
Es una instantánea (snapshot) de la base de datos en el momento de la creación del cursor. Permite movernos hacia delante y atrás. No permite ver las modificaciones que otros usuarios hagan a los registros después de la creación del cursor, ni los nuevos registros que hayan podido surgir desde que se abrió el cursor, incluso si se eliminan registros, su aplicación seguirá pensando que forman parte del cursor. Para actualizar un recordset estático, utilice los métodos Resync o Requery. Debido a su condición de miembro fijo, admite la propiedad recordcount.
Una de las formas más utilizadas para abrir un Recordset, es la siguiente: rs.Open SQL, ConexionActiva, TipoDeCursor, TipoDeBloqueo
Revisión: 1.0
Página 2
ADO: conexiones, cursores, recordsets, etc.
Por gentileza de F. Salvador
Otra forma de abrir un Recordset podría ser esta otra: With rs .Source = " Select * from Clientes order by Nombre" .ActiveConnection = cnGestion .CursorLocation = adUseClient .CursorType = adOpenStatic .LockType = adLockOptimistic End With Tipos de Cerrojo del Recordset Los cerrojos deben ser utilizados casi obligatoriamente en Recordset que hacen referencia a bases de datos con alta concurrencia de usuarios. Mediante la utilización de estos cerrojos podremos controlar el tipo de acceso que le daremos a los demás usuarios cuando alguien ya se encuentre modificando el Recordset. Los tipos de cerrojos que podremos utilizar son los siguientes: Tipo de Cerrojo
Valor
Descripción
adLockReadOnly
1
Es el cerrojo por defecto y no permite modificar los registros de la tabla. Abre el cursor en modo de solo lectura.
adLockPessimistic
2
Con este tipo de cerrojo el registro se bloquea cuando una aplicación comienza a editarlo. Otros usuarios podrán consultar el registro, pero no podrán cambiarlo. El bloqueo se elimina, cuando la aplicación que lo generó, actualiza el registro.
adLockOptimistic
3
Esta es la técnica de bloqueo más común. El registro modificado se bloquea en el momento de su actualización, operación que dura un instante.
adBatchOptimistic
4
Algunas aplicaciones pueden descargar un recordset al cliente, cortar la comunicación con el servidor, actualizar varios registros, e intentar conectar de nuevo para aplicar los cambios realizados. Este método se usa con objetos recordset no conectados.
Una de las formas de utilizar un tipo de cerrojo puede ser la siguiente: rs.Open SQL, ConexionActiva, TipoDeCursor, TipoDeCerrojo Donde rs y ConexionActiva corresponden a objetos Recordset y Connection respectivamente, y SQL corresponde a la sentencia que contendrá la consulta a la base de datos.
Revisión: 1.0
Página 3
ADO: conexiones, cursores, recordsets, etc.
Por gentileza de F. Salvador
Otra forma de definir el tipo de cerrojo de un Recordset sería utilizando la propiedad LockType, de la siguiente forma: rs.LockType = cerrojo Moviéndonos por el Recordset Teniendo claro el uso de los cursores y los cerrojos, podemos comenzar a ver los métodos y propiedades que utilizaremos para recorrer un Recordset. A través de la utilización de los métodos podremos definir el movimiento a realizar, el que será complementado con la utilización de las propiedades que nos permitirán controlar la situación del puntero, evitando que nos salgamos de los límites del Recordset. Método
Descripción
Move
Permite movernos hacia arriba si le indicamos un número positivo, o hacia abajo si le indicamos uno negativo. Ej.: rs.Move -2
MoveFirst
Nos lleva al primer registro del Recordset.
MoveNext
Nos permite recorrer secuencialmente el Recordset, avanzando un registro hacia adelante.
MoveLast
Nos lleva al último registro del Recordset.
MovePrevious
Nos permite recorrer en forma inversa el Recordset, avanzando un registro hacia atrás. Nos lleva al registro anterior.
Las propiedades relacionadas con el movimiento a través del Recordset son las siguientes: Propiedad
Revisión: 1.0
Descripción
AbsolutePosition
Nos indica el número del registro en el que nos encontramos. También lo podemos utilizar para movernos a una determinada posición. Ej.: rs.AbsolutePosition = 5
BOF
Es True cuando nos encontramos al principio del Recordset, antes del primer registro.
EOF
Es True cuando nos encontramos al final del Recordset, después del último registro.
RecordCount
Nos señala el número de registros que contiene el objeto Recordset.
Página 4
ADO: conexiones, cursores, recordsets, etc.
Por gentileza de F. Salvador
Métodos, propiedades y colecciones del Recordset Ahora que hemos visto los aspectos básicos de un Recordset entregaremos al lector una guía con los principales métodos asociados a este objeto, de forma que se pueda profundizar en el estudio y utilización del objeto Recordset. Método
Descripción
AddNew
Crea un nuevo registro en el Recordset. Sólo será insertado en la tabla cuando se aplique el método Update. Ejemplo: rs.AddNew rs("Nombre") = "Rodrigo" rs("Apellido") = "Rohland" rs.Update
CancelUpdate
Cancela un proceso de actualización, ya sea de creación o de modificación de registros.
Clone
Crea una copia del objeto Recordset. Ejemplo: Set rs2 = rs.Clone
Close
Cierra el objeto Recordset utilizado.
Delete
Elimina del Recordset el registro que estemos utilizando en ese momento.
GetRows
Crea un arreglo con el contenido del Recordset.
Move
Permite movernos hacia arriba si le indicamos un número positivo, o hacia abajo si le indicamos uno negativo. Ejemplo: rs.Move -2
MoveFirst
Nos lleva al primer registro del Recordset.
MoveNext
Nos permite recorrer secuencialmente el Recordset, avanzando un registro hacia adelante.
MoveLast
Nos lleva al último registro del Recordset.
MovePrevious
Nos permite recorrer en forma inversa el Recordset, avanzando un registro hacia atrás. Nos lleva al registro anterior.
NextRecordSet
En algunos casos una consulta SQL puede devolver más de un Recordset. Con este método borraremos el Recordset actual y avanzaremos al siguiente.
Open
Abre el objeto Recordset, cargando en él los resultados de la consulta efectuada a una o varias tablas. Ejemplo: rs.Open SQL, oConn, cursor, cerrojo
Requery
Con este método se puede actualizar el objeto Recordset, observándose los cambios ocurridos en los datos.
Supports
Mediante este método podremos validar si el objeto Recordset abierto, soporta algún método o función en particular. Este método nos presente las siguientes posibilidades:
Revisión: 1.0
adAddNew. El Recordset soporta el método Página 5
ADO: conexiones, cursores, recordsets, etc.
Por gentileza de F. Salvador
Update
AddNew. adApproxPosition. Soporta las propiedades AbsolutePosition y AbsolutePage. adDelete. Soporta el método Delete. adMovePrevious. Soporta los métodos Move y MovePrevious. adUpdate. Soporta el método Update.
Actualiza la tabla a la que hace referencia el objeto Recordset, haciendo efectivos los cambios realizados.
Vistos los métodos, pasaremos a analizar las propiedades del objeto Recordset, con las cuales podremos conocer el estado de este objeto durante la ejecución de nuestra aplicación. Propiedad
Descripción
AbsolutePage
Cuando hayamos paginado nuestro Recordset, podremos utilizar esta propiedad para ubicarnos en una página determinada del objeto paginado.
AbsolutePosition
Nos indica el número del registro en el que nos encontramos. También lo podemos utilizar para movernos a una determinada posición. Ej.: rs.AbsolutePosition = 5
ActiveConnection
Sirve para leer el DSN o la ruta correspondiente a la conexión relacionada con nuestro objeto Recordset.
BOF
Es True cuando nos encontramos al principio del Recordset, antes del primer registro.
Bookmark
Devuelve o fija un identificador para el registro actual.
CacheSize
Define el número de registros o filas que el Recordset va a pre-almacenar en la memoria caché.
CursorType
Se relaciona con el tipo de cursor que utilizaremos en el objeto Recordset. Las opciones se analizaron en el apartado "Tipos de Cursor del Recordset"
EditMode
Señala el estado de edición de un registro. Existen tres posibilidades:
Revisión: 1.0
adEditNone. El registro no se encuentra editado. adEditInProgress. El registro se encuentra editado, pero no se ha grabado. adEditAdd. Se ha llamado al método AddNew.
EOF
Es True cuando nos encontramos al final del Recordset, después del último registro.
Filter
Permite filtrar un Recordset, manteniendo sólo los registros que superen ese filtro. Ejemplo: Filtro = "Fecha='" & Date "'" rs.Filter = Filtro Página 6
ADO: conexiones, cursores, recordsets, etc.
Por gentileza de F. Salvador
LockType
Se relaciona con el tipo de cerrojo que utilizaremos en el objeto Recordset. Las opciones se analizaron en el apartado "Tipos de Cerrojo del Recordset"
MaxRecords
Nos permite fijar el número máximo de registros que aceptará el objeto Recordset. El valor por defecto es 0 e indica que no existirá límite.
PageCount
Nos dice cuántas páginas tenemos en función del tamaño de cada página que hemos con PageSize.
PageSize
Define el número de registros o filas que forman una página. Por defecto son 10.
RecordCount
Nos señala el número de registros que contiene el objeto Recordset.
State
Señala el estado del objeto Recodset. Existen las siguientes posibilidades:
adStateClosed. El Recordset está cerrado. adStateOpen. El Recordset está abierto.
Por último, debemos referirnos a las dos colecciones que forman parte del objeto Recordset. Estas colecciones son las siguientes: Colección
Descripción
Fields
La colección Fields representa los campos o columnas del objeto Recordset. Los objetos Field de un objeto Recordset se utilizan para leer y establecer valores para los campos del registro activo del objeto Recordset. Para hacer referencia a un objeto Field en una colección por su número de orden o por su valor de propiedad Name, podemos utilizar los siguientes formatos de sintaxis : Fields(0) Fields("nombre")
Properties
Corresponde al conjunto de propiedades del objeto Recordset, ya sean por defecto o modificadas por nosotros. Accederemos a ellas de la siguiente forma: rs.Propierties(propiedad)
En resumen... El modelo de acceso a datos ADO, y sus objetos asociados nos entregan una manera sumamente fácil, pero no por ello poco poderosa para el acceso a datos. En este artículo, hemos pretendido mostrar de forma sencilla y clara las características, métodos y propiedades más importantes del objeto Recordset, que constituye la base principal para el desarrollo de cualquier aplicación que implique la generación dinámica de contenido HTML, tomando como referencia información contenida en base de datos externas.
Revisión: 1.0
Página 7
View more...
Comments