Guia de Laboratorios 5 - VB.NET 2005

11
UNJBG ITEL CARRERA Técnico Analista Programador de Sistemas ¡¡LÍDER EN CAPACITACIÓN INFORMÁTICA!! Garantía del proceso Enseñanza-Aprendizaje con las últimas tecnologías, con computadoras de última generación, impresoras, escáner, multimedia, redes, Internet, material didáctico paso a paso, biblioteca y aula virtual con docentes del mas alto nivel. CURSO Programación Visual .NET II Bimestre Acadêmico : 2009- Docente : José Luis Ponce Segura. Ciclo : V (1 de 11) Fecha : Tacna, Mayo del 2009 GUÍA DE LABORATORIO N° 05 OBJETIVOS: Uso de las Clases: DataTable, DataRow, DataColumn, Creación y uso de Objetos: Formularios de Mantenimiento Maestro-Detalle, Uso de Objetos temporales en el Servidor. Cursores de Servidor SQL y DataSet, Control de Excepciones en el Servidor y en el Cliente. 1. ENTORNO INTEGRADO DE DESARROLLO Proceda a ingresar Visual Studio .NET y realice lo siguiente: Deberá Abrir la solución realizada en la práctica anterior (SisVentas) 2. CREACION DE FORMULARIO DE FACTURACION (frmFactura.vb) Recuperar el Proyecto de Solución SISVENTAS y realizar lo siguiente: Ir al menú Proyecto, luego seleccione agregar nuevo elemento Luego nos visualizará una ventana [Agregar nuevo elemento], usted deberá seleccionar Windows Forms. A continuación proceda a ingresar el nombre para su formulario: frmFactura.vb Por último haga clic en el botón Abrir, luego éste formulario se habrá agregado al Explorador de soluciones. Proceda a Diseñar el Siguiente Formulario FrmFactura: a) Deberá agregar los controles necesarios para el diseño del siguiente formulario y establezca las propiedades según se observa:

description

Laboratorios del curso de Visual Basic 2005

Transcript of Guia de Laboratorios 5 - VB.NET 2005

Page 1: Guia de Laboratorios 5 - VB.NET 2005

UNJBG ITEL

CARRERA Técnico Analista Programador de

Sistemas

¡¡LÍDER EN CAPACITACIÓN INFORMÁTICA!! Garantía del proceso Enseñanza-Aprendizaje con las últimas

tecnologías, con computadoras de última generación, impresoras, escáner, multimedia, redes, Internet, material

didáctico paso a paso, biblioteca y aula virtual con docentes del mas alto nivel.

CURSO

Programación Visual .NET II

Bimestre Acadêmico : 2009- Docente : José Luis Ponce Segura. Ciclo : V (1 de 11) Fecha : Tacna, Mayo del 2009

GUÍA DE LABORATORIO N° 05

OBJETIVOS: Uso de las Clases: DataTable, DataRow, DataColumn, Creación y uso de Objetos: Formularios de Mantenimiento Maestro-Detalle, Uso de Objetos temporales en el Servidor. Cursores de Servidor SQL y DataSet, Control de Excepciones en el Servidor y en el Cliente.

1. ENTORNO INTEGRADO DE DESARROLLO

• Proceda a ingresar Visual Studio .NET y realice lo siguiente: • Deberá Abrir la solución realizada en la práctica anterior (SisVentas)

2. CREACION DE FORMULARIO DE FACTURACION (frmFactura.vb)

Recuperar el Proyecto de Solución SISVENTAS y realizar lo siguiente: • Ir al menú Proyecto, luego seleccione agregar nuevo elemento • Luego nos visualizará una ventana [Agregar nuevo elemento], usted deberá seleccionar Windows

Forms. A continuación proceda a ingresar el nombre para su formulario: frmFactura.vb • Por último haga clic en el botón Abrir, luego éste formulario se habrá agregado al Explorador de

soluciones.

Proceda a Diseñar el Siguiente Formulario FrmFactura:

a) Deberá agregar los controles necesarios para el diseño del siguiente formulario y establezca las propiedades según se observa:

