• No se han encontrado resultados

Property y Error. Sin embargo, de estos siete objetos uno de los más importantes y

N/A
N/A
Protected

Academic year: 2021

Share "Property y Error. Sin embargo, de estos siete objetos uno de los más importantes y"

Copied!
11
0
0

Texto completo

(1)

Sin duda, la mejor parte de ASP es la relacionada con la facilidad que nos permite para 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 ASP. 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.

Para recuperar datos, examinar resultados y modificar bases de datos, ADO nos proporciona el objeto Recordset. El objeto Recordset tiene las funciones necesarias para, dependiendo de las restricciones de las consultas, recuperar y presentar un conjunto de filas, o registros, de una base de datos. El objeto Recordset mantiene la posición de cada registro devuelto por la consulta, lo que nos permite "recorrer" los resultados de uno en uno.

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. Si utilizamos conjuntamente las funciones especializadas de ambos objetos podremos desarrollar aplicaciones de bases de datos que realicen casi cualquier tarea de tratamiento de datos.

Tipos de Cursor del Recordset

Un cursor corresponde a un tipo de restricción aplicable al Recordset, y que señala la forma en que se podrá recorrer este objeto. Dependiendo de cómo se configuren las propiedades del tipo de cursor del objeto Recordset, 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

(2)

Recordset en forma secuencial, lo mejor es utilizar el cursor por defecto ya que es el que consume menos recursos, agilizando las operaciones. Por el contrario, si

necesitamos recorrer el Recordset de otra forma, estos son los tipos de cursores existentes:

Tipo de Cursor Valor Descripción

adOpenForwardOnly

0 Es el cursor por defecto y nos permite recorrer el Recordset en forma secuencial.

adOpenKeySet

1 Permite movernos hacia delante y atrás. Permite observar las

modificaciones en los datos del Recordset , no así si existen ingresos de nuevos registros.

adOpenDynamic

2 Permite movernos en cualquier sentido, viendo cualquier

modificación, ingreso o eliminación de datos del Recordset.

adOpenStatic

3 Permite movernos en cualquier sentido, pero no se verá ningún cambio ocurrido en la tabla.

Una de las formas de utilizar un tipo de cursor puede ser la siguiente:

rs.Open SQL, oConn, cursor

Donde

rs

y

oConn

corresponden a objetos Recordset y Connection respectivamente, y

SQL

corresponde a la sentencia que contendrá la consulta a la base de datos.

Otra forma de definir el tipo de cursor de un Recordset sería utilizando la propiedad CursorType, de la siguiente forma:

rs.CursorType = cursor

Tipos de Cerrojo del Recordset

(3)

Los cerrojos deben ser utilizados casi obligatoramente 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.

adLockPessimistic

2 Una vez que alguien abre la tabla, ésta queda bloqueada para los demás usuarios. Con este modo se asegura la integridad de los datos.

adLockOptimistic

3 La tabla sólo será bloqueada a los demás usuarios mientras se ejecute una operación Update. De esta forma la tabla se bloqueará durante mucho menos tiempo que con el método anterior.

adBatchOptimistic

4 Los registros serán actualizados en modo batch.

Una de las formas de utilizar un tipo de cerrojo puede ser la siguiente:

rs.Open SQL, oConn, cursor, cerrojo

Donde

rs

y

oConn

corresponden a objetos Recordset y Connection respectivamente, y

SQL

corresponde a la sentencia que contendrá la consulta a la base de datos.

Otra forma de definir el tipo de cerrojo de un Recordset sería utilizando la propiedad LockType, de la siguiente forma:

rs.LockType = cerrojo

Definiendo nuestras Constantes: ADOVBS.INC o METADATA

(4)

Tanto los cursores, como los cerrojos utilizados por ADO deben encontrarse definidos como constanstes en nuestras aplicaciones para poder ser usados en nuestro código.

Uno de los métodos existentes para definir estas constantes consiste en utilizar una biblioteca de tipos de componentes. Una biblioteca de tipos de componentes

corresponde a un archivo que almacena todos los parámetros ADO. Para utilizar este tipo de archivos basta con agregar, al archivo .asp o al Global.asa, la siguiente línea de códigos:

<!-- METADATA NAME="Microsoft ActiveX Data Objects 2.5 Library"

TYPE="TypeLib"

UUID="{00000205-0000-0010-8000-00AA006D2EA4}"-->

Otra alternativa, mucho más simple y por ello más utilizada es la de incluir el archivo ADOVBS.INC. Este archivo se incluye en la instalación del IIS y contiene todas las constantes ADO posibles de utilizar desde ASP. Para poder utilizar este archivo se debe agregar la siguiente línea en nuestro código:

<!-- #include virtual = "adovbs.inc" -->

Una vez que hemos incluido este archivo, podremos utilizar las constantes definidas en él, haciendo referencia a los valores declarados para cada uno de los parámetros ADO. Por ejemplo, si queremos definir un recordset que utilice un cursor de tipo

adOpenKeySet

escribiremos el siguiente código, haciendo referencia al valor 1 que corresponde a la constante

adOpenKeySet

:

rs.Open SQL, oConn, 1

Si quieres saber más del archivo ADOVBS.INC lee este artículo.

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

(5)

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 Recorset.

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 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.

Métodos, propiedades y colecciones del Recordset

(6)

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.

Si quieres aprender más sobre este método visita este artículo.

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 Recorset.

MoveNext

Nos permite recorrer secuencialmente el Recordset, avanzando un registro hacia adelante.

(7)

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:

adAddNew. El Recordset soporta el método 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.

Update

Actualiza la tabla a la que hace referencia el objeto Recordset, haciendo efectivos los cambios realizados.

(8)

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. Para aprender más sobre la paginación de Recordset lee el este artículo.

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:

adEditNone. El registro no se

(9)

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

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á

(10)

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.

(11)

Referencias

Documento similar

Volviendo a la jurisprudencia del Tribunal de Justicia, conviene recor- dar que, con el tiempo, este órgano se vio en la necesidad de determinar si los actos de los Estados

Ésta es una constatación que no se puede obviar en la reflexión sobre la reforma del sistema competencial: la combinación entre un sistema de atri- bución mediante

Dispone de plantillas y galerías de imagen para hacer el trabajo más fácil, pero también permite insertar imágenes propias o externas, textos, audios de SoundCloud y Spotify, vídeos

La vida real, no obstante, proporciona la certidumbre de que, en multitud de ocasiones, el interés de cada uno se satisface con el concurso propio y de otro u otros portadores

- Impacto medioambiental: que el producto o servicio tenga en cuenta consideraciones ambientales en su proceso de desarrollo, con el objetivo de minimizar el impacto sobre el medio

Pinchamos en el botón edit y  añadimos dos o tres columnas de  categorías en las que agrupar los 

Es este el camino que, sin ninguna duda, tienen que tomar otras leyes de nuestro ordenamiento para ofrecer la posibilidad de almacenamiento, tratamiento y transmisión informática

Lo que se pierde en extensión se gana en profundidad, se nos dice. Ello es verdad si se admite que esta profundidad es limitada incluso desde el punto de vista funcional. ¿Por qué se