Está en la página 1de 6

Facultad de Ciencias y Tecnologas Departamento de Computacin Laboratorio de Diseo de Base de Datos

ACCESO A UNA BASE DE DATOS DESDE VB


Objetivo: Conocer y aprender a trabajar en una nueva plataforma (windows) con aplicaciones que necesiten acceso a una base de datos MySQL.

Introduccin. El desarrollo de aplicaciones con acceso a una base de datos MySQL en plataforma Windows es muy similar y a la vez sencillo como trabajar en plataforma Linux. El desarrollo de las aplicaciones realizadas en Linux se hizo utilizando un entorno de desarrollo muy parecido a Visual Basic y el gestor de bases de datos fue el mismo con el que vamos a trabajar en el desarrollo de esta practica, es por esa razn que nos limitaremos a darles solamente informacin bsica sobre las diferencias mnimas en cuanto a modo de conexin y manipulacin de la base de datos. Cualquier ayuda adicional que se requiera para el desarrollo de dicha prctica puede consultarse la ayuda completa que trae Visual Basic, o la bibliografa mencionada en este trabajo. Configuracin del controlador ODBC. El controlador MySQL con el que vamos a trabajar es el mysql-odbc-3.5.1, por tanto debe estar instalado en su ordenador para poder realizar esta practica. Antes de establecer la conexin con la base de datos hay que configurar el controlador ODBC a travs del cual podremos acceder a ella. Para ello realice los siguientes pasos: 1) Desde Inicio, escoja Panel de control - Herramientas Administrativas - Origen de Datos ODBC. 2) Luego de clic sobre el botn Agregar, aparecer una lista de drivers, seleccione el driver MySQL ODBC 3.5.1 driver, y de clic en el botn finalizar. 3) A continuacin aparecer un cuadro de dialogo en el que se deben especificar los siguientes campos y luego clic en OK

Data Source Name Server User

Cualquier nombre que haga referencia a la fuente de datos. Por Ej.: myodbc Localhost Root
1

Facultad de Ciencias y Tecnologas Departamento de Computacin Laboratorio de Diseo de Base de Datos Password DataBase Clave de acceso a mysql Base de datos a conectar

Con esto ya tenemos configurado y asignado un nombre para nuestro controlador ODBC. Como establecer la conexin desde Visual Basic con MySQL.
1. Declarar un objeto de tipo Connection y uno de tipo Recordset. Public con As ADODB.Connection Public rt As ADODB.Recordset Para que reconozca el objeto connection y el recordset es necesario agregar las referencias. Para ello nos vamos a proyecto referencia y agregar Microsoft ActiveX Data Objects 2.8 Library

Objeto tipo Connection: Sirve para establecer la conexin y apertura de la base de datos. Objeto tipo Recordset: Sirve para acceder a una tabla especfica de la base de datos y manipular sus registros. Una forma de realizar la conexin es a travs de una funcin la cual ser llamada desde el espacio de trabajo que sea necesario. Por Ej.

Public Function conexion() Set con = New ADODB.Connection con.CommandTimeout = 40 con.CursorLocation = adUseClient con.Open "Server=localhost;Provider=MSDASQL;UserId=root;Password=12345; Data Source=biblioteca;db=biblioteca" End Function
Para poner en prctica todo lo comentado anteriormente vamos a realizar una aplicacin con acceso a una base de datos MySQL, la cual les servir para poder desarrollar posteriormente una aplicacin propuesta. Aplicacin control de prstamos de libros de una biblioteca El proyecto consiste en la creacin de una aplicacin para el control de prstamos de libros en la cual se pueda tener un registro de todos los prstamos, modificarlos y borrarlos en caso necesario.