Page 2: Guia de Laboratorios 5 - VB.NET 2005

Universidad Nacional Jorge Basadre Grohmann - ITEL Carrera: Técnico Analista Programador de Sistemas. Curso: Programación Visual .Net II

Docente: José Luis Ponce Segura Prac05 (2 de 11) e-mail: [email protected] Cel. : 952636911 www.redtacna.net

b) El ToolStrip, es decir la barra de Herramientas (nuevo, guardar, etc..) deberá agregar los objetos y

establecer los nombres según se observa a continuación:

c) Modificar el Código del Módulo MODCONEXION, en el deberán declarar lo siguiente: Public bus, compra As Boolean Public cart, nart As String, part, iart, cnart, sart As Double Public factura As frmfactura

d) En el formulario principal agregar los enlaces para la barra de Menú. Escriba el siguiente código:

Private Sub Mnufactura_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

Handles MnuconFactura.Click factura = New frmFactura factura.MdiParent = Me factura.Show() End Sub

e) En el botón de la barra de herramientas del formulario principal agregar el código:

factura = New frmFactura factura.MdiParent = Me factura.Show()

Creación de los procedimientos almacenados

a) PROCEDIMIENTO PARA AGREGARFACTURA

CREATE procedure agregarfactura ( @nrofac varchar(5), @fechfac datetime, @subtot float, @totigv float,

Page 3: Guia de Laboratorios 5 - VB.NET 2005

Universidad Nacional Jorge Basadre Grohmann - ITEL Carrera: Técnico Analista Programador de Sistemas. Curso: Programación Visual .Net II

Docente: José Luis Ponce Segura Prac05 (3 de 11) e-mail: [email protected] Cel. : 952636911 www.redtacna.net

@totfac float, @codcli varchar(5), @codemp varchar(5), @estado bit ) as begin transaction INSERT INTO Factura (nrofac,fechfac,subtot,totigv,totfac,codcli,codemp,estado) VALUES (@nrofac,@fechfac,@subtot,@totigv,@totfac,@codcli,@codemp,@estado) if @@error=0 Commit Transaction else Rollback Transaction

b) CREACION DE LOS PROCEDIMIENTOS PARA ACTUALIZACION DE DETALLE

Agregar DetalleCREATE procedure agregardetalle ( @nrofac varchar(5), @codart varchar(5), @candet int, @impdet numeric ) as Begin Transaction INSERT INTO detalle (nrofac,codart,candet,impdet) VALUES (@nrofac,@codart,@candet,@impdet) if @@error=0 Commit Transaction else Rollback Transaction

c) CREAR EL PROCEDIMIENTO PARA ACTUALIZARSTOCK

CREATE procedure actualizarStock ( @codart varchar(5), @stoart int ) as update articulo set codart=@codart, stoart=@stoart where codart=@codart

AGREGAR EL CODIGO NECESARIO PARA EL FORMULARIO FRMFACTURA

Biblioteca de Clase: Option Compare Text Imports System.Data Imports System.Data.SqlClient En la Sección de Declaraciones Generales escriba: Dim daFactura As SqlDataAdapter Dim dadetalle As SqlDataAdapter Dim daEmpleado As SqlDataAdapter Dim daCliente As SqlDataAdapter Dim daArticulo As SqlDataAdapter Dim objDataSet As New DataSet Dim flag As Integer Dim resultado As Integer Dim strNroFac As String Dim fil As Integer Dim objDataRow As DataRow

Page 4: Guia de Laboratorios 5 - VB.NET 2005

Universidad Nacional Jorge Basadre Grohmann - ITEL Carrera: Técnico Analista Programador de Sistemas. Curso: Programación Visual .Net II

Docente: José Luis Ponce Segura Prac05 (4 de 11) e-mail: [email protected] Cel. : 952636911 www.redtacna.net

Dim posicion As Integer Dim nart As Byte Código del Procedimiento Form_Load (Formulario) Private Sub frmfactura_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

