Sunteți pe pagina 1din 12

Base de Datos en aplicaciones Visual Basic

Autor: Hctor Omar Alvarez

1.0 Comenzando Para seguir la lnea de este corto tutorial debes tener conocimientos en Microsoft Access y Visual Basic. Que lo disfrutes. 1.1 Creando una pequea Base de Data Empecemos aclarando algo, Visual Basic no es un administrador de Base de Datos. En trminos generales utiliza el gestor de base de datos Jet de Microsoft Access u ODBC (Open Data Base Conectivity) para organizar los registros. Bueno vamos a lo que vinimos. Primero debes crear una base de datos. Utilizaremos Microsoft Access (utilice la verisin 2000, que es el ms comercial y el que tiene la mayora de los usuarios. Para efectos de este tutorial crearemos una base de datos llamada Video Rental. Luego creamos una tabla y la llamaremos Categora. Deber verse algo as:

Debes seguir estos pasos antes de comenzar a enlazarla con Visual Basic. Graba los cambios. Ve al men de Tools | Data Utilities | Convert Database | To Access 97 format. Te va a pedir que des un nombre porque estas creando una copia de base de datos. Dale el nombre de Videos. Para qu esto?. Es para asegurar la compatibilidad con el driver de gestin que tengas en tu computadora (eso es lo que creo segn mi experiencia.)

1.3 Enlazando Registros

Ahora abrimos el entorno Visual Basic. Crea un formulario y dale el nombre de Pelculas. Cambia la propiedad Caption a "Visualizar videos y categoras". Ahora sigue estos pasos: Crea dos Texbox y dos Labels (No es necesario darles nombres) Deja la propiedad Text del Texbox en blanco. Cambia la propiedad Caption del primer label a "Pelcula" Cambia la propiedad Caption del Segundo label a "Categora" Deber verse algo as:

Ahora llega la parte interesante. Busca en el tool box el objeto llamado Data . Arrstralo al Formulario, cambia el la propiedad Caption a "Moverse entre los registros y quedar as:

Ahora busca en el Property Window la propiedad Database Name del objeto Data presiona y busca el directorio en el cual grabaste la base da datos llamada Videos (recuerda que debe ser esta porque es la que esta en formato Access 97). Localiza la propiedad Record Source y selecciona "Pelculas" (que es nada ms y nada menos que la tabla que creamos en Access).

Si llegaste hasta este paso sin ningn problema te felicito, sino verifica que estes utilizando la base de datos en formato Access 97. Selecciona el primer texbox y localiza la propiedad Data Source y selecciona Data1 (que es el nombre del objeto Data). Ve a la propiedad DataField y selecciona "Pelculas". Selecciona el segundo texbox y repite el paso 9, luego selecciona "Categora" de la propiedad DataField. Presiona la tecla F5 y vers el resultado.

Muvete entre los registros con el Control Data.

1.4 End IF Bueno llego el final de este tutorial pero quiero explicarles algunas cosas. La funcin del objeto Data es enlazar los registros de la base de datos que creaste, pero medio de la propiedad RecordSource a nuestra aplicacin. Como habrs notado no se utiliz ninguna cdigo de programacin para esta pequea aplicacin aunque tambin es posible utilizando el objeto Recordset y sus mtodos. SQL(Structured Query Language) es otra opcin muy interesante y te recomiendo que lo aprendas pues si quieres crear buenas aplicaciones de manejo de datos es una de las mejores tecnologas. SQL es un lenguaje para crear consultas(queries) y bsquedas, puede crear y manipular bases de datos y su contenido. SQL es compatible con todos los lenguajes de programacin ya que es un estandarizado y basado en cdigo ANSI. Adems de utilizar el objeto Texbox para visualizar datos puedes utilizar otros objetos. Uno muy comn es el MSFlexGrid que organiza los datos en forma de tabla

Hola! tavo10! es muy simple! 1) Agrega en visual basic el control llamado Data esta por predeterminado en los controles! 2) Luego Agregas un control llamado DbGrid (Microsoft Data Base Grid) 3) En el control Data1 se encuentra una propiedad llamada Conecction String le das click al (...) => Ubicas la base de datos de access q creaste 4) En ese mismo control tienes una propiedad llamada DataSource => hay vas a ubicar la tabla de access a la cual te refieres q esta dicha informacion q quieres mostrar. 5) En el control DbGrid hay una propiedad llamada DataSource le das click y se te desplegara un ComboBox donde vas a seleccionar el Control q tiene el acceso a los datos en nuestro caso el Data1