Facultad de Ciencias y Tecnologas Departamento de Computacin Laboratorio de Diseo de Base de Datos 1. Crear una base de datos llamada biblioteca con las siguientes tablas Create Database BIBLIOTECAS; use BIBLIOTECAS;
create table autor(cod_autor int auto_increment, nombre_autor varchar(30), pais varchar(15), constraint pk_autor primary key(cod_autor)); create table editorial(cod_editorial int auto_increment, nombre_editorial varchar(30), pais varchar(15), constraint pk_editorial primary key(cod_editorial)); create table usuario(cod_ident int auto_increment, nombres varchar(30), apellidos varchar(30), telefono varchar(9), direccion varchar(250), fecha_nac date, sexo char(1), estado_civil varchar(10), centro_estudio varchar(50), constraint pk_usuario primary key(cod_ident)); create table libro(cod_libro int auto_increment, titulo varchar(30), cod_editorial integer, cod_autor integer, fecha_pub date, ejemplares integer, n_pag integer, idioma varchar(30), edicion varchar(5), constraint pk_libro primary key(cod_libro), constraint fk_lib_edit foreign key(cod_editorial) references editorial(cod_editorial) on delete cascade on update cascade); create table bibliotecario(cod_biblio int auto_increment, nombres varchar(30), apellidos varchar(30), direccion varchar(250), cargo varchar(100), constraint pk_bibliotecario primary key(cod_biblio)); create table prestamo(cod_prestamo int auto_increment,
3

Facultad de Ciencias y Tecnologas Departamento de Computacin Laboratorio de Diseo de Base de Datos


cod_libro integer, fecha_prestamo date, fecha_entrega date, cod_ident integer, tipo_prestamo varchar(10), entregado varchar(2), multa float, cod_biblio integer, constraint pk_prestamo primary key(cod_prestamo), constraint fk_lib_prest foreign key(cod_libro) references libro(cod_libro) on delete cascade on update cascade, constraint fk_prest_usuario foreign key(cod_ident) references usuario(cod_ident) on delete cascade on update cascade, constraint fk_prest_biblio foreign key(cod_biblio) references bibliotecario(cod_biblio) on delete cascade on update cascade);

2.

Creacin de la Interfaz de la Aplicacin

Formulario para la entidad autor

Cdigo necesario para el formulario frmautor Botn Nuevo


Private Sub cmdnuevo_Click() txtcodigo.Text = "" 4

Facultad de Ciencias y Tecnologas Departamento de Computacin Laboratorio de Diseo de Base de Datos


txtnombre.Text = "" txtpais.Text = "" End Sub

Boton Eliminar
Private Sub cmdeliminar_Click() 'elimina el autor senalado If (MsgBox("Eliminar registro", vbYesNo, "Eliminar Registro") = vbNo) Then Exit Sub End If Dim rt As Recordset Dim i As Long conexion Set rt = New Recordset rt.Open "delete from autor where cod_autor='" & MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 0) & "'", con, adOpenStatic, adLockOptimistic con.Close 'para cargar el listado actualizado Form_Load cmdnuevo_Click End Sub

Boton Guardar
Private Sub cmdguardar_Click() 'para grabar los datos de un nuevo autor Dim rt As Recordset Dim i As Long conexion Set rt = New Recordset rt.Open "SELECT * from autor where cod_autor='" & Text1.Text & "'", con, adOpenStatic, adLockOptimistic 'en caso de que encuentre lo actualiza caso contrario aade If rt.EOF Then rt.AddNew rt!cod_autor = Text1.Text rt!nombre_autor = Text2.Text rt!pais = Text3.Text rt.Update Else rt!cod_autor = Text1.Text rt!nombre_autor = Text2.Text rt!pais = Text3.Text rt.Update End If con.Close Form_Load End Sub

Facultad de Ciencias y Tecnologas Departamento de Computacin Laboratorio de Diseo de Base de Datos Botn Salir
Private Sub cmdsalir_Click() 'descarga formulario Unload Me End Sub

form_load
Private Sub Form_Load() 'PARA ABRIR LA BASE DE DATOS Dim rt As Recordset Dim i As Long conexion Set rt = New Recordset rt.Open "select * from autor order by nombre_autor", con, adOpenStatic, adLockOptimistic 'SE BARRE POR TODA LA TABLA MSFlexGrid1.Rows = rt.RecordCount + 1 For i = 1 To rt.RecordCount MSFlexGrid1.TextMatrix(i, 0) = rt!cod_autor MSFlexGrid1.TextMatrix(i, 1) = rt!nombre_autor MSFlexGrid1.TextMatrix(i, 2) = rt!pais rt.MoveNext Next 'CIERRRA EL RECORDSET Y LA BASE DE DATOS rt.Close con.Close End Sub

Evento clic del grid


Private Sub MSFlexGrid1_Click() 'cuando se senala un registro se cargan los datos If MSFlexGrid1.Rows = 1 Then Exit Sub Dim rt As Recordset Dim i As Long conexion Set rt = New Recordset rt.Open "select * from autor where cod_autor='" & MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 0) & "'", con, adOpenStatic, adLockOptimistic Text1.Text = rt!cod_autor Text2.Text = rt!nombre_autor Text3.Text = rt!pais rt.Close con.Close End Sub

Ejercicio propuesto Realizar las interfaces para cada tabla tomando como modelo el formulario autor.

También podría gustarte