MyBase.Load Dim stremp, strcli As String stremp = "SELECT nomemp,apeemp,codemp,diremp,sexemp,telemp,observacion,codcar,activo,nomemp + " & _ "' '" & " + apeemp AS nomape FROM Empleado" strcli = "SELECT codcli,nomcli,apecli,dircli,ruccli,nomcli + " & _ "' '" & " + apecli AS nombres FROM cliente" Conexion.Open() daFactura = New SqlDataAdapter("select * from factura",Conexion) dadetalle = New SqlDataAdapter("select * from detalle",Conexion) daEmpleado = New SqlDataAdapter(stremp,Conexion) daCliente = New SqlDataAdapter(strcli, ModConexion.Conexion) daArticulo = New SqlDataAdapter("select * from articulo",Conexion) ' objDataSet = New DataSet() daFactura.Fill(objDataSet, "factura") dadetalle.Fill(objDataSet, "detalle") daEmpleado.Fill(objDataSet, "empleado") daCliente.Fill(objDataSet, "cliente") daArticulo.Fill(objDataSet, "articulo") ' relacionar las dos tablas del dataset por campo común objDataSet.Relations.Add("Factura_detalle", _ objDataSet.Tables("Factura").Columns("nrofac"), _ objDataSet.Tables("detalle").Columns("nrofac")) ' Conexion.Close() llenarcombos() ' posicion = (objDataSet.Tables("factura").Rows.Count - 1) CargarDatos() ' ActivarControl(False) ActivarBoton(True) Me.dgvDetalleFactura.ReadOnly = True End Sub Private Sub CargarDatos() ' ya esta Try objDataRow = objDataSet.Tables("Factura").Rows(posicion) lblNroFactura.Text = objDataRow("nrofac") txtCodCli.Text = objDataRow("codcli") txtCodEmp.Text = objDataRow("codemp") dtpFechFac.Value = objDataRow("fechfac") txtSubTot.Text = objDataRow("subtot") txtTotIgv.Text = objDataRow("totigv") txtTotFac.Text = objDataRow("totfac") cboCliente.SelectedValue = objDataRow("codcli") cboEmpleado.SelectedValue = objDataRow("codemp") If objDataRow("estado") = True Then lblEstado.Text = Nothing : tsbEliminar.Enabled = True If objDataRow("estado") = False Then lblEstado.Text = "FACTURA ANULADA" : tsbEliminar.Enabled = False ' Mostrar Posición en el ToolStripLabel Me.tslRegistro.Text = "Registro: " & posicion + 1 & " de " & _ objDataSet.Tables("factura").Rows.Count EnlazaGrilla() Catch exc As Exception MessageBox.Show(exc.Message) End Try End Sub Private Sub EnlazaGrilla() ' Declarando variables a utilizar Dim miDr As SqlDataReader Dim strSQL As String = "Select * from detalle where nrofac='" & lblNroFactura.Text & "'" Dim miDt As New DataTable Dim Cm As SqlCommand ' Establecemos la conexión con la base de datos

Page 5: Guia de Laboratorios 5 - VB.NET 2005

Universidad Nacional Jorge Basadre Grohmann - ITEL Carrera: Técnico Analista Programador de Sistemas. Curso: Programación Visual .Net II

Docente: José Luis Ponce Segura Prac05 (5 de 11) e-mail: [email protected] Cel. : 952636911 www.redtacna.net

Cm = New SqlCommand(strSQL, Conexion) ' Conexion.Open() ' Ejecutamos la sentencia SQL miDr = Cm.ExecuteReader ' Borramos el contenido del DataTable miDt.Clear() ' Cargamos los resultados en el objeto DataTable miDt.Load(miDr, LoadOption.OverwriteChanges) dgvDetalleFactura.Columns.Clear() dgvDetalleFactura.DataSource = miDt Conexion.Close() End Sub Private Sub llenarcombos() ' Conexion.Open() Call desconectarcombos() ' Enlazando el combo de cliente cboCliente.DataBindings.Add(New System.Windows.Forms.Binding("SelectedValue", Me.objDataSet, "factura.codcli")) cboCliente.DataSource = Me.objDataSet.Tables("cliente") cboCliente.DisplayMember = "nombres" cboCliente.ValueMember = "codcli" cboCliente.DropDownStyle = ComboBoxStyle.DropDownList ' enlazando el combo de empleado cboEmpleado.DataBindings.Add(New System.Windows.Forms.Binding("SelectedValue", Me.objDataSet, "factura.codemp")) cboEmpleado.DataSource = Me.objDataSet.Tables("empleado") cboEmpleado.DisplayMember = "nomape" cboEmpleado.ValueMember = "codemp" cboEmpleado.DropDownStyle = ComboBoxStyle.DropDownList End Sub Private Sub desconectarcombos() cboCliente.DataBindings.Clear() cboEmpleado.DataBindings.Clear() End Sub

