You are on page 1of 23

MANUAL DE ACCESO A DATOS CON VB.

NET PRIMERA PARTE

Autor : Christian Rodriguez Olmos Mail : tantanatan@hotmail.com

Fecha : 27 de Junio de 2007 Inicio 21:25 hrs. Termino 01:53 hrs.

Muchos hemos pasado por los foros haciendo muchas preguntas, y me incluyo, pues mis conocimientos son mnimos en comparacin a muchos expertos que rondan la red, especialmente en los foros. El problema radica en que cada vez que reviso algunos foros de programacin, me encuentro con preguntas que son relativamente bsicas, lo que demuestra que hay muchsima gente con escasos conocimientos de programacin, y lo que es ms importante, de lgica. No se si es debido a que se trata de autodidactas, o por que sus educadores realmente dieron una base muy pobre. Bueno, independiente de la situacin, me he dado cuenta que una de las preguntas mas frecuentes es como obtengo..?, como guardo..? como actualizo..??? datos en una Base de Datos con Visual Basic.Net Es por ello que me tom un tiempo para preparar esta gua que es extremadamente bsica, y talvez no cumpla con grandes estndares de ingeniera de software, o control de errores, tratamiento de transacciones, etc. Recuerda las preguntas son de Acceso a datos. Sin perjuicio de lo anterior, he subido algn material que puedes descargar y que contiene guas, relacionadas al tratamiento de datos con Visual Basic .Net, e incluso puedes encontrar algn manual del lenguaje. Este material lo encontraras en el paquete que incluye este manual, pero si has llegado solo a este documento, puede solicitarme todo lo ofrecido a mi correo tantanatan@hotmail.com.

Recuerda que en el paquete encontraras: El manual (completo, o hasta la ultima parte terminada) Material de apoyo El cdigo fuente del proyecto La base de datos

OBJETIVOS

El objetivo principal de esta gua es que logremos crear una aplicacin que nos permita leer, guardar, modificar y eliminar informacin de una base de datos. Crearemos un sistema que nos permita gestionar productos y ventas, o sea, un micro T.P.V. (Terminal de Punto de Venta). No quiero que imaginen un sistema de avanzada, pero lograremos: Ingresar los productos Modificar Productos Vender Productos

(No ser tratado el tema de la impresin, de la boleta, gua, o factura.)

REQUERIMIENTOS

Necesitamos tener instalado el Visual Basic .Net, ya sea en las versiones Express o Visual Studio 2005, adems, necesitaremos Access (XP / 2003) Tambin, necesitamos conocimientos bsicos de VB.Net y de Base de datos.

CREANDO LA BASE DE DATOS

Abrimos Access y creamos nuestra base de datos con la siguiente estructura y en el directorio que t elijas.

Las tablas: Productos : Guardar nuestros productos. El cdigo del producto lo

generaremos por cdigo, valga la redundancia, para as ver el funcionamiento de las consultas de tipo Scalar. UnidadesMedida LTR, etc. Compras Ventas VentasDetalle IVA : Guardaremos los datos de nuestras compras de productos : Guardaremos los datos de nuestras ventas de productos : El detalle de la venta, asociada al numero de la factura. : Una lista de los impuestos aplicables. : Una lista de unidades de medida, tales como; KGS, UND,

Hasta aqu ya tenemos lista nuestra Base de Datos, ahora nos vamos a programar. La definicin de las columnas, es simple y lgica. Pero no te hagas problema pues se adjunta la base de datos ya terminada, y vaca.

CREANDO EL PROYECTO

Abrimos Visual Basic.Net, ya sea Express o Visual Studio 2005 (en mi caso)

Creamos un nuevo proyecto Windows Y le llamamos GestionNegocio

Aplicacin para Windows

CREANDO LOS FORMULARIOS

CREAR FORMULARIO MDI PRINCIPAL

Luego estando dentro del proyecto, Agregamos un nuevo elemento del tipo Formulario Primario MDI, y lo llamamos MDIMain.

Nuestro proyecto debe presentarse de esta forma:

A continuacin Eliminamos los componentes que se agregaron automticamente. (Marcados en rojo) Si vas a usar alguno, djalo

Si borraste los componentes, puede que necesites borrar el cdigo asociado. En mi caso, como seale que se deban borrar todos, el cdigo del MDIMain debera quedar as:

Ahora en la vista Diseo del MDIMain arrastramos un MenuStrip para que configuremos nuestro Men de la aplicacin.

La estructura del Men es: Archivo Tablas Salir Unidades de Medida Productos Impuestos

Gestin

Ingresar Factura de Compra Emitir Factura de Venta

Si Observas, los mens debes estar ordenados lgicamente. Por ejemplo, Productos esta bajo Unidades de Medida, pues requiere la existencia de una de ellas, para poder crearse. Los ingresos de productos estn sobre Emitir Factura de Venta, pues no podemos vender, sin productos.

Esto es lgico dirs t, pero he visto programas que no guardan un orden lgico en los mens. Un espanto!!!.

