Está en la página 1de 15

COORDINACIN GENERAL DE VINCULACIN DIRECCIN GENERAL DE EDUCACIN CONTINUA

TALLER

3 CONTROLES .NET + ADO

OBJETIVO GENERAL

Al finalizar este evento, el participante generar una aplicacin bajo Windows, al comprender y utilizar los siguientes controles de programacin: Objeto del modelo de datos ADO.net y Controles del Windows Form, Vinculados a datos de Access, mediante cdigo en Visual Basic 2008.

Cdigo Subyacente en el Proyecto del Caso de Estudio Punto de Venta Mnimo

INTRODUCCIN
Sin lugar a dudas, para el profesional de la informtica, y en especial para el desarrollador de sistemas de informacin, es vital el uso de bases de datos y su correcto manejo. Es por ello, que la propuesta temtica del presente taller, se enfoca en los principios fundamentales de la programacin de bases de datos y en un caso por dems tpico: El desarrollo de un punto de venta mnimo. El taller se compone de dos apartados principales, uno de ellos el contenido de los fundamentos tericos necesarios para comprender el sentido de la aplicacin y el segundo, la parte prctica, la cual se enfoca propiamente en el caso de estudio. Para esto, se le proporcionan al participante, funciones en Visual Basic 2008, totalmente probadas, es decir, cdigo til para la composicin de la aplicacin. El producto final utiliza escner para el manejo de cdigo de barras, cmara digital para el fichar los productos en el inventario, manejo de credenciales para el registro de clientes y proveedores, as como una impresora de punto de venta tipo trmica, para la impresin de tickets. La mecnica de trabajo al interior del taller es de la siguiente forma, para abordar el caso de estudio, se definirn roles en equipos de desarrollo, considerando tres elementos por cada equipo: diseador de bases de datos, programador y lder del proyecto. Puesto que en la realidad de las casas de desarrollo software se llevan al cabo proyectos con equipos bien conformados. Al final del taller, los equipos expondrn sus prototipos logrados y su propia experiencia en el manejo de datos mediante las herramientas utilizadas. El taller hace nfasis en los conceptos de datos conectados y desconectados, as como la importancia en el manejo de imgenes como parte de la informacin de los productos, clientes y proveedores. Sentimos pues, una gran satisfaccin, al ofertar el presente taller, pues sabemos que se entregan aqu conocimientos terico y prcticos no ociosos, los cuales tendrn inmediata aplicacin en la vida productiva de todos nosotros como profesionales de la informtica y esperamos cubra cabalmente las expectativas de todos los participantes, en el entendido de que el taller, se ofrece como producto siempre mejorable y perfectible cada vez mejor en sus nuevas versiones, con su valiosa aportacin.
M. en C. Oscar Mares Bauelos Octubre de 2012

PRESENTACIN DE PROTOTIPOS.
OBJETIVO: Realimentar a los integrantes de los equipos de desarrollo, con las experiencias de todos, en el transcurso del taller. En la figura 10 se muestra un formulario con dos tabPage, un panel con imgenes en miniatura para visualizar a los productos, un pictureBox para el producto seleccionado, as como las cajas de texto auxiliares para el contenido de los campos, ntese tambin, como se colocan botones para las opciones catlogo de productos, proveedores y punto de venta, adems del botn guardar productos.

Bsicamente el panel de miniaturas incorpora una carpeta de imgenes, las cuales se presentan al usuario en una medida de 64x64 pixeles, para dar de alta los artculos y relacionar estas imgenes con su respectivo registro. Su funcin es pasar esta imagen al picturebox, de quien se toma la clave del mismo.

Public Class frmPpal Private Sub frmPpal_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'asignamos el foco al primer campo txtIdProducto.Focus() 'cargamos las imagenes en el panel verImagenes(".", panMiniaturas) End Sub Private Sub btnGuardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGuardar.Click 'guardamos la foto: sta en miniaturas (guarda foto) guardaFoto(txtIdProducto.Text.Trim) grabaEntabla("productos", "idProducto,idNomProducto,idExistencia,idPrecio", "'" & txtIdProducto.Text & "','" & txtNomProducto.Text & "','" & txtExistencia.Text & "','" & txtPrecio.Text & "'") grabaEntabla("rel_pp", "idProducto,idProveedor", "'" & txtIdProducto.Text & "','" & txtIdProveedor.Text & "'") limpiarCampos(txtIdProducto, txtNomProducto, txtExistencia, txtPrecio, txtIdProveedor) End Sub

Private Sub TabPage1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TabPage1.Click 'asignamos el foco al primer campo txtIdProducto.Focus() End Sub Private Sub btnProductos_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnProductos.Click frmCatProductos.Show() End Sub Private Sub btnPuntoVenta_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPuntoVenta.Click frmPuntoVenta.Show() End Sub End Class