Private Sub ActivarBoton(ByVal est As Boolean) Dim oitem As Windows.Forms.ToolStripItem For Each oitem In ToolStrip1.Items If TypeOf oitem Is ToolStripButton Then oitem.Enabled = est End If Next tsbGuardar.Enabled = Not est tsbCancelar.Enabled = Not est End Sub

Private Sub LimpiarControles() Dim ctrl As Control For Each ctrl In Me.Controls If TypeOf ctrl Is TextBox Then ctrl.Text = "" Next cboEmpleado.Text = "" cboCliente.Text = "" End Sub

Private Sub ActivarControl(ByVal est As Boolean) Dim ctrl As Control For Each ctrl In Me.Controls If TypeOf ctrl Is GroupBox Then ctrl.Enabled = est If TypeOf ctrl Is DateTimePicker Then ctrl.Enabled = est If TypeOf ctrl Is Button Then ctrl.Enabled = est Next End Sub

Private Sub Actualizar() objDataSet.Clear() daFactura.Fill(objDataSet, "factura") dadetalle.Fill(objDataSet, "detalle") daEmpleado.Fill(objDataSet, "empleado") daCliente.Fill(objDataSet, "cliente") daArticulo.Fill(objDataSet, "articulo") End Sub

Private Sub GeneraCodigo() Dim cmd As New SqlCommand("select max(nrofac)

from factura",Conexion) Conexion.Open() strNroFac = cmd.ExecuteScalar Conexion.Close() lblNroFactura.Text = Format(Val(strNroFac) + 1, "00000") End Sub

Public Sub totalizar() Dim i As Integer, st As Double For i = 0 To nart st = st + CDbl(Me.dgvDetalleFactura.Item(3, i).Value) Next Me.txtSubTot.Text = Format(st, "#######.00") Me.txtTotIgv.Text = Format(CDbl(Me.txtSubTot.Text) * 0.19, "#######.00") Me.txtTotFac.Text = Format(CDbl(Me.txtSubTot.Text) + CDbl(Me.txtTotIgv.Text), "#######.00") End Sub

Page 6: Guia de Laboratorios 5 - VB.NET 2005

Universidad Nacional Jorge Basadre Grohmann - ITEL Carrera: Técnico Analista Programador de Sistemas. Curso: Programación Visual .Net II

Docente: José Luis Ponce Segura Prac05 (6 de 11) e-mail: [email protected] Cel. : 952636911 www.redtacna.net

Private Sub Desplazar(ByVal op As Integer) Select Case op Case 1 posicion = 0 CargarDatos() Case 2 If posicion = 0 Then MessageBox.Show("Primer Registro", "", 0, MessageBoxIcon.Information) Else posicion -= 1 CargarDatos() End If Case 3 If posicion = (objDataSet.Tables("Factura").Rows.Count - 1) Then MessageBox.Show("Último Registro", "", 0, MessageBoxIcon.Information) Else posicion += 1 CargarDatos() End If Case 4 posicion = (objDataSet.Tables("Factura").Rows.Count - 1) CargarDatos() End Select End Sub Private Sub ToolStrip1_ItemClicked(ByVal sender As System.Object, ByVal e As

System.Windows.Forms.ToolStripItemClickedEventArgs) Handles ToolStrip1.ItemClicked Select Case e.ClickedItem.Name ' Actualización Case "tsbnuevo" ' Botón Nuevo Nuevo() Case "tsbguardar" ' Botón Guardar Guardar() Case "tsbcancelar" ' Botón Cancelar cancelar() Case "tsbeliminar" ' Botón Eliminar Dim rpta As MsgBoxResult rpta = MsgBox("Esta seguro que desea Anular la Factura Nro.: " & _ lblNroFactura.Text, MsgBoxStyle.YesNo + MsgBoxStyle.Question, "Confirmación") If rpta = vbYes Then AnularFactura(lblNroFactura.Text, 0) Case "tsbbuscar" ' Botón Salir buscar() Case "tsbsalir" ' Botón Salir Me.Close() Case "tsbprimero" ' Ir a al Primero Desplazar(1) Case "tsbanterior" ' Ir al Anterior Desplazar(2) Case "tsbsiguiente" ' Ir al Siguiente Desplazar(3) Case "tsbultimo" ' Ir al Último Desplazar(4) End Select End Sub Private Sub Nuevo() flag = 1 ActivarControl(True) Desplazar(4) ActivarBoton(False) LimpiarControles() GeneraCodigo() ' llamar al proc. para generar Nro. Factura Me.dgvDetalleFactura.DataSource = Nothing End Sub Private Sub Guardar() Dim oper As String, estado As Boolean Dim cmF As New SqlCommand() Dim cmD As New SqlCommand() Dim cmA As New SqlCommand() 'conexion de comandos cmF.Connection = Conexion

Page 7: Guia de Laboratorios 5 - VB.NET 2005

Universidad Nacional Jorge Basadre Grohmann - ITEL Carrera: Técnico Analista Programador de Sistemas. Curso: Programación Visual .Net II

Docente: José Luis Ponce Segura Prac05 (7 de 11) e-mail: [email protected] Cel. : 952636911 www.redtacna.net

cmD.Connection = Conexion cmA.Connection = Conexion If flag = 1 Then ' Nuevo 'asignando procedimientos almacenados cmF.CommandType = CommandType.StoredProcedure cmF.CommandText = "AgregarFactura" cmD.CommandType = CommandType.StoredProcedure cmD.CommandText = "AgregarDetalle" cmA.CommandType = CommandType.StoredProcedure cmA.CommandText = "ActualizarStock" oper = " insertados: " Else ' Editar cmF.CommandType = CommandType.StoredProcedure cmF.CommandText = "ModificarFactura" cmD.CommandType = CommandType.StoredProcedure cmD.CommandText = "ModificarDetalle" oper = " modificados: " End If Try 'Para toda factura nueva el estado es activo estado = True cmF.Parameters.Add(New SqlParameter("@nrofac", SqlDbType.VarChar)) cmF.Parameters.Add(New SqlParameter("@fechfac", SqlDbType.DateTime)) cmF.Parameters.Add(New SqlParameter("@subtot", SqlDbType.Float)) cmF.Parameters.Add(New SqlParameter("@totigv", SqlDbType.Float)) cmF.Parameters.Add(New SqlParameter("@totfac", SqlDbType.Float)) cmF.Parameters.Add(New SqlParameter("@codcli", SqlDbType.VarChar)) cmF.Parameters.Add(New SqlParameter("@codemp", SqlDbType.VarChar)) cmF.Parameters.Add(New SqlParameter("@estado", SqlDbType.Bit)) cmF.Parameters("@fechfac").Value = Me.dtpFechFac.Value.ToShortTimeString cmF.Parameters("@nrofac").Value = Me.lblNroFactura.Text cmF.Parameters("@subtot").Value = Me.txtSubTot.Text cmF.Parameters("@totigv").Value = Me.txtTotIgv.Text cmF.Parameters("@totfac").Value = Me.txtTotFac.Text cmF.Parameters("@codcli").Value = Me.txtCodCli.Text cmF.Parameters("@codemp").Value = Me.txtCodEmp.Text cmF.Parameters("@estado").Value = estado Conexion.Open() resultado = cmF.ExecuteNonQuery 'Para detalle Dim i As Integer cmD.Parameters.Add(New SqlParameter("@nrofac", SqlDbType.VarChar)) cmD.Parameters.Add(New SqlParameter("@codart", SqlDbType.VarChar)) cmD.Parameters.Add(New SqlParameter("@candet", SqlDbType.Money)) cmD.Parameters.Add(New SqlParameter("@impdet", SqlDbType.Money)) For i = 0 To nart - 1 cmD.Parameters("@nrofac").Value = Me.dgvDetalleFactura.Item(0, i).Value cmD.Parameters("@codart").Value = Me.dgvDetalleFactura.Item(1, i).Value cmD.Parameters("@candet").Value = Me.dgvDetalleFactura.Item(2, i).Value cmD.Parameters("@impdet").Value = Me.dgvDetalleFactura.Item(3, i).Value resultado = cmD.ExecuteNonQuery Next 'actualiza el stock Dim strdato1 As String Dim fila1, x As Integer Dim dv1 As New DataView() Dim objDatarow As DataRow Dim stock, nuevostock As Double cmA.Parameters.Add(New SqlParameter("@codart", SqlDbType.VarChar)) cmA.Parameters.Add(New SqlParameter("@stoart", SqlDbType.VarChar)) For i = 0 To nart - 1 strdato1 = Me.dgvDetalleFactura.Item(1, i).Value dv1.Table = objDataSet.Tables("articulo") dv1.Sort = "codart" fila1 = dv1.Find(strdato1) If fila1 = -1 Then MsgBox("no existe") Else objDatarow = objDataSet.Tables("articulo").Rows(fila1)

Page 8: Guia de Laboratorios 5 - VB.NET 2005

Universidad Nacional Jorge Basadre Grohmann - ITEL Carrera: Técnico Analista Programador de Sistemas. Curso: Programación Visual .Net II

Docente: José Luis Ponce Segura Prac05 (8 de 11) e-mail: [email protected] Cel. : 952636911 www.redtacna.net

stock = objDatarow("stoart") nuevostock = stock - Val(Me.dgvDetalleFactura.Item(2, i).Value) cmA.Parameters("@codart").Value = Me.dgvDetalleFactura.Item(1, i).Value cmA.Parameters("@stoart").Value = nuevostock x = cmA.ExecuteNonQuery End If Next Catch exc As Exception MessageBox.Show(exc.Message) End Try Conexion.Close() Actualizar() ActivarControl(False) ActivarBoton(True) EnlazaGrilla() Desplazar(1) End Sub Public Sub cancelar() Conexion.Open() objDataSet.RejectChanges() Conexion.Close() Desplazar(2) ActivarControl(False) ActivarBoton(True) EnlazaGrilla() End Sub Private Sub AnularFactura(ByVal codi As String, ByVal estado As Boolean) Dim objComando As New SqlCommand objComando.Connection = Conexion objComando.CommandType = CommandType.Text objComando.CommandText = "UPDATE FACTURA SET nrofac=@nrofac,estado=@estado WHERE nrofac=@nrofac" Try 'Agregando Parametros objComando.Parameters.Add(New SqlParameter("@nrofac", SqlDbType.VarChar)) objComando.Parameters.Add(New SqlParameter("@estado", SqlDbType.Bit)) 'asignando valores a parametros objComando.Parameters("@nrofac").Value = codi objComando.Parameters("@estado").Value = estado Conexion.Open() resultado = objComando.ExecuteNonQuery Actualizar() Conexion.Close() MessageBox.Show(resultado & " Factura Anualda", "", 0, MessageBoxIcon.Information) Desplazar(1) Catch exc As Exception MessageBox.Show(exc.Message) End Try End Sub Private Sub buscar() Dim strDato As String Dim fila As Integer Dim dv As DataView strDato = InputBox("Ingrese numero de factura", "Buscar") strDato = Format(Val(strDato), "00000") dv = objDataSet.Tables("FACTURA").DefaultView dv.Sort = "nrofac" fila = dv.Find(strDato) If fila = -1 Then MessageBox.Show("Numero de factura no existe", "Cuidado") Exit Sub End If posicion = fila : CargarDatos() End Sub Private Sub cboCliente_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs)

