INSTITUTO SUPERIOR TECNOLÓGICO NORBERT WIENER
Manual del Alumno
ASIGNATURA : Lenguaje de Programación II (Visual Basic II)
PROGRAMA: S3C
LIMA-PERU
Índice General
Pag N°
1. Introducción y base de datos... 2
2. Control Ado ... 4
3. El Control Ado Data Control 6.0 (OLEDB)... ... 8
4. El Control Ado Data Control 6.0 (OLEDB)(continuación)... 44
5. El Control Ado Data Control 6.0 (OLEDB)(continuación)... 50
6. Controles Enlazados ... 56
7. Uso de Múltiples Tablas ... 57
8. Uso de Múltiples Tablas (continuación)... 58
9. El Data Environment ...63
10. Visual Basic – SQL ... 69
11. Controles no Enlazados ...70
12. Controles no Enlazados y Módulo de Clase...78
13. Controles Active X...86
14. Funciones Api‟s...91
INTRODUCCION Y BASE DE DATOS
Acceso a Datos:
Los datos se consideran uno de los activos más valiosos de la empresa moderna. Por tal razon, es importante que la misma cuente con una estrategia apropiada para administrarlos adecuadamente; esto es, almacenarlos, recuperarlos y procesarlos de tal forma que sean importantes para la toma de decisiones.
Visual Basic provee soporte a datos de muchas maneras. Se puede utilizar DAO (Data Access Objects) para manipular datos provenientes de Microsoft Jet o Access o Excel, ODBC (Open Database Conectivity), ISAM y tecnologís RDO (Remote Data Object) y ADO (Actives Data Object).
Los Objetos de acceso a datos (DAO) y el control Data utilizan el motor de base de datos Microsoft Jet para tener acceso a las bases de datos. El motor de base de datos Jet puede obtener acceso a tres tipos de bases de datos:
® Bases de datos Microsoft Jet:
Es un motor utilizado por Microsoft Access y Visual Basic. Este motor permite crear y manipular datos directamente.
® Bases de datos del Método de acceso secuencial indizado (ISAM, Indexed Sequential Access Method):
Dada la existencia de formatos conocidos y extendidos mundialmente, como por ejemplo, Btrieve, dBase, Microsoft Visual FoxPro, Paradox, entre otros, DAO permite la manipulación de datos de éstos formatos.
® Bases de datos compatibles con Open Database Connectivity (ODBC, Conectividad abierta de bases de datos):
No solo las bases de datos de escritorio o denominadas “desktop” tienen soporte por parte de DAO. Las bases de datos del estilo cliente/servidor que se ajustan al estándar ODBC, tal como SQL Server, Oracle u otros a los cuales se diseñó su apropiado
“provider” se le da soporte.
Visual Basic también provee otros métodos de acceso a datos, tal y como:
® Control de origen de datos remotos
En la edición empresarial de Visual Basic se dispone de un control de origen de datos
remotos, que soportan ODBC, tal como Microsoft SQL Server y Oracle.
® Bibliotecas ODBC
Le permiten llamar directamente a la interfaz de programación de aplicaciones (API) de ODBC. Está disponible como un producto independiente.
® Bibliotecas SQL para Visual Basic (VBSQL)
Proporcionan un vínculo directo a Microsoft SQL Server. Están disponibles como productos independientes.
Descripción de una Base de Datos:
Hoy día la mayoría de sistemas informáticos que administran la información de una empresa utilizan un esquema relacional. Esto es, relacionan logicamente la información utilizando tablas y entidades que conforman llaves de enlace.
Un esquema relacional presenta los datos como un grupo de tablas que se relaciona logicamente entre si. Por ejemplo, Visual Basic provee la base de datos Biblio.Mdb y en ella radican varias tablas de datos (tales como author y titles) que se relacionan entre si gracias a la duplicacion que existe en ellas del ID u otros campos.
Se puede observar el diagrama de base de datos denominada Students And Classes elaborada mediante asistente en Visual Foxpro, versión 6.0. Observense los campos, índices y relaciones contenidos:
Elementos de una tabla:
La base de datos Students and classes contiene varias tablas que agrupan información, como studentes, assigments, results, entre otras.
En una base de datos, las filas de tablas se denominan registros o tuplas y las
columnas campos. Los registros pertenecen a la descripción de una entidad, por ejemplo,
un cliente, un proveedor, un empleado, un producto, entre otros. Por otro lado, el campo
es parte del registro como puede ser la cedula, el nombre, la existencia, la direccion, el telefono, entre otros. Asimismo, existen índices (que pueden ser de diferentes tipos) y reglas (reglas de validación y de integridad referencial).
Clave principal:
Cada tabla contenida en una base de datos posee una clave principal. Esta es un campo, o la combinación de varios campos, que es exclusiva en cada fila de la tabla. Esto permite identificar de forma uniequivocamente un registro particular, permitiendo que no existan registros duplicados o accesar más rapidamente a un registro o a una colección de ellos. En el caso de la base de la base de datos Students and classes, se tiene una tabla denominada students, donde la clave primaria es studentid, dado que la identificación de todos y cada uno de los estudiantes es única en la colección de registros. Asimismo, en la tabla results se tiene una clave por el mismo campo, siendo una llave que se puede repetir tantas veces como sea necesaria, dado que un estudiante puede registrar todos los resultados obtenidas por materia. En este caso se determina una clave externa, dado que la misma no es propia de la tabla sino de otra que es students.
Registros:
Un registro contiene información referente a una entrada a una tabla. Es preferible que una tabla no contenga duplicados. En este caso es una tabla maestra. En el caso de la tabla Students, es necesario que cada estudiante tenga su propio Id y no exista otro similar en la tabla. Sin embargo, en registros históricos se repetirá tantas veces una llave como sea necesario.
Campos:
Un campo de una tabla identifica una parte de un registro. Por ejemplo, la tabla students contiene los campos studentid, lastname y firstname, entre otros.
Indices:
Los indices de una tabla son listas ordenadas en las que se puede localizar más rápidamente un determinado registro o conjunto de ellos. Se crean en base a un campo de la tabla, tomando como requerimiento cuál de ellos representa una entidad fuerte dentro de la colección o cuál es el adecuado para ordenar un conjunto de registros.
Conectividad a datos en Visual Basic:
Existen dos métodos para abrir una base de datos en Visual Basic: utilizando el Data Control (el cual es un objeto provisto por Visual Basic) o mediante el método OpenDatabase.
El control data es un objeto provisto por Visual Basic para la manipulación de datos en una o varias tablas.
El control data implementa este acceso mediante la utilización de un motor de bases de
datos tal como Microsoft Jet. Existen métodos apropiados para la manipulación de datos y
se provee de una herramienta de generación automática de formularios que se encarguen de
dicha manipulacion, sin necesidad de escribir mucho código.
Para construir una aplicación de bases de datos, utilizando el control data, se recomienda seguir los siguientes pasos:
1. Agregar un control data al formulario y configurar las propiedades Databasename, connect y recordsource, principalmente. Lo anterior para establecer la base de datos a la que se va a conectar el formulario, el tipo de conexión (por defecto es Microsoft Access) y el origen de datos (la tabla de la base de datos abierta).
2. Agregar controles tales como text box o label para que contengan los datos del recordsource. Aqui hay que configurar datasource y datafield como las propiedades que se conectarán a los datos del data control.
Usar controles enlazados a datos:
Cuando se utiliza un data control en un formulario generalmente es necesario diseñar controles que permitan contener los datos cargados en dicho data control. Estos controles pueden ser CheckBox, Image, Label, PictureBox, TextBox, ListBox, ComboBox y los contenedores OLE.
Propiedades y Métodos del Control Data:
Además de las propiedades Databasename y RecordSource el data control posee otras propiedades y métodos, tales como:
® Propiedad Connect
® Propiedad Exclusive
® Propiedad ReadOnly
® Propiedad Recordset
® Propiedades BOFAction y EOFAction
® Método Refresh
La Propiedad connect especifica el tipo de base de datos que se abrirá. Puede incluir argumentos tales como Id de usuario y la contraseña.
La propiedad Exclusive determina si la base de datos será abierta en forma exclusiva o no. Si el valor de esta propiedad es True la base de datos se abrirá exclusivamente y ninguna aplicación podrá utilizarla hasta que se cierre.
La propiedad ReadOnly determina si la base de datos se abrirá para solo lectura o no.
Si la propiedad es True no se podrán modificar los datos obtenidos.
El objeto Recordset contiene los registros devueltos para el data control, basado en una apertura de una tabla o producto de la ejecución de una instruccion SQL. Un recordset tiene propieades y metodos que se pueden utilizar para trabajar con los registros obtenidos.
Las propiedaes BOFAction y EOFAction determinan que acción realizar cuando las
propiedades BOF o EOF del Recordset son True. Por ejemplo, si la propiead EOFAction
del control data es vbAddNew y utiliza el control data para situarse trás el último registro del
recordset, el control data ejecutará automáticamente el metodo AddNew para incluir un
nuevo registro.
El método Refresh actualiza un objeto recordset. Si se cambia la propiedad RecordSource del data control, se deberá llamar a este método para actual el conjunto de registros en el data. Lo siguiente es un ejemplo de lo anterior:
Data1.RecordSource = "SELECT * FROM Empleados " & _
"WHERE [IdEmpleado] = " & txtEmpID.text Data1.Refresh
Recordset:
Es el conjunto de registros contenidos en el control data. Un Recordset se almacena en la memoria, transfiriendo los datos contenidos al disco, si fuera necesario.
Para manipular un Recordset debe utilizarse la propiedad del mismo nombre del data control.
Para determinar los límites de un Recordset se utilizan las propiedades EOF y BOF.
Cuando se desplace al último registro (EOF) o al inicio del archivo (BOF), se ejecutará la acción indicada por el valor de la propiedad BOFAction o EOFAction. Seguidamente se muestra como Microsoft grafica estas propiedades:
Asimismo, se muestra como utilizar un objeto Recordset de un determinado control Data:
Data1.Recordset.MoveNext 'Va al registro siguiente.
If Data1.Recordset.EOF Then Data1.Recordset.MoveLast End If
El ejemplo anterior muestra como desplazarse al registro siguiente en el Recordset y posteriormente validar si se ha llegado al final del mismo.
Se pueden utilizar otros métodos y propiedades del objeto Recordset para recuperar, agregar, modificar o eliminar registros de este objeto.
Las propiedades BOF y EOF del objeto Recordset indican si el registro actual está
al inicio o al final del Recordset, respectivamente. Si lo anterior es verdadero, se asignará
True a la propiedad respectiva. Si ambas son verdaderas es que no existen datos en el
Recordset.
Método AddNew:
El metodo AddNew de un objeto Recordset se utiliza para agregar un nuevo registro.
Cuando se ejecuta este metodo, Visual Basic elimina los controles enlazados y asigna a la propiedad EditMode del control data el valor dbEditAdd.
Para actualizar un registro en el Recordset luego de utilizar AddNew debe utilizarse el método UpdateRecord o Update. Lo siguiente muestra este aspecto:
Sub cmdAdd_Click ()
Data1.Recordset.AddNew End Sub
Metodo UpdateRecord:
El método UpdateRecord se utiliza para guardar el registro actual en una base de datos. Es decir, posterior al metodo AddNew, tal y como se muestra a continuación:
Sub cmdUpdate_Click () Data1.UpdateRecord End Sub
Metodo CancelUpdate:
Se utiliza para cancelar un método AddNew o Edit y actualizar los controles enlazados al control data. Es decir, restaura los datos originales del Recordset. A continuación se muestra el uso de este método:
Sub cmdCancel_Click () Data1.CancelUpdate End Sub
Metodo CancelUpdate:
Este método se utiliza para eliminar un registro de una tabla. El registro eliminado continuará siendo el actual hasta tanto el usuario no realice ninguna otra acción, tal y como se muestra en el codigo siguiente:
Sub cmdDelete_Click () Data1.Recordset.Delete Data1.Recordset.MoveNext If Data1.Recordset.EOF Then Data1.Recordset.MoveLast End If
End Sub
Usando Objetos Recordset
Un recordset es un objeto que presenta los registros de una tabla o el resultado de una consulta. Se pueden usar objetos para manipular los datos de una base de datos a un nivel de registro.
Se puede usar objetos “Field” para manipular los datos de un archivo a un nivel de registro.
Los cuatro tipos de recordset son:
Table, Dynaset, Snapshot y Forward-Only
Table: Este Recordset puede ser creado para una tabla Microsoft Access, pero no soporta ODBC (Open Database Connectivity) o tablas ligadas. Es decir, funciona para una sola tabla de Microsoft Access. Cuando se crea una tabla, el motor de bases de datos JET abre dicha tabla y subsecuentemente se produce la manipulacion de los datos, operando directamente sobre la misma.
Una ventaja importante de este tipo de recordset es que se puede utilizar un indice. Esto hace más eficiente la ordenacion de registros mediante un índice, mejorando significativamente las opciones de búsqueda. Para localizar un determinado registro se puede utilizar el metodo SEEK y no FIND, dado que este ultimo es mucho más lento.
Dynaset:Este recordset puede crearse sobre una o varias tablas, mediante consultas.
Esto es mediante un conjunto de referencias a registros en una o más tablas.
Con un dynaset, se pueden extraer y actualizar datos desde una o varias tablas, incluyendo las ligas que puedan existir con otras bases de datos. La actualizacion heterogenea es una caracteristica importante de los dynaset.
Uno de los más importantes beneficios es que los cambios realizados sobre una tabla se realizan tambien en otra que se encuentra ligada a ésta.
Asimismo, los cambios hechos por otros usuarios se reflejan en el dynaset.
El dynaset es el más flexible y poderoso de los demás tipos de recordset, sin embargo es mucho más lento que, por ejemplo, el tipo table.
Snapshot:Este recordset es una copia estática de un conjunto de registros, capturados en el momento de crearse el recordset. Este puede contener campos de una o más tablas de una base de datos. Este recordset es actualizable.
La principal ventaja de un snapshot es que éste crea menos “overhead” en el procesamiento que los demás recordset. Además se pueden ejecutar consultas y retornar los valores más rápidamente, especialmente cuando se trabaja con ODBC.
Se debe considerar que para archivos MDB, OLE y archivos memo son
direccionados por punteros en la consulta.
Forward-Only: Este tipo de recordset (muchas veces denominado forward-scrolling snapshot o forward-only snapshot) provee un subconjunto de capacidades de un snapshot. Con este objeto se puede mover solo en dirección adelante a traves de registros. Solo se soporta los metodos Move o Move Next. La ventaja de este tipo de recordset es que usualmente provee la mayor velocidad entre los demas recordset. Sin embargo, ofrece la menor funcionalidad que los demas.
Un Snapshot almacena una copia de todos los registros (excepto objetos OLE y campos memo).
Un Dynaset almacena justamente la llave primaria para cada registro, copiando la totalidad de registros solo cuando es necesario para edicion o propositos de despliegue. Desde un snapshot almacena una copia completa de todos los registros en una tabla, éste puede rendir más lentamente que un dynaset si el numero de registros es muy cuantioso. Para determinar cuando usar un dynaset o un snapshot se pueden abrir ámbos, ejecutar la misma consulta y comparar los tiempos de respuesta.
El tipo de recordset que se use depende de lo que el usuario debe hacer con los datos. Puede que solo desee realizar una vista o que además deba actualizarlos. Por ejemplo, si el usuario desea ordenar los datos o trabajar con indices, usese un tipo table, dado que estos estan indexados y son más rapidos de localizar. Otro caso es que si el usuario desea actualizar un conjunto de registros seleccionados por una consulta, debe usarse el dynaset.
Finalmente, si la tabla que se desea consultar pocas veces está disponible y se desea realizar una busqueda en un conjunto de registros determinados puede usarse un tipo forward-only.
Creando una variable objeto:
Para crear una variable objeto, debe usarse el método OpenRecordset. Primero debe declararse el tipo de variable y el grupo de variables para el objeto, retornado por el metodo OpenRecordset. Puede usarse el método OpenRecordset con Database, TableDef, QueryDef, y objetos existentes.
La sintaxis del método OpenRecordset es:
La sintaxis del método OpenRecordset para todos los tipos de objetos es:
Set variable = database.OpenRecordset (source [, type [, options [, lockedits ]]])
Set variable = object.OpenRecordset ([type [, options [, lockedits ]]])