14 octubre 2012

Insertando datos en Access 2010 desde Visual Basic .net

En varios lugares de mi blog he explicado como mostrar datos de una tabla de Access en Visual Basic .net: puedes mostrar los datos en el ambiente de Visual mostrarlo en cajas de texto y buscar registros y mostrarlo en cajas de texto.  Una vez inserté un registro, pero no cambiaba de valor, solo insertaba el mismo registro siempre.  En esta ocasión hice un programa (que fue inspirado por el post del blog Relaciones Informáticas) que permite que usuarios llegue, ingresen su clave (o número de nómina o como le quieran llamar) y el programa registra su asistencia en una tabla hecha con Access 2010.

Aquí presento el diseño de la tabla, llamada Registro, que está en un archivo llamado Asistencia.accdb.  Si no sabes cómo crear una base de datos en Access o una tabla en vista diseño, fíjate en la primera parte de este post.  La tabla tiene estos registros y lo copié en la carpeta bin\Debug que está en la carpeta de la solución:

00_-_Tabla_Registro

En Visual Basic hice un nuevo proyecto que tiene una Label que dice “Escriba su clave”, una caja de texto llamado txtClave (que es donde van a teclear su número de empleado), dos labels donde mostrará la fecha y hora actual (llamadas lblFecha y lblHora respectivamente) y dos botones: una para registrar la asistencia (btnRegistra) y otra para salir (btnSalir).  También tiene un Timer (llamado Timer1) para actualizar la fecha y hora cada segundo (su propiedad Interval = 1000).  Así se ve la ventana en la vista diseño (están seleccionadas las dos etiquetas que tienen la fecha y hora: como están sin texto, si no las selecciono no se ven):

01_-_Form1_diseño

Ahora vamos con el código que lo hace funcionar.  Al principio de todo, aun antes del Public Class Form1, escribí lo siguiente:

02_-_Imports

Luego justo abajo del Public Class Form1 declaro el objeto que va a hacer la conexión con la base de datos y la que me va a permitir enviar comandos SQL a la tabla:

03_-_Dim_coc_y_com

En el Form_Load creo el objeto de conexión y arranco Timer1 para que muestre la fecha y hora en la ventana:

04_-_Form_Load

La variable con pone el ConnectionString de la conexión, es decir, le dice cómo se va a conectar a la base de datos y qué archivo de Access va a accesar (valga la redundancia).  Para archivos de Access 2010 siempre va a ser igual la primera parte (Provider=Microsoft.ACE.OLEDB.12.0;Data Source=) y después del Data Source= hay que indicar en dónde está el archivo que desea usar.  En este caso uso la propiedad Application.StartupPath que nos dice en qué carpeta se encuentra el archivo EXE de la aplicación (por eso copié la base de datos a la carpeta ) seguido de una diagonal invertida y el nombre del archivo de Access.

El siguiente código se encarga de insertar un nuevo registro en la tabla con la clave del usuario (que escribió en la caja de texto txtClave), la fecha y la hora actual.  Aquí pongo el código y abajo explico lo que sucede:

05_-_btnRegistra

Declaro dos variables: fecha y hora. En la fecha pongo la fecha actual (usando el método Date del objeto Now) y en hora creo una cadena con la hora actual.  Uso el bloque Try…Catch porque al trabajar con archivos en general y con bases de datos en particular, se puede tener muchos tipos de errores que causen que tu programa truene (alguien borró el archivo, alguien lo abrió en modo diseño, etc.).  Comienzo abriendo la conexión (conConexion.Open) y creo un nuevo objeto OleDbCommand.  A este objeto (llamado cmdCommand) comienzo por inicializar algunas propiedades para que pueda funcionar: la propiedad Connection que indica la conexión por medio de la cual se va a comunicar con la tabla, CommandText que contiene la instrucción SQL que va a ejecutar (si te fijas, armé una cadena con los datos de las cajas de texto y etiquetas), ExecuteNonQuery que ejecuta el comando (siempre y cuando no sea una consulta, o sea que no sea un SELECT) y Close que cierra el objeto.

Para finalizar, este es el código del Timer1_Tick que se ejecuta cada segundo para actualizar fecha y hora en las etiquetas de la ventana y el del botón de Salir (btnSalir) que se encarga de eliminar la conexión y termina la ejecución del programa:

06_-_Timer_y_btnSalir

Al ejecutarlo, se ve así:

07_-_Ejecución_1     08_-_Ejecución_2

Como verás, de forma muy similar también se pueden llevar a cabo instrucciones SQL como el DELETE y UPDATE.  Espero que les haya sido útil.

Publicar un comentario
Related Posts Plugin for WordPress, Blogger...