Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Toi - LNL Unidad 3 PDF
Toi - LNL Unidad 3 PDF
CONTENIDOS
1. Controles de acceso y manipulación de datos (DAO): Control Data,
DbGrid, DBCombo, textbox, label;
2. Array de Controles: concepto, diseño y programación. Importancia 1
práctica;
3. DAO: Operaciones ABM (Altas, Bajas y Modificaciones) Y Consultas;
2
4. Formularios MDI y Menús: creación y organización, utilización de
formulario de validación de usuario y contraseña sobre la base de datos;
3
5. Controles de acceso y manipulación de datos (ADO): Adodc, DataGrid,
DataList, DataCombo;
6. Diseño de consultas e Informes: Diseñadores DataEnvironment y
DataReport
ACTIVIDADES
Unidad 3 Tareas
1. Almacenamiento de datos
2. Recuperación de datos
3. Actualización de datos
O lo que más comúnmente se conoce como ABM (altas, bajas y modificaciones) y también las consultas.
Asimismo proporciona una interfaz de programación para datos orientada a objetos que se llama DAO
(Data Access Object).
Visual Basic ya en su versión 5 utilizaba dos conceptos importantes: DAO (Data Access Object) y RDO
(Remote Data Object). DAO es el conjunto de objetos que permiten acceder a una base de datos local y
administrarla utilizando los controladores correspondientes como el Motor Jet de Microsoft. En cambio
para la conexión a bases de datos remotas utilizaba otro conjunto de objetos llamado RDO (Remote Data
Access).
Con la Versión 6 aparece ADO (ActiveX Data Object). ADO que reemplaza a las dos anteriores y está
formada por un conjunto de objetos que pueden conectarse a bases de datos prácticamente de cualquier
tipo (ya sea en forma directa o mediante un origen de datos ODBC). En esta versión 6, por razones de
compatibilidad sigue estando presente DAO.
Como ya expresáramos, Visual Basic versión 6.0 puede conectarse a bases de datos de diferentes tipos
utilizando la tecnología OLE DB haciendo que el entorno de desarrollo pueda utilizarse
independientemente de cuál sea el DBMS de la base de datos. Es decir, es independiente del tipo de base
de datos.
DAO
El modelo DAO es una colección de clases de objetos que modelan la estructura de un sistema de base de
datos relacional. Proporciona las propiedades y los métodos necesarios para poder llevar a cabo las
tareas de administración del sistema de bases de datos relacional. Obviamente se basa en SQL que es el
lenguaje que permite definir y manipular los datos de las bases de datos relacionales.
La programación está simplificada en cuanto al código a escribir por cuanto básicamente consiste en la
creación de objetos de acceso a datos.
DAO es importante porque brinda flexibilidad e integración ya que los mismos objetos sirven para
distintos motores, cuestión importante desde el punto de vista del diseño lógico.
Entonces en Visual Basic los mismos objetos de acceso a datos utilizados en una aplicación tienen la
capacidad de ser utilizados para acceder a distintas bases de datos. Por ejemplo si se usa Microsoft
Access se puede utilizar una base de datos SQL Server u Oracle efectuando unos pocos cambios en el
código.
Existen tres tipos de bases de datos que Visual Basic puede reconocer utilizando DAO:
• Bases de datos de Visual Basic: también llamadas bases de datos nativas y que utilizan el mismo
formato de Microsoft Access (extensión .mdb);
• Bases de datos externas: son bases de datos populares y que utilizan ISAM (Método de Acceso
Secuencial Indexado), por ejemplo Fox Pro, Dbase III, dBase IV, etc. Todos estos formatos
pueden crearse o manipularse desde Visual Basic y tambén se puede tener acceso a bases de
datos de archivos de texto y hojas de cálculo como Excel;
• Bases de datos ODBC: incluyen las bases de datos clienteCservidor que cumplen con este
estandar, por ejemplo SQL Server, ORACLE, etc.
Unidad 3 Página 1 / 16
La siguiente imagen muestra cómo está organizada jerárquicamente DAO:
A simple vista podemos ver que unos
objetos pueden contener a otros
objetos. Por ejemplo o workspace
puede contener a una o más bases de
datos y un objeto Database puede
contener uno o más objetos TableDef
(definición de tablas). Es simple: si no
tengo un Workspace, no tendré una
base de datos.
En el tope de la jerarquía tenemos el
objeto DBEngine que es el único objeto
que no es una colección y no está
contenido en ningún otro. Representa
al motor de la base de datos.
Una característica importante de Visual
Basic es que tiene propiedades y
métodos que pueden separarse como se hace en DML y DDL. En una palabra el Lenguaje de Definición de
Datos consta de métodos y propiedades que permiten definir y crear objetos como la misma base de
datos, las tablas, etc. El Lenguaje de Manipulación de Datos provee propiedades y métodos que nos
permiten operar con la base de datos, como ser: consultas, inserciones, actualizaciones, etc.
Lo más importante de todo es que tiene en cuenta SQL y por ende se puede utilizar el Entorno de
Desarrollo independientemente del tipo de motor de base de datos.
Por lo anterior, Utilizar DDL es totalmente posible en VB, sin embargo nosotros trabajaremos de otra
manera: diseñaremos y crearemos las bases de datos en Access y luego crearemos las aplicaciones para
su manipulación; es decir utilizaremos básicamente DML.
DML y Visual Basic
Básicamente DML presupone que la base de datos ya existe y por lo tanto pueden mencionarse como las
tareas básicas de manipulación de datos a las siguientes:
Si bien el manejo de la base de datos mediante DML es muy eficiente requiere un gran esfuerzo en
cuanto a codificación. Una alternativa más sencilla para manipular datos es utilizar los controles que
Visual Basic trae para ello.
En los siguientes puntos daremos un pantallazo de los principales controles de manejo de datos. En DAO
el principal es el Control Data.
• Control Data
• Control DBGrid
• Control DBCombo
Unidad 3 Página 2 / 16
Estos controles específicos para manejo de datos se utilizan con otros que ya conocen como cuadros de
texto, botones de comandos, etc. que permiten manipular los datos y eventos dentro de una aplicación.
Control Data
El control Data permite que el formulario se vincule a un origen de datos que puede ser una tabla, una
vista o una consulta. En la siguiente imagen se muestra un ejemplo práctico de este control.
Las principales propiedades de este control son: la conexión (Access en el ejemplo), la ruta donde se
encuentra la base de datos y el origen de datos, que en el ejemplo mostrado se ha utilizado una consulta
de selección: SELECT * FROM cargos.
En la sección Actividades del Website encontrará el vínculo Uso del control Data que permite
descargar el archivo ZIP que incluye el Proyecto Cargos (VB) con material teórico complementario en
formato PDF. El proyecto aborda cuatro ejemplos que van creciendo en complejidad, incluyendo las
operaciones de inserción, actualización y eliminación de registros; así como el manejo y diseño de Arrays
de Controles (Unidad 5), que si bien es un adelanto en la planificación, su apropiado manejo permite
diseñar mejor los procedimientos y evitar duplicaciones innecesarias de código.
Control DBGrid
Es el mismo formulario anterior sólo que hemos agregado el Control DBGrid y unos botones. Como puede
apreciarse el origen de datos es el control Data Data1.
Nos interesa poder manipular la tabla Cargos, es decir poder realizar Altas, Bajas y Modificaciones. Un
alta no sería problema ya que el Control Data permite directamente generar un nuevo registro que si no
se completa se elimina. Además como la tabla tiene restricciones de integridad, en lo que hace a la base
de datos, no es necesario ingresar controles de validación.
Unidad 3 Página 3 / 16
Sí es importante, y lo haremos a medida que avancemos que los datos de la tabla o consulta actualizable
no se modifiquen porque sí, ante un error del usuario, por ejemplo.
En las dos siguientes imágenes podemos ver que si nos desplazamos por el DBGrid se modifican los
valores de los cuadros de Texto:
Unidad 3 Página 4 / 16
En esta imagen se puede apreciar cómo se modifican los datos, sin utilizar ningún botón de comando,
directamente accediendo al DBGrid:
En la sección Actividades del Website encontrará el vínculo Uso del control DBGrid que le permitirá
bajar el archivo ZIP que incluye el Proyecto DBGrid (VB) con material teórico complementario en formato
PDF. Los ejemplos que incluye el archivo comprimido van abordando niveles de complejidad creciente,
incluyendo temas que tienen que ver con el manejo de SQL en Visual Basic e igualmente el uso y diseño
de Arrays de Controles.
Control DBCombo
El control DBCombo básicamente permite seleccionar un valor desde una consulta o una tabla.
Como veremos enseguida, permite mucho más. Se puede apreciar en la imagen de la página siguiente.
En la sección Actividades del Website también encontrará el vínculo Uso del control DBCombo
que le permitirá bajar el archivo ZIP que incluye el Proyecto DBCombo (VB) con material teórico
complementario en formato PDF. Como en los casos anteriores, los ejemplos que van abordando un nivel
de complejidad creciente e incluyendo el manejo y diseño de Arrays de Controles, operaciones de
inserción, actualización y eliminación de registros; vinculación de más de dos controles Data a un mismo
formulario, etc.
Unidad 3 Página 5 / 16
2.Array de Controles: concepto, diseño y programación. Importancia práctica;
Concepto, diseño y programación
Cuando manipulamos variables y utilizamos una matriz lo que estamos haciendo es referenciar a un
conjunto de valores bajo un mismo nombre. Una vez que una matriz ha sido definida (de una o dos
dimensiones, por ejemplo), inicializada y cargada con valores éstos pueden ser referenciados mediante
un subíndice.
Ahora no sólo es posible crear matrices para almacenar valores. Pueden crearse matrices de objetos que
es lo que se conoce como matriz de controles.
¿Cómo se crea una matriz de controles? Bueno puede crearse fácilmente en el momento en que uno
intente tener dos objetos con el mismo nombre; en esta situación Visual Basic le dirá que ya existe un
control con dicho nombre, que si desea crear una matriz de controles. Esto ocurriría si tiene en su
formulario un cuadro de texto llamado txtPrueba. Posteriormente copia (con el botón copiar o el comando
del menú) este cuadro de texto y lo pega en el mismo formulario. Al hacerlo le aparecerá el mensaje de
advertencia de que ya existe un objeto llamado txtPrueba. Si lo que desea es crear una matriz de
controles deberá presionar SI.
Podemos analizar la ventana de propiedades y veremos que txtPruba será ahora el nombre de la matriz
de controles y que el primer cuadro de texto se llamará ahora txtPrueba(0) y el agregado recientemente
mediante copia será txtPrueba(1). El número de subíndice siempre empieza en cero (0) y se aumenta en
uno (1) cada vez que se agregue un nuevo control.
Importancia Práctica
Unidad 3 Página 6 / 16
La importancia práctica de este tema está vinculada a aspectos de programación e implementación del
código fuente. Diseño por cuanto con el Array tengo todo el código de eventos relativo a un tipo de
control específico y ello tiene importancia si hay que realizar modificaciones en la pantalla lo cual afecta
el código. De esta forma es más fácil no sólo reutilizar el código en otro tipo de proyectos similares sino
también realizar correcciones y/o agregados.
De todas maneras, con este tema no existe nada mejor que ver cómo funciona para comprender
acabadamente sus ventajas::
• Mediante la utilización de controles visuales que traen incorporadas propiedades relacionadas con
datos y permiten efectuar las operaciones del lenguaje DML mediante el uso de controles
gráficos;
• Mediante la utilización directa de variables y sentencias definidas en los procedimientos para
utilizar el lenguaje DML tanto de SQL como el equivalente DML de Visual Basic.
En uno u otro caso, hay que tener en cuenta la jerarquía de objetos vista en el punto anterior para DAO.
Por lo tanto aquí vamos a definir estos objetos y explicarlos con mayor detalle de lo que se ha visto en el
material teóricoCpráctico propuesto para las Actividades y repasar algunos temas ya vistos en el punto
anterior.
DML o Lenguaje de Manipulación de Datos presupone que la base de datos ya existe y se conoce sus
características. Esto tiene que ver con cuáles son las claves primarias de las tablas, cuáles las claves
foráneas, cuáles son los tipos de datos, si existen validaciones a nivel de campo (cuando un campo es
requerido, por ejemplo), etc.
Las operaciones básicas DML de Visual Basic son:
a. Apertura y cierre de la base de datos: se encargan de abrir y cerrar una base de datos los
siguientes métodos:
• OpenDatabase
• OpenRecordSet
• Close
Unidad 3 Página 7 / 16
OpenDatabase (Archivo) se encarga de abrir la base de datos y ponerla a disposición de DAO a
través de la creación de un objeto Database. Este objeto puede crearse mediante código o bien al añadir
un control Data a un Formulario. [para la práctica recomendamos ver tanto la práctica como la teoría de
base vista en los Proyectos Cargos y DBGrid].
OpenRecordset (Tabla, Tipo) es un
método del objeto Database que devuelve
un objeto Recorset. Un Recordset es un
objeto de Visual Basic que representa un
conjunto lógico de registros; y en definitiva
está representando los registros físicos de
una tabla o de una consulta. El
Recordset es el objeto fundamental
de DML ya que al consultar el Recorset y
manipularlo se puede afectar directamente
la estructura física de la base de datos.
Un RecordSet puede ser abierto de cinco
formas distintas; es decir, existen cinco
tipos de RecordSet: Table, Dynaset,
Snapshot, Dynamic y ForwarConly. La
siguiente tabla resume cada tipo y su
funcionalidad así como las constantes
usuales que se utilizan para declararlos.
Un objeto TableDef representa la
estructura de una tabla de la base de datos, en cambio un objeto Recordset representa a los registros
contenidos en una tabla que pertenece a la base de datos abierta.
En el Proyecto DMLVB en su formulario Cargos5 puede verse un ejemplo de estos métodos.
Close es un método de la base de datos abierta. Su sintaxis es: BaseDeDatos.Close. En los ejemplos
prácticos también encontrará su utilización en un entorno gráfico.
La siguiente imagen muestra la lógica para utilizar los métodos anteriores:
b. Escritura de datos
Para la escritura de datos se utiliza lenguaje DML de Visual Basic con métodos que se aplican sobre el
Recordset:
• AddNew
• Edit
• Update
• Delete
Unidad 3 Página 8 / 16
Recomendamos que se lleve a cabo la práctica propuesta. Pueden abrirse distintos formularios para cada
situación y luego un formulario que contenga un DBGrid para poder inspeccionar en forma visual el
contenido de la tabla Cargos.
En el Proyecto DMLVB, en el Formulario Cargos6, hemos incluido un ejemplo totalmente visual que
puede descargarse desde la Sección Actividades del Website de la materia.
Para comprender los aspectos técnicos de las búsquedas vea el punto siguiente. En el esquema puede
apreciarse una breve descripción de cómo funciona el método Seek.
Existen varias maneras de realizar la búsqueda de datos en Visual Basic aplicando el lenguaje de
manipulación de datos. Una de esas formas, tal vez la más eficiente, es utilizando el método Seek del
objeto Recordset.
Este método tiene la sintaxis: Recordset.Seek comparacion, valor. Para poder utilizarlo debemos
contar con una clave primaria y a su vez el Recordset debe ser del tipo Table. No sirve para efectuar
búsquedas sobre campos que no sean clave primaria.
Para hacer esto es necesario declarar un índice mediante programación utilizando la propiedad
Recordset.index = 'nombre del índice', es decir que el índice es la clave primaria.
Por lo tanto, para su aplicación es necesario primero establecer un índice mediante la propiedad index y
además utilizar el método Recordset.NoMatch que devolverá un valor lógico de True o False según si
la búsqueda tuvo o no éxito.
Las búsquedas son fundamentales puesto que es imposible realizar una modificación o una
eliminación sin efectuar antes una búsqueda en el Recordset.
La diferencia entre Seek y otros métodos existentes como FindFirst, FindNext,
FindPreious,FindLast es que Seek sólo puede utilizarse con claves primarias, utiliza un índice y el
Recordset debe ser del tipo Table.
Los otros métodos para búsqueda mencionados utilizan cualquier campo que no sea clave primaria. En
lugar de utilizar un índice para la búsqueda, la misma se lleva a cabo en base a una condición y no un
índice. Finalmente el Recordset debe ser del tipo Dynaset. Para verificar si se cumple o no la condición
hay que utilizar el método NoMatch.
Un ejemplo típico en el que deberíamos utilizar Seek es cuando queremos obtener un registro único y
paticular. Por ejemplo un empleado en particular, entonces utilizaríamos este método con la clave
primaria IdEmp.
En cambio, si quisiera encontrar todos los empleados que tienen un código de cargo determinado, en este
caso la condición sería 'que el idcargo sea igual a X' y podemos aplicarla con el método FindFirst que
devolverá el primer registro que coincida con la búsqueda; luego con FindNext podremos encontrar el
siguiente registro que cumple con la condición y así sucesivamente.
Estos últimos métodos están desarrollados en forma práctica en el Proyecto DMLVB en el formulario
Cargos7.
Unidad 3 Página 9 / 16
Unidad 3 Página 10 / 16
Cómo trabaja SQL en Visual Basic.
Como sabemos SQL tiene un lenguaje DML que puede aplicarse prácticamente en forma directa, teniendo
en cuenta algunas condiciones específicas, en Visual Basic.
En el Proyecto DBGrid en su formulario DBGrid3 se utilizó DML de SQL en forma directa ya que el
usuario puede ingresar libremente las sentencias SQL. Estudiando el diseño del formulario, que incluye su
código, puede apreciarse que en el caso de las consultas se utiliza la propiedad RecordSource del
control Data. Y cada consulta puede asignarse en tiempo de ejecución ¿por qué?.
En cambio las otras operaciones que modifican ciertamente el contenido de la base de datos utilizan el
método Execute (textoSQL).
También ADO Y OLE DB, tecnologías distintas a DAO, utilizan SQL tanto para operaciones del lenguaje
SQL de tipo DML Y DDL. La diferencia con estas tecnologías es que no tienen un lenguaje incorporado en
Visual Basic de tipo DML o DDL equivalente a SQL.
Este tema está desarrollado en forma independiente en el apunte Diseño de Formularios MDI y
Menús en formato pdf y que incluye material teóricoCpráctico. Está disponible para su descarga en la
Sección Material – Unidad 3 – Manuales.
El Data Report permite crear un objeto DataReport que es de tipo contenedor que contiene secciones y
controles.
Unidad 3 Página 11 / 16
• Sección de detalle: que mostrará los datos que
provienen del origen de datos que casi siempre
es un Recordset proporcionado por un comando
del DataEnvironment.
• Sección de encabezado de página;
• Sección de pie de página;
• Sección de encabezado del informe: se muestra
una sola vez en el informe y en general se utiliza
para identificar el informe y colocar información
relativa a éste
• Sección de pie de informe: como en el caso
anterior se muestra una sola vez y aparece
cuando finaliza el contenido del informe
• secciones de grupo (encabezado y pie de grupo): estas áreas se presentan cada vez que se
produzca un cambio de grupo y permiten manipular funciones de
agrupamiento.
Este control no funciona con DAO sino que necesita de un objeto contenedor especial que es el
DataEnvironment para poder gestionarse.
Sin embargo por lo dicho al principio hay que tener en cuenta unos pasos lógicos no sólo para utilizar
adecuadamente este objeto sino más bien para diseñar los datos que se van a imprimir en papel y que
por lo tanto van a tener una consistencia permanente en la empresa.
1. Hay que tener claro lo que queremos hacer. Por ejemplo podría ser un listado de todos los
empleados, de sólo aquellos empleados que pertenecen a un departamento en particular, de sólo
aquellos empleados cuyo salario es superior o inferior a un valor, etc.
2. Es importante ver qué información relativa al informe vamos a agregar. Por ejemplo es casi
seguro y correcto colocar la fecha de emisión del informe, un número de página y un título.
Opcionalmente puede ser necesario poder colocar un logotipo sólo en el encabezado del informe o
tal vez en cada página. Son cuestiones que tienen que ver con la política de la empresa, en
algunos casos; y en otras a quién va dirigido.
3. Definir el objeto DataEnvironment;
4. Agregar un objeto DataReport
5. Vincular el Data Report con el DataEnvironmet utilizando las secciones y controles de informes
pertinentes.
Data Environment
Unidad 3 Página 12 / 16
El Data Enviroment es un diseñador basado en objetos que sirve para centralizar las conexiones a la base
de datos y que básicamente permite también independizar los accesos y consultas de las bases de datos
de las aplicaciones. Este diseñador permite generar un objeto DataEnvironment que es un objeto
contenedor.
Siguiendo la tecnología ADO implica especificar, entre otras propiedades, las siguientes:
Unidad 3 Página 13 / 16
En las siguientes imágenes
se indican gráficamente
estos pasos para lo cual
hay que posicionarse sobre
la conexión, pulsar el
botón derecho del mouse y
seleccionar la opción
propiedades:
Se selecciona el proveedor
o servidor, en este caso
para poder utilizar Access
97 se elige Microsoft Jet
3.51 OLE DB Provider
Una vez que se ha establecido la conexión se pueden crear comandos. Basta con posicionarse en la
conexión y pulsar el botón derecho del mouse como muestra la imagen.
Unidad 3 Página 14 / 16
Aparecerá la ventana de Propiedades del comando,
que todavía no tiene nombre y por ello figura el
nombre por omisión que coloca Visual Basic:
consulta.
Unidad 3 Página 15 / 16
Asimismo se pueden diseñar, como
también ocurre en Access, distintos
tipos de consultas.
Unidad 3 Página 16 / 16