You are on page 1of 11

UNJBG

¡¡LÍDER EN CAPACITACIÓN INFORMÁTICA!!


ITEL
Garantía del proceso Enseñanza-Aprendizaje con las últimas
CARRERA
tecnologías, con computadoras de última generación,
Técnico Analista CURSO
impresoras, escáner, multimedia, redes, Internet, material
Programador de Programación Visual .NET II
didáctico paso a paso, biblioteca y aula virtual con docentes del
Sistemas
mas alto nivel.

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:

Bimestre Acadêmico : 2009- Docente : José Luis Ponce Segura.


Ciclo : V (1 de 11) Fecha : Tacna, Mayo del 2009
Universidad Nacional Jorge Basadre Grohmann - ITEL
Carrera: Técnico Analista Programador de Sistemas. Curso: Programación Visual .Net II

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,
Docente: José Luis Ponce Segura Prac05 (2 de 11) e-mail: jlponcesg@hotmail.com
Cel. : 952636911 www.redtacna.net
Universidad Nacional Jorge Basadre Grohmann - ITEL
Carrera: Técnico Analista Programador de Sistemas. Curso: Programación Visual .Net II

@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 Detalle
CREATE 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

Docente: José Luis Ponce Segura Prac05 (3 de 11) e-mail: jlponcesg@hotmail.com


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

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
Docente: José Luis Ponce Segura Prac05 (4 de 11) e-mail: jlponcesg@hotmail.com
Cel. : 952636911 www.redtacna.net
Universidad Nacional Jorge Basadre Grohmann - ITEL
Carrera: Técnico Analista Programador de Sistemas. Curso: Programación Visual .Net II

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() Private Sub ActivarBoton(ByVal est As Boolean)
cboCliente.DataBindings.Clear() Dim oitem As Windows.Forms.ToolStripItem
cboEmpleado.DataBindings.Clear() For Each oitem In ToolStrip1.Items
End Sub 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() Private Sub ActivarControl(ByVal est As Boolean)
Dim ctrl As Control Dim ctrl As Control
For Each ctrl In Me.Controls For Each ctrl In Me.Controls
If TypeOf ctrl Is TextBox Then ctrl.Text = If TypeOf ctrl Is GroupBox Then ctrl.Enabled = est
"" If TypeOf ctrl Is DateTimePicker Then ctrl.Enabled
Next = est
cboEmpleado.Text = "" If TypeOf ctrl Is Button Then ctrl.Enabled = est
cboCliente.Text = "" Next
End Sub End Sub
Private Sub Actualizar() Private Sub GeneraCodigo()
objDataSet.Clear() Dim cmd As New SqlCommand("select max(nrofac)
daFactura.Fill(objDataSet, "factura") from factura",Conexion)
dadetalle.Fill(objDataSet, "detalle") Conexion.Open()
daEmpleado.Fill(objDataSet, "empleado") strNroFac = cmd.ExecuteScalar
daCliente.Fill(objDataSet, "cliente") Conexion.Close()
daArticulo.Fill(objDataSet, "articulo") lblNroFactura.Text = Format(Val(strNroFac) + 1,
End Sub "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

Docente: José Luis Ponce Segura Prac05 (5 de 11) e-mail: jlponcesg@hotmail.com


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

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

Docente: José Luis Ponce Segura Prac05 (6 de 11) e-mail: jlponcesg@hotmail.com


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

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)

Docente: José Luis Ponce Segura Prac05 (7 de 11) e-mail: jlponcesg@hotmail.com


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

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

Docente: José Luis Ponce Segura Prac05 (8 de 11) e-mail: jlponcesg@hotmail.com


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

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 frmBuscarArticulo
BackgroundImage Haga clic en … y Seleccione la imagen
Startposition CenterScreen
Label1, label2 ... Agregar las etiquetas que Cambiar el texto que observa en la practica.
sean necesarias en Text
TextBox1 Name TxtBusqueda
GroupBox Text Buscar por :
Docente: José Luis Ponce Segura Prac05 (9 de 11) e-mail: jlponcesg@hotmail.com
Cel. : 952636911 www.redtacna.net
Universidad Nacional Jorge Basadre Grohmann - ITEL
Carrera: Técnico Analista Programador de Sistemas. Curso: Programación Visual .Net II

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 Button1
Text BtnCancelar
Button2 Name Button2
Text 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()

Docente: José Luis Ponce Segura Prac05 (10 de 11) e-mail: jlponcesg@hotmail.com
Cel. : 952636911 www.redtacna.net
Universidad Nacional Jorge Basadre Grohmann - ITEL
Carrera: Técnico Analista Programador de Sistemas. Curso: Programación Visual .Net II

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

Docente: José Luis Ponce Segura Prac05 (11 de 11) e-mail: jlponcesg@hotmail.com
Cel. : 952636911 www.redtacna.net

You might also like