El grid de datos y el rbol: cdigo fuente y mtodo de programacin. En este formulario, se presentan los artculos, las imgenes con su respectivo registro y un rbol que representa a la tabla de estos. Su funcin la de mantener a manera de catlogo, el inventario o almacn de artculos, como primer desafo, se propone al participante, la creacin del catlogo de proveedores y de clientes.

Funcin del TreeView Node En la siguiente seccin vamos a colocar el cdigo de la funcin para la construccin de una vista de datos visualmente muy importante en todo sistema, se trata de una vista tipo rbol, de los datos de la tabla actual, este toma como fuente un grid. Esta se encuentra en el mdulo elDataArbol.vb

Public Class frmCatProductos 'al cargar el formulario del catalogo de productos Private Sub frmCatProductos_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'cargamos los datos en el el grid funcional recargarDatos() End Sub 'al pulsar enter, o al tomar del escaner la lectura se dispara la busqueda y se muestra la foto Private Sub txtIdBusqueda_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtIdBusqueda.KeyPress If e.KeyChar = Convert.ToChar(Keys.Enter) Then Try Dim nomFoto As String nomFoto = sender.Text.Trim + ".jpg" picProducto.Image = Image.FromFile(nomFoto) Catch ex As Exception End Try End If End Sub 'invocamos a la funcion para cargar el grid con los criterios de busqueda Private Sub txtIdBusqueda_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtIdBusqueda.TextChanged Dim porBusqueda As String = "idProducto" If rdNombre.Checked = True Then porBusqueda = "idNomProducto" End If tipoGoogle(grTablaProductos, "productos", txtIdBusqueda, porBusqueda) muestraFoto(grTablaProductos, picProducto) End Sub

'al mover fleha abajo Private Sub grTablaProductos_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles grTablaProductos.KeyDown muestraFoto(grTablaProductos, picProducto) End Sub 'al mover fleha arriba Private Sub grTablaProductos_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles grTablaProductos.KeyUp muestraFoto(grTablaProductos, picProducto) End Sub 'cuando el usuario de click en el grid sobre su encabezado de fila el sender hace referencia al abjeto mismo Private Sub grTablaProductos_RowHeaderMouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles grTablaProductos.RowHeaderMouseClick muestraFoto(grTablaProductos, picProducto) End Sub 'controlar el regreso al form principal Private Sub btnRegresar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRegresar.Click Me.Close() frmPpal.Show() End Sub

'funcion para leer datos parametrizados en formato SQL Private Sub btnSQL_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSQL.Click leerTablaDesconectados(txtSELECT.Text.Trim, "productos", grTablaProductos) End Sub 'mostramos la imagen en el momento que el usuario pulsa en el nodo secundario del arbol (nivel 1) Private Sub arbolProductos_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles arbolProductos.AfterSelect Try Dim nomArch As String nomArch = e.Node.Text.ToString + ".jpg" If e.Node.Level = 1 Then picProducto.Image = Image.FromFile(nomArch) End If Catch ex As Exception End Try End Sub 'llamar a la funcion eliminar producto Private Sub btnBorrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBorrar.Click 'eliminamos producto vIdProducto = "'" & vIdProducto & "'" borraTabla("productos", "idProducto", vIdProducto) 'actualizamos los datos recargarDatos() End Sub

Private Sub btnModificar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnModificar.Click Dim losCampos, laCondicion, _ elIDviejo, elIDnuevo, fotoNueva, fotoVieja As String 'se preparan los campos tipo caracter agregandoles una ' fotoVieja = vIdProducto elIDviejo = "'" & vIdProducto & "'" 'se cachan los nuevos valores fotoNueva = TextBox1.Text.Trim() elIDnuevo = "'" & TextBox1.Text.Trim & "'" vNomProducto = "'" & TextBox2.Text.Trim & "'" vExistencia = "'" & TextBox3.Text.Trim & "'" vPrecio = "'" & TextBox4.Text.Trim & "'" losCampos = "idProducto=" & elIDnuevo & "," & _ "idNomProducto=" & vNomProducto & "," & _ "idExistencia=" & vExistencia & "," & _ "idPrecio=" & vPrecio laCondicion = "idProducto=" & elIDviejo modiTabla("productos", losCampos, laCondicion) 'se guarda la foto con el nuevo idProducto If fotoVieja <> fotoNueva Then x = picProducto.Image guardaFoto(fotoNueva) End If 'actualizamos los datos recargarDatos() End Sub End Class

El punto de venta y el objeto printer: cdigo fuente y mtodo de programacin.


En el presente formulario se muestra propiamente el punto de venta, el grid tiene las funcionalidades de quitar productos, as como de relacionar la imagen, y las operaciones propias de cobrar y dar cambio, las lecturas con el cdigo de barras, hacen en la caja de texto, el cachado de la tecla <enter>, para la lectura de propio cdigo de barras.