Listo ya puedes mostrar tus datos de Access en Visual Basic!! ingresa a visual basic de manera habitual, a continuacion en el menu proyecto selecciona la opcion Agregar Data Environment y se creara una nueva conexion para la que debes establecer propiedades de vinculo de datos.En la ventana de Data Enviroment cambia el nombre del objeto DataEnvironment por el de la base de datos y el de la conexion por el de la tabla. Luego has clck con el boton derecho del raton en el nombre de la tabla y selecciona la opcion Propiedades. En la fucha de proveedor del cuadro de dialogo selecciona el que se ajuste a tu necesidad. En la ficha Conexion del mismo cuadro de dialogo escribe el nombre de la base de datos y la ruta donde se encuentra dicho archivo y has click en el boton probar conexion. si la conexion es satisfactoria preciona el boton aceptar. En seguida en la barra de herramientas de la ventana Data Environment has click en agregar comando y denomine un nombre y has click derecho sobre el comando y selecione Propiedades. Compruebe que este comando utiliza la conexion de tu base de datos y establesca el nombre la tabla a utilizar y presiona Aceptar. Selecciona el comando que has creado y arrastralo hacia el formulario. Desarrolla tu aplicacion como sea necesario

Control Data Con el control Data, podemos acceder a una base de datos, mostrar su informacin, introducir nuevos registros, etc, y todo sin programar ni una sola lnea de cdigo.

Los pasos a seguir para utilizar una base de datos en Visual Basic son: 1. Dibujar el control data y establecer la conexin a la base de datos apropiada. 2. Utilizar otros controles para manejar la informacin. Estos controles son conocidos como controles enlazados, al depender del control data como origen de los datos que muestran. El control data posee varios controles al estilo de un reproductor de vdeo para acceder a los registros anterior, posterior, primero y ltimo. Las propiedades del control data que tienes que establecer para realizar la conexin con la base de datos son:

Connect: Indica el tipo de base de datos a la que vamos a acceder. Por omisin es Access. DatabaseName: Indica el archivo de base de datos a la que se quiere acceder indicando la ubicacin exacta del archivo. RecordSource: Permite indicar el conjunto de datos especfico de la base de datos indicada en la anterior propiedad. Normalmente ser el nombre de una tabla de la base de datos o una instruccin SQL.

Estableciendo adecuadamente el valor de estas tres propiedades tendremos la conexin con la base de datos que queramos. Si conoces la base de datos y el conjunto de datos a los que quieres tener acceso en tiempo de diseo puedes utilizar la ventana de propiedades para establecer estas propiedades, en caso contrario lo puedes hacer con cdigo escrito. Controles enlazados Una vez establecida la conexin a la base de datos e indicando el conjunto de datos a los que vamos a tener acceso mediante el control data, es necesario utilizar otros controles para mostrar o introducir dicha informacin. Estos controles son conocidos como controles enlazados, ya que el origen de la informacin que muestran esta ligado a un determinado control data. Normalmente se utilizan cuadro de texto, cuadros de lista e incluso controles imagen para mostrar el contenido de la base de datos a la que quieres acceder. Todos estos controles pueden actuar como controles enlazados. Existen dos propiedades que tienes que modificar para enlazar los controles con el control data:

DataSource: Indicaremos el control data que actuar como origen de los datos. DataField: Campo especfico al que se enlaza el control.