Handles cboCliente.SelectedIndexChanged If flag = 1 Then Me.txtCodCli.Text = Me.cboCliente.SelectedValue End If End Sub

Page 9: Guia de Laboratorios 5 - VB.NET 2005

Universidad Nacional Jorge Basadre Grohmann - ITEL Carrera: Técnico Analista Programador de Sistemas. Curso: Programación Visual .Net II

Docente: José Luis Ponce Segura Prac05 (9 de 11) e-mail: [email protected] Cel. : 952636911 www.redtacna.net

Private Sub cboEmpleado_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cboEmpleado.SelectedIndexChanged

If flag = 1 Then Me.txtCodEmp.Text = Me.cboEmpleado.SelectedValue End If End Sub Private Sub btnArticulos_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

Handles btnArticulos.Click Dim buscar As New FrmBuscarArticulo2005 If buscar.ShowDialog() = Windows.Forms.DialogResult.Cancel Then nart = ncompras totalizar() End If End Sub

3. AGREGAR EL FORMULARIO DE BUSQUEDA DE ARTICULOS : FRMBUSCARARTICULO

• Ir al menú Proyecto, luego seleccione agregar nuevo elemento • Luego nos visualizará una ventana [Agregar nuevo elemento], usted deberá seleccionar Windows

Forms. A continuación proceda a ingresar el nombre para su formulario: frmBuscarArticulo.vb • Por último haga clic en el botón Abrir, luego éste formulario se habrá agregado al Explorador de