Ahora dejemos lista la opcin de men Salir En modo diseo hacemos clic en el men Archivo, y doble clic en la opcin Salir, para ver el cdigo asociado al men. El cdigo del Men Archivo Salir nos queda si:

Private Sub SalirToolStripMenuItem_Click(ByVal sender As _ System.Object, ByVal e As System.EventArgs) Handles _ SalirToolStripMenuItem.Click

End End Sub

Con la instruccin End cerramos la aplicacin. Aunque hay otra forma, pero ms larga. (Global.System.Windows.Forms.Application.Exit()) Ahora, nos vamos al Men del Entorno y Cambiamos el Formulario Inicial. Menu Proyecto Propiedades de GestionNegocio

Y en la opcin de Formulario de Inicio seleccionamos el MDIMain

Ahora probamos nuestro proyecto. Presionamos F5 y se ejecutar la aplicacin. Si te arroja algn error, es por que algo te ha faltado, vuelve atrs y revisa. Si todo sale bien, bastar elegir la opcin de men Archivo se cerrar. Salir, y nuestra aplicacin

Todo OK, continuamos.

Antes de seguir, necesito que al proyecto le agregues una Nueva Carpeta, y la llames DataSets, esto nos ayudar a mantener un orden.

CREANDO EL ORIGEN DE LOS DATOS

Desde el men del entorno elegimos la opcin Datos Y Elegimos la opcin Base de Datos.

Agregar nuevo origen de datos

Hacemos clic en siguiente.

Creamos una Nueva Conexin

Cambiamos el Origen de Datos a Archivo de Base de Datos Access

Buscamos la Base de Datos, la seleccionamos (Botn Examinar), y probamos la conexin (Botn Probar Conexin). Todo debera estar OK hasta aqu.

Podemos Continuar entonces.

Cuando hagamos clic en Siguiente obtendremos el siguiente mensaje.

Lo que pasa es que nuestra base de datos no esta en el directorio de la aplicacin (En mi caso esta en Escrtorio\Subir\BDGestion.mdb, en tu caso da lo mismo donde la tengas). Lo importante es elegir la opcin SI. De esta forma la base de datos ser copiada al directorio del proyecto, y cada vez que ejecutes la aplicacin (F5), esta se copiar al directorio de resultado (\Projects\GestionNegocio\GestionNegocio\bin\Debug) Lo importante es que la copia que estar en el directorio del proyecto (\Projects\GestionNegocio\GestionNegocio), ser nuestra base de datos fuente para futuras modificaciones, pues cuando ejecutes pruebas y agregues datos, cuando la vuelvas a ejecutar veras que no estn los datos, esto por que estars copiando nuevamente la base de datos origen. En este caso tendrs que copiar la base de datos del directorio de resultados, al directorio del proyecto si quieres mantener los datos de pruebas.

Obviamente, esto no pasar una vez que finalices el proyecto, donde bastar que la base de datos est en el mismo directorio que el ejecutable de la aplicacin.

Retomando al hacer clic en SI, debemos asignar un nombre a la cadena de conexin. Podemos mantener el nombre propuesto si lo deseamos (Yo lo har)

Hacemos clic en Siguiente, y luego en finalizar, pues por ahora no nos interesa crear ningn DataSet. (Confirma el siguiente mensaje)

Si revisamos el Archivo de Configuracin de la Aplicacin app.config, vemos la cadena de conexin siguiente:


<connectionStrings> <add name="GestionNegocio.My.MySettings.BDGestionConnectionString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\BDGestion.mdb" providerName="System.Data.OleDb" /> </connectionStrings>

Fjate en el parmetro Source. As se nos permite trabajar con la base de datos en la misma carpeta que el ejecutable de la aplicacin.

Hasta aqu tendremos as nuestro proyecto.

El DataSet que se cre cuando generamos el acceso a datos, debes eliminarlo, pues no contiene nada, y no lo necesitamos. Luego crearemos los nuestros.

CREANDO LOS FORMULARIOS HIJOS (CHILD)

Los formularios se crearan segn el orden de los mens.

FORMULARIO DE GESTIN DE UNIDADES DE MEDIDA

Utilizamos el Form1 que se gener al crear el proyecto, o agregamos un nuevo elemento Windows Forms. El nombre de este formulario ser frmUnidadesMedida. Cmbialo adems, al archivo Form1.vb A la propiedad Text del form le asignamos Unidades de Medida

CREANDO UN DATASET

Ahora a la carpeta DataSets Agrgale un Nuevo Elemento del tipo Conjunto de Datos, y llmalo dsUnidadesMedida.

Al hacer clic en agregar tendremos este escenario. Pero lo cerramos (el DataSet creado).

Ahora, seleccionamos el men del entorno. Datos

Mostrar Orgenes de Datos

Con esto mostramos nuestros orgenes de datos, especficamente nuestros DataSets.

Seleccionamos el dsUnidadesMedida, y lo Configuramos usando el Asistente.

Elegimos la cadena de conexin que ya hemos creado.

Expandimos, y seleccionamos la tabla UnidadesMedida. Y Hacemos Clic en Finalizar.

Obtendremos el siguiente escenario.