Por ejemplo:
txtNombre.DataSource = datEmpleados txtNombre.DataField = "Nombre"

Aqu se indica que se ligue el control txtNombre al campo Nombre de la tabla Empleados que se accede mediante el control data (datEmpleados). Este control deber tener correctamente establecidas las tres propiedades anteriormente citadas. Recordsets Al utilizar un control data y establecer la conexin con la base de datos, ests indicando el conjunto de datos sobre los que quieres tener acceso. En Visual Basic a dicho conjunto de datos se les denomina RecordSet, siendo una propiedad del control data. Existen tres tipos de Recordset: Table, Dynaset y Snapsoht. Dicho tipo se establece mediante la propiedad RecordsetType del control data, que predeterminadamente tiene el valor Dynaset. Un Recordset tipo Dynaset es un conjunto dinmico de registros que representan una determinada tabla o el resultado de una consulta, segn se haya establecido la propiedad RecordSource del control data. Puedes agregar nuevos registros, modificar los campos existentes e incluso eliminar registros y todos estos cambios se reflejan en la base de datos afectada. Un Recordset de tipo Table representa una determinada tabla de base de datos. Al crear un Recordset de este tipo estars representando dicha tabla, cargndose en memoria un solo registro que se corresponde con el registro actual. Toda modificacin que se realice se ver reflejada en la tabla. Finalmente el tipo Snapshot crea una copia esttica del conjunto de datos al que se accede mediante el control data. En este caso no puedes actualizar la base de datos, slo puedes visualizar los datos obtenidos. Modificar la base de datos Si crear un Recordset de tipo Table o Dynaset, podrs modificar la base de datos subyacente sin tener que programar ni una sola lnea de cdigo. Al ejecutar la aplicacin, puedes desplazarte a travs de los registros utilizando el control data, cualquier modificacin que realices se ver reflejada en la base de datos al acceder al nuevo registro. Mediante la propiedad DataChanged de un control enlazado, si el valor mostrado por dicho control ha sufrido modificaciones respecto al valor original. En caso afirmativo dicha propiedad entrar en valor True. Aadir registros Se pueden agregar nuevo registros a la base de datos sin tener que programar para ello. En este caso tienes que situarte en el ltimo registro y moverte al siguiente. Si estableces correctamente la propiedad EOFAction al realizar dicha accin se crear un nuevo registro al que se le puede introducir nueva

informacin. La propiedad EOFAction puede tener tres valores y nos indica lo que debe ocurrir cuando se llega al final de un Recordset del control data: Si EOFAction tiene un valor MoveLast, mantiene el ltimo registro como registro actual sin desplazarse al siguiente registro, que no existe, aunque pulsemos el botn del control data para desplazarnos al prximo registro. Si el valor EOFAction deja el registro actual invalidado (ya que dicho registro todava no existe), y desactivas el botn que nos permite desplazarnos al siguiente tienes que controlar esta situacin mediante cdigo ya que cualquier intento de acceder a la informacin del registro actual producir un error al no ser un registro vlido. Si EOFAction posee el valor AddNew, entonces cuando te desplaces ms all del ltimo registro, Visual Basic crear un registro nuevo en la base de datos, donde puedes introducir la nueva informacin. El valor AddNew es el que nos permite aadir nuevos registros a la base de datos sin tener que programar para ello. Para crear un nuevo registro tienes que sobrepasar el ltimo registro que tengas en esos momentos, entonces Visual Basic limpiar el valor de los controles enlazados permitindole introducir la informacin del nuevo registro. Cuando te muevas a otro registro se aadir a la base de datos. Al igual que se puede indicar que debe ocurrir cuando se llegue al final de un recordset, tambin podrs hacerlo cuando se llega al principio mediante la propieda BOFAction del control data de la misma forma que EOFAction.
*

