Professional Documents
Culture Documents
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
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.
Abrimos Access y creamos nuestra base de datos con la siguiente estructura y en el directorio que t elijas.
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)
Luego estando dentro del proyecto, Agregamos un nuevo elemento del tipo Formulario Primario MDI, y lo llamamos MDIMain.
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
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:
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
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
Antes de seguir, necesito que al proyecto le agregues una Nueva Carpeta, y la llames DataSets, esto nos ayudar a mantener un orden.
Desde el men del entorno elegimos la opcin Datos Y Elegimos la opcin Base de Datos.
Buscamos la Base de Datos, la seleccionamos (Botn Examinar), y probamos la conexin (Botn Probar Conexin). Todo debera estar OK hasta aqu.
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)
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.
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.
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).
A continuacin modificaremos la consulta. Haz clic con el botn secundario del ratn, sobre los mtodos Fill, GetData() del TableAdapter, y elige Configurar
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
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
MEJORAS
Seguramente, te preguntaras Que pasa si modifico la columna IdUnidadMedida? Que pasa si ingreso dos veces una unidad de medida?
Bueno,
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.