A continuacin modificaremos la consulta. Haz clic con el botn secundario del ratn, sobre los mtodos Fill, GetData() del TableAdapter, y elige Configurar

Podemos usar el Generador de Consultas, o escribirla directamente. La consulta quedar as

Damos clic en siguiente

Damos clic en siguiente y luego en finalizar, y estamos listos.

As nos queda el DataSet, con el TableAdapter creado.

Cerramos el dsUnidadesMedida y guardamos los cambios.

Ahora cierra los Orgenes de datos.

Para que abras el frmUnidadesMedida. (Diseo)

Ahora, seleccionamos el men del entorno (Nuevamente). Datos Mostrar Orgenes de Datos

Arrastra el DataSet al frmUnidadesMedida, pero hazlo desde el nodo UnidadesMedida Y fjate que este seleccionado el modo DataGridView.

Una vez que hayas arrastrado en DataSet al frmUnidadesMedida, consigue la siguiente apariencia.

Ahora nos vamos al MDIMain y codificamos la accin del men Tablas Medida.

Unidades de

Supongo que ya sabes como hacerlo. Seleccionas el men Tablas, y luego haces doble clic a la opcin Unidades de Medida. Debes dejar el cdigo de esta manera.
Private Sub UnidadesDeMedidaToolStripMenuItem_Click(ByVal sender As _ System.Object, ByVal e As System.EventArgs) Handles _ UnidadesDeMedidaToolStripMenuItem.Click

Dim frmUnid As New frmUnidadesMedida frmUnid.MdiParent = Me frmUnid.Show() End Sub

Con este cdigo creamos una nueva instancia del frmUnidadesMedida, luego le indicamos que es un formulario hijo del MDIMain, y despus lo mostramos.

Ahora, ejecuta la aplicacin (F5), y carga tantas veces quieras el formulario Unidades de Medida.

Si has llegado hasta aqu, y la aplicacin te funciona. Felicitaciones. Haz cumplido con la primera parte de este manual, y ya puedes comenzar a ingresar unidades de medida. Recuerda guardar los datos con el disquete. Recuerda que estas trabajando con una copia de la base de datos, si cierras la aplicacin y la vuelves a ejecutar no tendrs los datos. Debers copiar la base de datos de la carpeta de resultados, y reemplazar la de la carpeta del proyecto, para mantener los datos

Yo ingrese las siguientes unidades de medida

MEJORAS

Seguramente, te preguntaras Que pasa si modifico la columna IdUnidadMedida? Que pasa si ingreso dos veces una unidad de medida?

Bueno,

para evitar modificar la columna IdUnidadMedida, que es Autonumerica, Coleccin

selecciona el Grid, y en sus propiedades selecciona Columns Tendrs lo siguiente:

Aqu puedes jugar con las propiedades de las columnas. A la columna IdUnidadMedida, puedes poner a False la propiedad Visible. A la columa UnidadMedida, puedes cambiar las siguientes propiedades: HeaderText = Unidad de Medida MaxInputLength = 5

Con esto, hemos solucionado lo de la columna IdUnidadMedida, y un posible error si ingresramos una unidad de medida de 6 o ms caracteres, pues en la tabla se defini con 5 caracteres.

Ahora, sin ingresamos 2 veces una misma unidad de medida nos arrojara el siguiente error en tiempo de ejecucin.

Lo podemos evitar de la siguiente manera. El mtodo donde se genera el error djalo de la siguiente forma
Private Sub UnidadesMedidaBindingNavigatorSaveItem_Click(ByVal sender _ As System.Object, ByVal e As System.EventArgs) Handles _ UnidadesMedidaBindingNavigatorSaveItem.Click

Me.Validate() Me.UnidadesMedidaBindingSource.EndEdit()

Try Me.UnidadesMedidaTableAdapter.Update _ (Me.DsUnidadesMedida.UnidadesMedida) Catch err As System.Data.OleDb.OleDbException MsgBox("Se ha producido un error de consistencia en los datos ingresados para guardar o actualizar", MsgBoxStyle.Exclamation) Catch ex As Exception MsgBox("Se ha producido un error no controlado al guardar o actualizar los datos", MsgBoxStyle.Exclamation) End Try End Sub

Con esto controlaremos, errores de consistencia de los datos, y errores de carcter general. Puedes agregar los que t quieras. (de Conexin, etc.)

Si ejecutamos la aplicacin, ya no tendremos los problemas de: Que pasa si modifico la columna IdUnidadMedida? Ya no puede ser modificada por el usuario Que pasa si ingreso dos veces una unidad de medida? Pasar esto:

Bastar con hacer clic en Aceptar, y luego eliminar la fila con error.

Bueno espero que esta primera parte del manual les sirva. Y recuerden, que esto es bsico y talvez se me puedan pasar muchas ideas, pero es una base para Uds. Y espero que saquen provecho a este trabajo.

Saludos desde San Felipe Chile

Christian Rodriguez Olmos

Si necesitas comprar cuentas Rapidshare.com Premium escrbeme a cuentas.rapidshare@gmail.com