Moverse por un recordset El control data nos permite movernos por un recordset de una forma rpida y sencilla a travs de sus botones. Sin embargo en muchas ocasiones tendrs que escribir cdigo en el que es necesario moverse a un determinado registro rpidamente. Para ello es necesario entender que aunque un recordset es una propiedad de control data, tambin tiene carcter de objeto, por lo que sern aplicables otras propiedades y mtodos. La forma de hacerlo ser con la sintaxis estndar:
NombreControlData.Recordset.NombrePropiedad NombreControlData.Recordset.NombreMtodo

Donde tanto el NombrePropiedad como el NombreMtodo son del recordset u no del control data. Los mtodos que puedes utilizar para desplazarte por un recordset son:

MoveFirst: Nos desplazamos al primer registro del recordset. MovePrevious: Nos desplazamos al registro anterior del recordset.

MoveNext: Nos desplazamos al siguiente registro del recordset. MoveLast: Nos desplazamos al ltimo registro del recordser. Move fila [,inicio]: Permite desplazarnos un nmero especfico de registro hacia delante o hacia atrs respecto al marcador de inicio.

El marcador BOF nos indica que estamos al principio del recordset y el marcador EOF nos indica que estamos al final. Si situas el registro actual en dichos marcadores, no se producir un error pero no podrs acceder a la informacin del registro actual ya que no es un registro vlido. Si se sobrepasa dichos marcadores se producir un error en tiempo de ejecucin. Hay que utilizar las propiedades BOF y EOF para prevenir este tipo de errores. La accin indicada por el valor de las propiedades BOFAction y EOFAction del control data se ejecutan cuando el registro actual se sita en los marcadores BOF y EOF respectivamente. Recuerda que BOFAction y EOFAction son propiedades del control data mientras que BOF y EOF son del recordset. Buscar registros Para buscar registros puedes utilizar los mtodos Find cuando trabajes con recordset de tipo Dynaset o Snapshot, o utilizar el mtodo Seek para un recordset de un tipo Table. El mtodo Find presenta cuatro variantes:

FindFirst: Busca el primer registro que cumple determinado criterio. FindLast: Busca el ltimo registro que cumpla un determinado criterio. FindNext: Realiza la bsqueda hacia delante. FindPrevious: Realiza la bsqueda hacia atrs.

Veamos un ejemplo:
With.datEmpleados .Recordset.FindFirst "Nombre = ' " & txt.Nombre.Text & "'" If Recordset.NoMatch Then MsgBox "Lo siento no es un nombre de empleado vlido" Exit Sub End If End With

Mediante el uso de la estructura With nos evitamos tener que repetir cdigo. As no ser necesario escribir la estructura datEmpleados hasta que llegamos a End With. En la lnea .Recordset.FindFirst "Nombre = ' " & txt.Nombre.Text & "'" es donde se produce la bsqueda de un determinado registro del recordset. Al utilizar el mtodo FindFirst se est indicando que se efecte la bsqueda del primer registro cuyo valor en el campo Nombre coincide con el valor que se ha introducido en el txtNombre. Con el uso del operador & concatenamos para crear el criterio de bsqueda, si por ejemplo se hubiera introducido el valor Coral en el cuadro de texto, esta lnea quedara de la siguiente forma:

datEmpleados.Recordset.FindFirst "Nombre='busqueda'"

Luego utilizamos el mtodo Nomatch del recordset para comprobar, una vez realizada la bsqueda, si se ha encontrado un registro o no. Si no se ha encontrado el registro, el mtodo nomatch devolver True por lo que se mostrar un mensaje mediante el MsgBox y se saldr del procedimiento utilizando el mtodo Exit Sub. Aadir registros El valor AddNew en la propiedad EOFAction del control data nos permita agregar registros, pero esta forma slo es adecuada cuando estamos accediendo a una nica tabla en el recordset. El objeto recordset contiene el mtodo AddNew que permite la creacin de un registro nuevo en blanco donde puedes asignar los valores a sus campos. Una vez introducida dicha informacin, tendrs que hacer uso del mtodo Update del recordset, con el objetivo de que el nuevo registro se actualice en la tabla. Si no utilizas Update el nuevo registro no se agregar finalmente. El cdigo ser: datEmpleados.Recordset.Update La propiedad Bookmark se usa para saltar rpidamente al nuevo registro indicado por el marcador LastModified. Bookmark te permite guardar el puntero del registro actual y colocarse rpidamente en un registro especfico. El cdigo ser:
registroActual = datEmpleados.Recordset.Bookmark Aqu se guarda el registro actual datEmpleados.Recordset.MoveFirst Desplazamos al registro actual datEmpleados.Recordset.Bookmark = registroActual Vuelve al marcador guardado