soluciones.

Proceda a Diseñar el Siguiente Formulario FrmBuscarArticulo:

a) Diseñar el formulario de acuerdo a la siguiente presentación :

b) Agregar las propiedades del presente formulario de acuerdo a la tabla :

Objeto Propiedad Valor Asignado

Form1 Name BackgroundImage Startposition

frmBuscarArticulo Haga clic en … y Seleccione la imagen CenterScreen

Label1, label2 ... Agregar las etiquetas que sean necesarias en Text

Cambiar el texto que observa en la practica.

TextBox1 Name TxtBusqueda GroupBox Text Buscar por :

Page 10: Guia de Laboratorios 5 - VB.NET 2005

Universidad Nacional Jorge Basadre Grohmann - ITEL Carrera: Técnico Analista Programador de Sistemas. Curso: Programación Visual .Net II

Docente: José Luis Ponce Segura Prac05 (10 de 11) e-mail: [email protected] Cel. : 952636911 www.redtacna.net

RadioButton1 Name RbtCodigo RadioButton2 Name RbtNombre DataGrid1 Name DataGridView1 Label1 Name LblTitulo Label2 Name Lblencontrados Label3 Name LblSeleccion NumericUpDown Name NumericUpDown1 Textbox2 Name txtImporte Button1 Name

