Actualizado el 21 de Marzo del 2018 (Publicado el 6 de Enero del 2018)
10.364 visualizaciones desde el 6 de Enero del 2018
96,7 KB
40 paginas
Bases de Datos en Visual Basic (1)
Visual Basic nos permite trabajar directamente con distintas bases de datos
(ACCESS, dBaseIII, dBaseIV , dBase 5, Excel3, Excel4, Excel5, Excel7,
FoxPro2.x, Foxpro3.0, LotusWK1, LotusWK3, LotusWk4, Paradox3.x, Paradox4.x
y Paradox5.x
Para acceder a estas Bases de Datos basta con introducir un control Data en el
formulario, y fijarle las propiedades apropiadas para que trabaje sobre uno u otro
tipo de base de datos. El control Data nos permite acceder de una forma sencilla a
cualquier base de datos de estos tipos, y sirve de enlace entre la base de datos y
los controles que son habilitados para presentar los datos de esa base.
El Control Data
El control Data puede tomarse directamente de la caja de herramientas. En el
formulario tiene el aspecto de una barra deslizante:
El control Data proporciona acceso a datos almacenados en bases de datos
usando uno de los tres tipos de objetos Recordset. El control Data le permite ir de
registro en registro y presentar y manipular los datos de los en controles
enlazados. Sin un control Data, los controles enlazados con datos de un
formulario no pueden tener acceso automáticamente a los datos.
Los controles enlazados solamente pueden tener acceso a un control Data si
este está en el mismo Formulario.
En el tema de Bases de Datos se emplean términos no conocidos aún. Se irán
viendo a lo largo del curso, pero no queda otro remedio mas que comenzar a
utilizarlos. Se irán haciendo avances de estos términos, que serán explicados en
profundidad en su momento.
Avance de los términos empleados:
Objeto Recordset (conjunto de registros)
Es un conjunto lógico de registros. Los tres tipos de objetos Recordset son
dynaset, (Permite la lectura y escritura de un registro) snapshot
(Realiza una
lectura instantánea de los registros, no permitiendo modificarlos) y table.
(Representación en el código de una tabla base que puede utilizarse para agregar,
modificar o eliminar registros de una sola tabla).
Controles enlazados
Son los controles que pueden presentar directamente datos de uno o varios
campos de una Base de Datos. Los controles DBList, DBCombo y DBGrid tienen
la posibilidad de presentar un conjunto de registros cuando se asocian con un
control Data. Los controles CheckBox, TextBox, Label, Picture, Image, ListBox y
ComboBox también son controles enlazados con datos y pueden asociarse a un
único campo de un Recordset administrado por un control Data.
La mayoría de las operaciones de acceso a datos se pueden realizar usando el
control Data sin escribir ningún código. Los controles enlazados con un control
Data presentan de forma automática los datos de uno o más campos del registro
actual o, en algunos casos, de un conjunto de registros a ambos lados del
registro actual. El control Data realiza todas las operaciones sobre el registro
actual.
Avance de términos
Registro Actual. Un registro es un conjunto completo de campos. Una base
puede tener muchos registros, pero el “puntero” de la base de datos apunta a un
único registro en cada momento. Ese registro al que apunta el puntero se llama
registro actual.
Si el control Data recibe instrucciones de moverse a un registro diferente, todos los
controles enlazados pasan automáticamente los cambios al control Data para ser
guardados en la base de datos. El control Data se sitúa después en el registro
requerido y pasa los datos del registro actual a los controles enlazados donde son
presentados. Esto significa que se pueden modificar los datos de una base de
datos simplemente cambiando los datos en los controles enlazados que lo
permitan, y moviendo el puntero de la base de datos, es decir, cambiando el
registro actual.
Una vez iniciada la aplicación, Visual Basic usa las propiedades del control Data
para abrir la base de datos seleccionada, abrir un objeto Database y crear un
objeto Recordset. Las propiedades Database y Recordset del control Data hacen
referencia a los objetos Database y Recordset recién creados que pueden ser
manipulados por el control Data. Siempre podremos conocer el Recordset usado
por el control Data leyendo esa propiedad
VariabletipoRecordset =Data1.Recordset
Cuando se usa un control Data para crear un objeto Recordset o cuando se crea
un objeto Recordset en el código y se asigna al control Data, el motor de base de
datos Jet de Microsoft puebla automáticamente el objeto Recordset. Como
resultado, los marcadores (y en los objetos Recordset de tipo snapshot, los datos
del conjunto de registros) se guardan en la memoria local; el usuario no necesita
manipular el control Data y no es necesario invocar el método MoveLast en el
código. Los bloqueos de página usados para crear el Recordset se liberan más
rápidamente, haciendo posible que otros objetos Recordset accedan a los mismos
datos. Los objetos Recordset creados en el código pero que no se asignan a un
control Data no son poblados automáticamente por el motor Jet. Se deben poblar
desde el código.
El párrafo anterior exige al menos una explicación.
Cuando se crea un Recordset mediante un control Data, se leen inmediatamente
todos los registros que forman parte de ese Recordset (Recuerde que un
Recordset es un conjunto de registros). De esta forma, en una base que estuviera
compartida por varios usuarios a través de una Red de Area Local (RAL) un
usuario leería todos los datos en el mismo momento de la creación del Recordset
por el control Data, llevaría esos datos a su memoria RAM y no volvería a estorbar
en la base de datos (cuando un usuario de una RAL lee un dato en una BD,
bloquea esta BD mientras dura su lectura y no pueden acceder a ella otros
usuarios) Si el Recordset se crea por código, se lee solamente un registro (la base
se bloquea en el momento de la lectura e inmediatamente se libera), y cuando se
le pide otra operación (p.e. que avance un registro) vuelve a bloquear la BD, lee
ese registro y la desbloquea. En principio el leer el Recordset de una vez parece
que tiene ventajas en aquellas instalaciones que tienen una base de datos
compartida. Todo ello a un precio. Ocupar mas memoria RAM en cada uno de los
PCs de los usuarios. Esta limitación hace en algún caso que no sea posible utilizar
un control Data por falta de memoria RAM en los puestos de usuario.
El control Data puede manipularse con el mouse, moviéndose de registro en
registro o al principio o al final del Recordset. El control Data no permite que el
usuario se pase de los límites del Recordset usando el mouse. No se puede mover
el enfoque al control Data.
Observación muy importante
El control Data crea un objeto Database y un objeto Recordset automáticamente.
Estos objetos de acceso a datos son idénticos a los creados mediante código, y
tienen las mismas propiedades y métodos. Podemos referirnos a ellos usando el
nombre del control Data seguido del nombre del objeto (Database o Recordset).
Por ejemplo:
Data1.Database
Data1.Recordset
El objeto Database creado por un control Data no se cierra aunque se cambie la
propiedad DatabaseName del control Data. Lo mismo ocurre con el objeto
Recordset. Solamente podemos cerrarlos utilizando el método Close:
Data1.Database.Close
Data1.Recordset.Close
Esta observación debe ser tenida muy en cuenta sobre todo cuando la el control
Data abre la Base de Datos de forma exclusiva, o cuando tenemos que hacer una
operación con la Base de Datos que exija que esté cerrada. Por ejemplo, el
método CompactDatabase y otros métodos que veremos más adelante.
Objetos para acceso a datos
Los objetos para acceso a datos Database y Recordset creados por el control
Data pueden usarse en los procedimientos. Los objetos Database y Recordset
tienen cada uno sus propiedades y métodos propios y se pueden escribir
procedimientos que usen estas propiedades y métodos para manipular los datos.
Por ejemplo, el método MoveNext de un objeto Recordset mueve el registro actual
al siguiente registro del Recordset. Para invocar este método, se podría usar el
siguiente código:
Data1.Recordset.MoveNext
El control Data tiene la capacidad de tener acceso a cualquiera de los tres tipos de
objetos Recordset del motor Jet versión 2.0. Si no se selecciona el tipo de
conjunto de registros, se crea un Recordset de tipo Dynaset.
Nota. Las constantes usadas para requerir un tipo específico de Recordset cuando
se usa un control Data son diferentes de las constantes usadas para determinar el
tipo de Recordset creado o que se va crear usando el método OpenRecordset.
Para seleccionar un tipo específico de Recordset, establezca la propiedad
RecordsetType del control Data a:
Tipo de Recordset Valor Constante control Data
Constante OpenRecordset
Table
Dynaset
Snapshot
0
1
2
vbRSTypeTable
vbRSTypeDynaset
vbRSTypeSnapshot
dbOpenTable
dbOpenDynaset
dbOpenSnapshot
Diferencias entre la Edición Standard y la Edición Profesional de Visual
Basic
En cuanto al acceso a datos, la diferencia principal entre las ediciones Estándar y
la Profesional de Visual Basic es la capacidad de crear nuevos objetos para
acceso a datos. En la edición Estándar NO se pueden declarar en el código (con
la palabra clave Dim) variables como objetos para acceso a datos. Esto quiere
decir que sólo el control Data puede crear objetos Database y Recordset.
En la edición Profesional de Visual Basic, Si se puede crear un nuevo objeto
Recordset y asignarlo a la propiedad Recordset del control Data. Todos los
controles enlazados conectados con el control Data permiten la manipulació
Comentarios de: Bases de Datos en Visual Basic (1)