Eliminar registros Mediante el mtodo Delete, puedes borrar un registro entero de un recordset. En este caso te tienes que situar en el registro y hacer uso de ste mtodo. Tienes que tener cuidado a la hora de eliminar un registro, ya que el registro actual sigue siendo el registro eliminado, por lo que cualquier intento de acceder a la informacin del registro actual provocar un error de ejecucin. Para evitar ste problema es conveniente desplazarno a un registro vlido una vez hayas utilizado el mtodo. No es necesario el uso de Update para hacer efectiva la eliminacin. Un cdigo de ejemplo sera:
If datEmpleados.Recordset.EOF = False datEmpleados.Recordset.Delete If datEmpleados.Recordset.EOF = True Then cmdEliminar.Enabled = True

End If datEmpleados.Recordset.MoveLast End If

En la primera lnea se comprueba si el recordset est vaco, es decir, si la propieda EOF tiene su valor a True. En el caso de que el recordset no est vaco, se realiza la eliminacin del registro actual, ms tarde se vuelve a comprobar si el recordset est vaco ya que se poda haber borrado el nico registro que contena. Finalmente no movemos al ltimo registro con MoveLast, ya que el registro actual no es vlido al haber sido eliminado. En el caso de no existir ningn registro vlido MoveLast nos situar en el marcador EOF.
*

Cuadrcula enlazada a datos En algunas ocasiones desears mostrar ms de un registro a la vez, con sus correspondientes campos. Para ello Visual Basic incorpora un nuevo control llamado Cuadrcula, que se presenta en dos versiones: enlazada y no enlazada. Las dos permiten mostrar informacin de forma tabular, es decir, con un conjunto de filas y columnas. La versin enlazada (DBGrid), es ms apropiada cuando deseamos mostrar informacin proveniente de una determinada base de datos. Al utilizar dicho control puedes mostrar en cada una de sus columnas un campo y en cada una de las filas un registro del recordset del que haya sido enlazado. El control Cuadrcula enlazada a datos no aparece en la caja de herramientas estndar ya que es un control personalizado con el siguiente htmlecto:

Debers agregarlo manualmente a la caja de herramientas, su nombre es Data Bound Grid. El control cuadrcula enlazada a datos aparece inicialmente con dos filas y dos columnas. Se puede modificar en tiempo de diseo esperar que en tiempo de ejecucin, cuando se enlace con un determinado recordset se ajuste al mismo. El primer conjunto de propiedades interesantes de este control es el que establece su comportamiento en tiempo de ejecucin. Las propiedades AllowAddNes, AllowDelete y AllowUpdate nos indican si en tiempo de ejecucin se va a permitir aadir, eliminar o actualizar respectivamente el registro de la cuadrcula. La propiedad que establece el enlace con el correspondiente control data es, al igual que en el resto de controles enlazados DataSource. Sin embargo, no presenta la propiedad DataField ya que cuando utilices una cuadrcula es para mostrar un conjunto de registros, que seguramente tendrn ms de un campo.