Imports System.Drawing.Printing Imports System.Drawing.Drawing2D Public Class frmPuntoVenta 'limpiamos el grid para cada nueva venta Private Sub frmPuntoVenta_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load grVentas.Rows.Clear() lblFecha.Text = Date.Now.ToString End Sub 'al pulsar enter, o al tomar del escaner la lectura se dispara la busqueda y se muestra la foto Private Sub txtIDProducto_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtIDProducto.KeyPress If e.KeyChar = Convert.ToChar(Keys.Enter) Then Try Dim nomFoto, elID As String elID = sender.Text.Trim nomFoto = elID + ".jpg" picFotoVenta.Image = Image.FromFile(nomFoto) 'cargamos los datos en el grid desde la tabla productos leerTablaConectados("SELECT idProducto,idNomProducto,idPrecio FROM productos WHERE idProducto=" & "'" & elID & "'", grVentas) 'calculamos el subtotal del ticket sumaTicket(grVentas) lblnProd.Text = nReg lblTotal.Text = subTotal 'presentamos el ID para cada venta : OPCIONAL If nReg > 0 Then lblidVenta.Text = Date.Today.Hour.ToString & grVentas.Item(0, 0).Value.ToString End If

'agregamos cada 'DESPUES PASAR EL GRID, RESULTADO DE UNA CONSULTA, A ARREGLOS AUXILIARES, DE TIPO STRING regNombre(nReg-1) = grVentas.Item(1, nReg - 1).Value.ToString regCantidad(nReg - 1) = grVentas.Item(2, nReg - 1).Value.ToString regPrecio(nReg - 1) = grVentas.Item(3, nReg - 1).Value.ToString regSubTotal(nReg - 1) = grVentas.Item(4, nReg - 1).Value.ToString Catch ex As Exception End Try End If End Sub 'mostrar foto del producto Private Sub grVentas_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles grVentas.KeyDown verFoto(grVentas, picFotoVenta) End Sub 'mostrar foto del producto Private Sub grVentas_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles grVentas.KeyUp verFoto(grVentas, picFotoVenta) End Sub 'mostrar foto del producto Private Sub grVentas_RowHeaderMouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles grVentas.RowHeaderMouseClick verFoto(grVentas, picFotoVenta) End Sub

'quitamos un producto de la fila y recalculamos la sumatoria Private Sub grVentas_RowHeaderMouseDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles grVentas.RowHeaderMouseDoubleClick grVentas.Rows.RemoveAt(e.RowIndex) sumaTicket(grVentas) lblnProd.Text = nReg lblTotal.Text = subTotal End Sub 'eliminamos la venta Private Sub btnBorrarTicket_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBorrarTicket.Click grVentas.Rows.Clear() End Sub Private Sub pagImprimeDoc_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles pagImprimeDoc.PrintPage 'FINALMENTE SE INVOCA A LA FUNCION QUE SACAR LOS DATOS A IMPRESORA, EN EL MODO GRAFICO 'OPCIONALMENTE SE PUEDE ACOMPAAR A LOS DATOS CON UN GRAFICO. imprimeSQL(e) End Sub ' Al iniciarse la impresin Private Sub PrintDocument1_BeginPrint(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintEventArgs) Handles pagImprimeDoc.BeginPrint LineaTexto = 0 ' comenzar por la primera lnea End Sub

'se manda propiamente el doc a impresora y guardarmos la venta en su respectiva tabla Private Sub btnImprimeTicket_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnImprimeTicket.Click pagImprimeDoc.PrinterSettings.PrinterName = "GP-5890XIII(135dpi)" pagImprimeDoc.Print() Dim c1, c2, c3, c4, c5, c6, c7, campos, valores As String campos = "idVenta,idProducto,idNombre,idCantidad,idPrecio,idSubtotal,idFecha" c1 = Date.Today.Hour.ToString & grVentas.Item(0, 0).Value.ToString 'asignamos los valores para cada campo en el grid For i = 0 To nReg - 1 c2 = grVentas.Item(0, i).Value c3 = grVentas.Item(1, i).Value c4 = grVentas.Item(2, i).Value c5 = grVentas.Item(3, i).Value c6 = grVentas.Item(4, i).Value c7 = Date.Today.Date.ToString valores = "'" & c1 & "','" & c2 & "','" & c3 & "','" & c4 & _ "','" & c5 & "','" & c6 & "','" & c7 & "'" ' y guardamos en tabla ventas grabaEntabla("ventas", campos, valores) Next End Sub 'Realizamos el calculo del pago Private Sub btnCobrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCobrar.Click lblCambio.Text = txtPago.Text - lblTotal.Text End Sub End Class

También podría gustarte