Text Button1 BtnCancelar

Button2 Name Text

Button2 BtnAceptar

Agregar el código necesario del presente formulario:

Antes de cualquier codigo escriba la biblioteca de Clases :Imports System.Data Imports System.Data.SqlClient En Declaraciones Generales Escriba el Codigo : Dim strcampo As String Dim objDataAdapter As SqlDataAdapter Dim objDataSet As DataSet Dim sqlstr, oper As String Dim cod_art, des_art As String, pre_art, imp_art As Double Dim can_art, sto_art As Integer,f As Byte Private Sub FrmBuscarArticulo2005_Load(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles MyBase.Load txtBusqueda.Clear() txtBusqueda.Enabled = False DataGridView1.ReadOnly = True NumericUpDown1.Minimum = 0 End Sub

Private Sub rbtCodigo_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles rbtCodigo.Click, rbtNombre.Click

Select Case sender.name Case "rbtCodigo" strcampo = "codart" oper = " codigo " Case "rbtNombre" strcampo = "desart" oper = " nombre " End Select Me.lbltitulo.Text = "ingrese " & oper & " a buscar" Me.DataGridView1.DataSource = Nothing txtBusqueda.Enabled = True txtBusqueda.Clear() txtBusqueda.Focus() lblEncontrados.Text = "" End Sub Private Sub txtBusqueda_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs)