Consultas en SQL Cuando quieras mostrar informacin que provenga de ms de una tabla, no tienes ms remedio que utilizar el lenguaje SQL para establecer la correspondiente consulta en la propiedad RecordSource de un control data. SQL es un lenguaje que pretende ser estndar en el acceso a bases de datos relacionales, de forma que independientemente del origen de la informacin, puedas acceder a ella a travs de instrucciones SQL. Puedes establecer la propiedad RecordSource del control data en tiempo de ejecucin y darle el valor de una determinada instruccin SQL, de esta forma el usuario puede especificar lo que quiere extraer de la base de datos. Una vez establecida la propiedad RecordSource, tienes que utilizar el mtodo Refresh del control data para crear el objeto recordset, al haber cambiado la propiedad del recordsource. La instruccin que se utiliza para crear consultas de seleccin SQL es SELECT. La sintaxis de esta instruccin es la siguiente:
SELECT -columnasFORM -tablas[WHERE -condiciones-] [ORDER BY -columnas-]

La instruccin SELECT comienza con dicha palabra y un conjunto de columnas, es decir, el conjunto de campos que queremos que muestren la consulta como resultado de la misma. Seguidamente aparecere la clusula FORM, que identifica las tablas sobre las que se realiza la consulta. Los campos especificados en la clusula SELECT deben pertenecer a las tablas especificadas en FORM. Seguidamente nos encontramos con dos clusulas opcionales como nos indican la presencia de corchetes. La clusula WHERE especifica el criterio que debe cumplir para que un determinado registro aparezca en el resultado de la consulta. Normalmente sern expresiones de comparacin del tipo NombreCampo = Valor o usando ciertas funciones de SQL. La clusula ORDER BY especifica en qu orden aparecern los resultados de una consulta. Tienes que especificar el campo o conjunto de campos por los que se ordenan los registros de la consulta. Tambin puedes indicar si el orden es ascendente o descendente. Vamos a ver un ejemplo:
SELECT Nombre FORM Empleados ORDER BY Puesto

Se especifica que se muestren el campo Nombre de los registros que pertenecen a la tabla Empleados. Si quieres que se muestra ms de un campo, hay que separarlos por comas, y si quieres que se muestren todos los campos de una tabla se puede utilizar el carcter *. As, la consulta devolver todos

los campos de la tabla Empleados.


SELECT Empleados.Nombre, Empleados.[fecha alta] FORM Empleados,TiempoAlta WHERE Empleados.Puesto = TiempoAlta.Puesto

En esta caso se est pidiendo que se muestren los campos Nombre y TiempoAlta de los registros situados en la tabla Empleados y cuyo Puesto exista en algn registro de la tabla Puesto. Si se utilizan ms de una tabla de consultas es conveniente indicar el nombre de la tabla en la clusula SELECT junto al nombre del campo que quieres mostrar, por que las dos tablas podran tener el mismo nombre para uno o ms campos. Si el nombre de un campo est compuesto por ms de una palabra, tienes que utilizar corchetes para delimitarlo. Todas las tablas implicadas aparecen en la clusula FORM separadas por comas. La clusula WHERE presenta el criterio de comparacin. Validar el control data Cuando se interacta con el control data en un formulario podemos utilizar alguno de sus eventos para establecer niveles de validacin de los datos que se han introducido o modificado. El evento ms utilizado es validate. Sucede siempre antes de que el registro actual cambie. Veamos un ejemplo:
Private Sub datEmpleados_Validate(Action As Integer, Save As Integer) Dim respuesta As Integer If Save = True Then respuesta = MsgBox("Quieres guardar los cambios", vbYesNo) If respuesta = vbNo Then Save = False End If End If End Sub

El procedimiento de evento Validate contiene dos parmetros: Action que indica por qu se ha producido el evento y Save que indica se se debe o no modificar la base de datos. As el cdigo utiliza el parmetro Save y permite confirmar, por parte del usuario, que se lleve a cabo la modificacin que se ha realizado. Se se responde No, los cambios no tienen efecto al establecer el valor False del parmetro Save. Tambin se pueden crear reglas de validacin al crear una tabla. As puedes introducir reglas de validacin junto al mensaje que debe aparecer si se infringen, reglas de integridad referencial, etc...

S-ar putea să vă placă și