Handles txtBusqueda.TextChanged Dim strSQL As String Dim total As Integer strSQL = "SELECT * FROM articulo WHERE " & Trim(strcampo) & " LIKE '" & _

Trim(Me.txtBusqueda.Text) & "%'" If txtBusqueda.Text = "" Then txtBusqueda.Clear() : txtBusqueda.Focus() DataGridView1.DataSource = Nothing Exit Sub End If objDataAdapter = New SqlDataAdapter(strSQL, Conexion) Conexion.Open() objDataSet = New DataSet() objDataAdapter.Fill(objDataSet, "Articulo") Conexion.Close()

Page 11: Guia de Laboratorios 5 - VB.NET 2005

Universidad Nacional Jorge Basadre Grohmann - ITEL Carrera: Técnico Analista Programador de Sistemas. Curso: Programación Visual .Net II

Docente: José Luis Ponce Segura Prac05 (11 de 11) e-mail: [email protected] Cel. : 952636911 www.redtacna.net

total = Me.objDataSet.Tables("articulo").Rows.Count If total > 0 Then Me.DataGridView1.DataSource = objDataSet Me.DataGridView1.DataMember = "Articulo" lblEncontrados.Text = "Se encontraron " & Str(total) & " articulos" Else lblEncontrados.Text = "No se econtro el articulo...." End If End Sub Private Sub DataGridView1_CurrentCellChanged(ByVal sender As Object, ByVal e As

System.EventArgs) Handles DataGridView1.CurrentCellChanged NumericUpDown1.Value = 0 txtImporte.Clear() Dim fil As Integer fil = DataGridView1.CurrentRow.Index cod_art = Me.DataGridView1.Item(0, fil).Value des_art = Me.DataGridView1.Item(1, fil).Value pre_art = CDbl(Me.DataGridView1.Item(2, fil).Value) sto_art = CInt(Me.DataGridView1.Item(3, fil).Value) LblSeleccion.Text = "Artículo: " & des_art & ", Cantidad:" NumericUpDown1.Maximum = sto_art End Sub Private Sub btnAceptar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

Handles btnAceptar.Click If Me.txtImporte.Text.Length = 0 Or Val(Me.txtImporte.Text) < 1 Then MsgBox("no se ha calculado el importe a pagar..") Exit Sub End If Dim rpta As String rpta = MsgBox("Esta seguro que desea comprar", MsgBoxStyle.YesNo +

MsgBoxStyle.Question, "Confirma Compra") If rpta = vbNo Then Exit Sub If f = 0 Then PreparaGrillaFactura() ncompras = f + 1 factura.dgvDetalleFactura.Item(0, f).Value = factura.lblNroFactura.Text factura.dgvDetalleFactura.Item(1, f).Value = cod_art factura.dgvDetalleFactura.Item(2, f).Value = can_art factura.dgvDetalleFactura.Item(3, f).Value = imp_art rpta = MsgBox("Desea comprar otro artículo", MsgBoxStyle.YesNo + MsgBoxStyle.Question,

"Artículos") If rpta = vbYes Then f += 1 Else factura.totalizar() Me.Dispose() End If End Sub Private Sub PreparaGrillaFactura() factura.dgvDetalleFactura.Columns.Add("NroFac", "Nro. Factura") factura.dgvDetalleFactura.Columns.Add("CodArt", "Cod. Artículo") factura.dgvDetalleFactura.Columns.Add("CanDet", "Cantidad") factura.dgvDetalleFactura.Columns.Add("ImpDet", "Importe") factura.dgvDetalleFactura.Rows.Add(4) End Sub Private Sub btnCancelar_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles btnCancelar.Click factura.cancelar() Me.Dispose() End Sub Private Sub NumericUpDown1_ValueChanged(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles NumericUpDown1.ValueChanged If NumericUpDown1.Value > sto_art Then MsgBox("La cantidad ingresada no debe ser mayor al stock del artículo") End If can_art = CInt(NumericUpDown1.Value) imp_art = CDbl(Format(pre_art * CDbl(NumericUpDown1.Value), "#######.00")) txtImporte.Text = imp_art End Sub