Clase Practica Visual Basic.net

UNIVERSIDAD AUTONOMA DE CHINANDEGA Sistema de Ventas. Estructuras de la Bases de Datos. Crear los procedimientos para l

Views 85 Downloads 4 File size 757KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

  • Author / Uploaded
  • nancy
Citation preview

UNIVERSIDAD AUTONOMA DE CHINANDEGA Sistema de Ventas. Estructuras de la Bases de Datos.

Crear los procedimientos para la tabla Empleado. Create PROCEDURE AgregarEmpleado ( @CodEmpleado varchar(5), @NombreEmp varchar(20), @ApellidoE varchar(20), @DireccE varchar(25), @SexoE bit, @Telefono varchar(8), @CodCargo varchar(5), @Activo bit, @Observacion varchar(80), @Foto varchar(50) ) AS begin transaction INSERT EMPLEADO(CodEmpleado,NombreEmp,ApellidoE,DireccE,SexoE,Telefono,CodCargo,Activo,Obse rvacion,Foto) VALUES(@CodEmpleado,@NombreEmp,@ApellidoE,@DireccE,@SexoE,@Telefono,@CodCargo,@Activ o,@Observacion,@Foto) if @@error=0 commit transaction else rollback transaction

IV año de sistemas Asignatura: Facultativa II

Catedratico:Ing.Juan Ramon Osabas S.

UNIVERSIDAD AUTONOMA DE CHINANDEGA Procedimiento modificar Empleado. Create PROCEDURE ModificarEmpleado ( @CodEmpleado varchar(5), @NombreEmp varchar(20), @ApellidoE varchar(20), @DireccE varchar(25), @SexoE bit, @Telefono varchar(8), @CodCargo varchar(5), @Activo bit, @Observacion varchar(80), @Foto varchar(50) ) AS BEGIN TRANSACTION UPDATE Empleado SET NombreEmp=@NombreEmp, ApellidoE = @ApellidoE, DireccE=@DireccE, SexoE=@SexoE, Telefono=@Telefono, CodCargo=@CodCargo, Activo=@Activo, Observacion=@Observacion, Foto=@Foto WHERE CodEmpleado=@CodEmpleado IF @@ERROR=0 COMMIT TRANSACTION ELSE ROLLBACK TRANSACTION

Procedimiento Desactivar Empleado.

Create PROCEDURE [dbo].[DesactivaEmpleado] ( @CodEmpleado varchar(5), @Activo bit ) AS BEGIN TRANSACTION UPDATE EMPLEADO SET CodEmpleado=@CodEmpleado, Activo=@Activo WHERE CodEmpleado=@CodEmpleado IF @@ERROR=0 COMMIT TRANSACTION ELSE ROLLBACK TRANSACTION

IV año de sistemas Asignatura: Facultativa II

Catedratico:Ing.Juan Ramon Osabas S.

UNIVERSIDAD AUTONOMA DE CHINANDEGA Procedimiento Eliminar Empleado. Create PROCEDURE [dbo].[EliminarEmpleado] @CodEmpleado varchar(5) AS BEGIN TRANSACTION DELETE FROM EMPLEADO WHERE CodEmpleado=@CodEmpleado IF @@ERROR=0 COMMIT TRANSACTION ELSE ROLLBACK TRANSACTION Entre visual basic y cree el siguiente proyecto.

Cree un menú parecido y modifique la siguiente propiedades. IsMdiContainer= true Windowstate= Maximize

Agregue un segundo formulario para la tabla Empleado. Clic en proyecto Seleccione agregar un Formulario de Windows de le un nombre y dele guardar. Enlácelo con el menú principal. Cree un modulo con el nombre MODCONEXION y agregue el siguiente código. Module MODCONEXION Public bus, compra As Boolean Public cart, nart As String, part, iart, cnart, sart As Double Public factura As Facturacion Public ncompras As Integer Public sesion As String Public Conexion As SqlConnection = _ New SqlConnection("Data Source=RAMON-PC;Initial Catalog=Ventas;Integrated Security=True") Public Sub LimpiarTextBox(ByVal ofrm As Form) For Each oControl As Control In ofrm.Controls If TypeOf oControl Is TextBox Then oControl.Text = "" End If Next End Sub End Module

IV año de sistemas Asignatura: Facultativa II

Catedratico:Ing.Juan Ramon Osabas S.

UNIVERSIDAD AUTONOMA DE CHINANDEGA El diseño del formulario debe quedar de la siguiente manera.

Agregando los botones del T o o l S t r i p “Barra de Herramientas” para actualización y Desplazamiento • Para ello deberá agregar un componente T o o l S t r i p • Luego haga clic derecho sobre el y seleccione E d i t a r E l e m e n t o s … • Nos visualizará la Ventana siguiente, en ella deberás agregar los elementos “ m i e m b r o s d el T o o l S t r i p ” , para ello solo deberás hacer clic en el botón A g r e g a r cuantas veces sea necesarios según la imagen. • Una vez que haz agregado todos los miembros del T o o l S t r i p , procede a establecer las propiedades N a m e , T o o l T i p t e x t e I m a g e p ara c/u de los elementos. • El N a m e a establecer a cada elemento es el que se aprecia en la imagen

IV año de sistemas Asignatura: Facultativa II

Catedratico:Ing.Juan Ramon Osabas S.

UNIVERSIDAD AUTONOMA DE CHINANDEGA Los Objeto Texbox están enumerado ejemplo Texbox1 , Texbox2 asi sucesivamente por defecto el nombre que le da visual basic.

AHORA PROCEDEREMOS A ESCRIBIR EL CODIGO CORRESPONDIENTE: Agregar la Biblioteca de Clases SQLClient: Sirve para poder utilizar los objetos SQLconnection, SqlCommand,SqlDataAdapter Option Compare Text Imports System.Data Imports System.Data.SqlClient En la Sección de Declaraciones Generales dentro de la clase Formulario escriba Dim dacargo As SqlDataAdapter Dim objDataAdapter As SqlDataAdapter Dim objDataSet As New DataSet Dim objDataRow As DataRow Dim posicion, flag, resultado As Integer De clic encima del formulario en el evento load. Private Sub ActualizarEmplevb_Load(sender As Object, e As EventArgs) Handles MyBase.Load Conexion.Open() objDataAdapter = New SqlDataAdapter("SELECT * FROM Empleado WHERE Activo=1", Conexion) objDataAdapter.Fill(objDataSet, "Empleado") Conexion.Close() llenarcombos(False) posicion = (objDataSet.Tables("Empleado").Rows.Count - 1) CargarDatos() lblRuta.Visible = False HabilitarControles(False) HabilitarBotones(True) 'Estableciendo etiquetas a las cajas TextBox1.Tag = "Código" : TextBox2.Tag = "Nombres" TextBox3.Tag = "Apellidos" : TextBox4.Tag = "dirección" TextBox5.Tag = "Teléfono" : TextBox6.Tag = "Observacion" End Sub

Cree el siguiente procedimiento de usuario para llenar los combobox. Private Sub llenarcombos(ByVal cargo As Boolean) Conexion.Open() desconectarcombos() dacargo = New SqlDataAdapter("SELECT * FROM Cargo", MODCONEXION.Conexion) If cargo = False Then dacargo.Fill(objDataSet, "Cargo") Else objDataSet.Tables("Cargo").Clear() dacargo.Fill(objDataSet, "Cargo") cargo = False End If Conexion.Close() ComboBox1.DataBindings.Add(New System.Windows.Forms.Binding("SelectedValue", objDataSet, "Empleado.CodCargo")) ComboBox1.DataSource = Me.objDataSet.Tables("Cargo")

IV año de sistemas Asignatura: Facultativa II

Catedratico:Ing.Juan Ramon Osabas S.

UNIVERSIDAD AUTONOMA DE CHINANDEGA ComboBox1.DisplayMember = "Descripcion" ComboBox1.ValueMember = "CodCargo" ComboBox1.DropDownStyle = ComboBoxStyle.DropDownList ' si es que se ha agregado un nuevo cargo, lo selecionamos If cargo = False Then ComboBox1.SelectedIndex = ComboBox1.Items.Count - 1 End Sub

Cree el siguiente procedimiento de usuario cargar datos. Private Sub CargarDatos() Dim valor As Boolean Try objDataRow = objDataSet.Tables("Empleado").Rows(posicion) TextBox1.Text = objDataRow("CodEmpleado") TextBox2.Text = objDataRow("NombreEmp") TextBox3.Text = objDataRow("ApellidoE") TextBox4.Text = objDataRow("DireccE") valor = objDataRow("SexoE") If valor Then RadioButton1.Checked = True RadioButton2.Checked = False Else RadioButton1.Checked = False RadioButton2.Checked = True End If TextBox5.Text = objDataRow("Telefono") ComboBox1.SelectedValue = objDataRow("CodCargo") TextBox6.Text = objDataRow("Observacion").ToString If objDataRow("Foto").ToString = Nothing Then PictureBox1.Image = Nothing lblRuta.Text = Nothing Else lblRuta.Text = objDataRow("Foto") End If If objDataRow("Activo") = True Then lblEstado.Text = "Activo" : lblEstado.ForeColor = Color.Blue End If If objDataRow("Activo") = False Then lblEstado.Text = "Inactivo" : lblEstado.ForeColor = Color.Red End If tslRegistro.Text = "Registro: " & posicion + 1 & " de " & objDataSet.Tables("Empleado").Rows.Count actualizafoto() Catch exc As Exception MessageBox.Show(exc.Message) End Try End Sub

IV año de sistemas Asignatura: Facultativa II

Catedratico:Ing.Juan Ramon Osabas S.

UNIVERSIDAD AUTONOMA DE CHINANDEGA

Cree el siguiente procedimiento de usuario Habilitar controles. Private Sub HabilitarControles(ByVal est As Boolean) Dim ctrl As Control For Each ctrl In Me.Controls If TypeOf ctrl Is TextBox Then ctrl.Enabled = est Next TextBox1.ReadOnly = True ComboBox1.Enabled = est GroupBox1.Enabled = est End Sub

Cree el siguiente procedimiento de usuario Habilitar Botones. Private Sub HabilitarBotones(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 'boton agregar foto Button2.Visible = Not est ' boton agrehar cargo Button1.Visible = Not est End Sub

Cree el siguiente Funcion verificar datos. Function verificavacios() As Boolean Dim objetos As Object For Each objetos In Me.Controls If TypeOf objetos Is TextBox Then If objetos.name "TextBox1" And objetos.name "TextBox6" And objetos.TextLength = 0 Then MsgBox("Debe ingresar: " & objetos.tag) verificavacios = True Exit Function End If End If Next If ComboBox1.SelectedIndex < 0 Then MsgBox("Debe seleccionar un cargo") verificavacios = True End If

IV año de sistemas Asignatura: Facultativa II

Catedratico:Ing.Juan Ramon Osabas S.

UNIVERSIDAD AUTONOMA DE CHINANDEGA End Function

Cree el siguiente procedimiento de usuario generar código consecutivo. Private Sub GeneraCodigo() Dim codi As String Dim cmd As New SqlCommand("select max(CodEmpleado) from Empleado", Conexion) Conexion.Open() codi = cmd.ExecuteScalar Conexion.Close() Me.TextBox1.Text = Format(Val(codi) + 1, "00000") End Sub

Cree el siguiente procedimiento desactivar combobox Private Sub desconectarcombos() ComboBox1.DataBindings.Clear() End Sub Cree el siguiente procedimiento Limpiar controles Private Sub LimpiarControles() LimpiarTextBox(Me) PictureBox1.Image = Nothing End Sub

Cree el siguiente procedimiento para desplazamiento de registro. 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("Empleado").Rows.Count - 1) Then MessageBox.Show("Último Registro", "", 0, MessageBoxIcon.Information) Else posicion += 1 CargarDatos() End If Case 4 posicion = (objDataSet.Tables("Empleado").Rows.Count - 1) CargarDatos()

IV año de sistemas Asignatura: Facultativa II

Catedratico:Ing.Juan Ramon Osabas S.

UNIVERSIDAD AUTONOMA DE CHINANDEGA End Select End Sub

Cree el siguiente procedimiento para desplazamiento de registro. Private Sub actualizafoto() Dim mifoto As Bitmap If objDataRow("foto").ToString = Nothing Then PictureBox1.Image = Nothing Else mifoto = New Bitmap(Me.lblRuta.Text) PictureBox1.Image = CType(mifoto, Image) End If End Sub

Clic en botón agregar cargo Private Sub AgregaCargo(ByVal codi As String, ByVal nombre As String) 'Agregando el nuevo registro a la tabla cargo Dim objcomando As New SqlCommand("INSERT INTO Cargo (CodCargo,Descripcion) VALUES(@codcar,@descar)", Conexion) 'Parámetros objcomando.Parameters.Add(New SqlParameter("@codcar", SqlDbType.VarChar)) objcomando.Parameters("@codcar").Value = codi objcomando.Parameters.Add(New SqlParameter("@descar", SqlDbType.VarChar)) objcomando.Parameters("@descar").Value = nombre Conexion.Open() objcomando.ExecuteNonQuery() ModConexion.Conexion.Close() llenarcombos(True) End Sub Private Sub Editar() flag = 2 HabilitarControles(True) HabilitarBotones(False) TextBox2.Focus() End Sub Private Sub Nuevo() flag = 1 lblRuta.Text = Nothing HabilitarControles(True) HabilitarBotones(False) LimpiarControles() GeneraCodigo() End Sub Private Sub Actualizar() 'Para actualizar el DataSet objDataSet.Clear() objDataAdapter.Fill(objDataSet, "Empleado") End Sub Private Sub Cancelar()

IV año de sistemas Asignatura: Facultativa II

Catedratico:Ing.Juan Ramon Osabas S.

UNIVERSIDAD AUTONOMA DE CHINANDEGA Conexion.Open() objDataSet.RejectChanges() Conexion.Close() HabilitarControles(False) HabilitarBotones(True) Desplazar(4) End Sub

Clic en Objeto ToolStrip1 en el evento ItemClicked Private Sub ToolStrip1_ItemClicked(sender As Object, e As ToolStripItemClickedEventArgs) Handles ToolStrip1.ItemClicked Select Case e.ClickedItem.Name ' Actualización Case "tsbNuevo" ' Botón Nuevo Nuevo() Case "tsbGuardar" ' Botón Guardar Guardar() Case "tsbEditar" ' Botón Editar Editar() Case "tsbCancelar" ' Botón Cancelar Cancelar() Case "tsbEliminar" ' Botón Desactivar Empleado Dim rpta As MsgBoxResult rpta = MsgBox("Esta seguro que desea Desactivar Al Empleado :" & Chr(13) & Chr(10) & TextBox1.Text & " - " & TextBox2.Text & " " & _ TextBox3.Text, MsgBoxStyle.YesNo + MsgBoxStyle.Question, "Confirmación") If rpta = vbYes Then DesactivaEmpleado(TextBox1.Text, 0) Case "tsbsalir" ' Botón Salir Me.Close() ' Desplazamiento 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

IV año de sistemas Asignatura: Facultativa II

Catedratico:Ing.Juan Ramon Osabas S.

UNIVERSIDAD AUTONOMA DE CHINANDEGA

Crea procedimiento que permita guardar y edita un empleado Private Sub Guardar() If verificavacios() = True Then Exit Sub Dim objComando As New SqlCommand Dim oper As String, valor, activo As Boolean objComando.Connection = ModConexion.Conexion objComando.CommandType = CommandType.StoredProcedure If flag = 1 Then 'Agregar objComando.CommandText = "AgregarEmpleado" oper = " insertados : " Else ' Editar objComando.CommandText = "modificarEmpleado" oper = " modificados : " End If Try 'Agregando Parametros objComando.Parameters.Add(New SqlParameter("@CodEmpleado", SqlDbType.VarChar)) objComando.Parameters.Add(New SqlParameter("@NombreEmp", SqlDbType.VarChar)) objComando.Parameters.Add(New SqlParameter("@ApellidoE", SqlDbType.VarChar)) objComando.Parameters.Add(New SqlParameter("@DireccE", SqlDbType.VarChar)) objComando.Parameters.Add(New SqlParameter("@SexoE", SqlDbType.Bit)) objComando.Parameters.Add(New SqlParameter("@Telefono", SqlDbType.VarChar)) objComando.Parameters.Add(New SqlParameter("@CodCargo", SqlDbType.VarChar)) objComando.Parameters.Add(New SqlParameter("@Activo", SqlDbType.Bit)) objComando.Parameters.Add(New SqlParameter("@Observacion", SqlDbType.VarChar)) objComando.Parameters.Add(New SqlParameter("@Foto", SqlDbType.VarChar)) 'asignando valores a parametros If RadioButton1.Checked = True Then valor = True Else valor = False End If activo = True ' Todos los empleados nuevos son activos, ¿activar un empleado? objComando.Parameters("@CodEmpleado").Value = TextBox1.Text objComando.Parameters("@NombreEmp").Value = TextBox2.Text objComando.Parameters("@ApellidoE").Value = TextBox3.Text objComando.Parameters("@DireccE").Value = TextBox4.Text objComando.Parameters("@SexoE").Value = valor objComando.Parameters("@Telefono").Value = TextBox5.Text objComando.Parameters("@CodCargo").Value = ComboBox1.SelectedValue

IV año de sistemas Asignatura: Facultativa II

Catedratico:Ing.Juan Ramon Osabas S.

UNIVERSIDAD AUTONOMA DE CHINANDEGA objComando.Parameters("@Activo").Value = activo objComando.Parameters("@Observacion").Value = TextBox6.Text objComando.Parameters("@Foto").Value = lblRuta.Text Conexion.Open() resultado = objComando.ExecuteNonQuery Actualizar() Conexion.Close() posicion = (objDataSet.Tables("Empleado").Rows.Count - 1) MessageBox.Show("Registros " & oper & resultado, "", 0, MessageBoxIcon.Information) Catch exc As Exception MessageBox.Show(exc.Message) End Try llenarcombos(False) Desplazar(4) HabilitarControles(False) HabilitarBotones(True) End Sub

Crea procedimiento que permita desactivar el empleado y pida como parámetro el codi y estado Private Sub DesactivaEmpleado(ByVal codi As String, ByVal estado As Boolean) Dim objComando As New SqlCommand objComando.Connection = ModConexion.Conexion objComando.CommandType = CommandType.StoredProcedure objComando.CommandText = "DesactivaEmpleado" Try 'Agregando Parametros objComando.Parameters.Add(New SqlParameter("@CodEmpleado", SqlDbType.VarChar)) objComando.Parameters.Add(New SqlParameter("@Activo", SqlDbType.Bit)) 'asignando valores a parametros objComando.Parameters("@CodEmpleado").Value = codi objComando.Parameters("@Activo").Value = estado Conexion.Open() resultado = objComando.ExecuteNonQuery Actualizar() Conexion.Close() MessageBox.Show(resultado & " Empleado Desactivado", "", 0, MessageBoxIcon.Information) Desplazar(1) Catch exc As Exception MessageBox.Show(exc.Message) End Try llenarcombos(False) HabilitarControles(False) HabilitarBotones(True) End Sub

Codigo del Boton Agregar Foto. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click Dim mifoto As Bitmap Dim curfilename As String = "" Dim opendlg As OpenFileDialog = New OpenFileDialog opendlg.Filter = "All Bitmapfiles|*.*" Dim filter As String = opendlg.Filter opendlg.Title = "open a Bitmap file"

IV año de sistemas Asignatura: Facultativa II

Catedratico:Ing.Juan Ramon Osabas S.

UNIVERSIDAD AUTONOMA DE CHINANDEGA If opendlg.ShowDialog() = Windows.Forms.DialogResult.OK Then curfilename = opendlg.FileName lblRuta.Text = curfilename mifoto = New Bitmap(curfilename) PictureBox1.Image = CType(mifoto, Image) Else Exit Sub End If End Sub Codigo del Boton Agregar Nuevo Cargo. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 'Generando código para el nuevo cargo Dim codi As String Dim cmd As New SqlCommand("select max(CodCargo) from Cargo", MODCONEXION.Conexion) Conexion.Open() codi = cmd.ExecuteScalar codi = Format(Val(codi) + 1, "00000") Conexion.Close() ' Solicitando el nombre del nuevo cargo Dim nombre As String nombre = InputBox("Ingrese Nombre de nuevo cargo:", "Agregando Nuevo Cargo") If nombre.Length < 4 Then MsgBox("Debe ingresar mínimo 4 caracteres", MsgBoxStyle.Critical, "Error") Exit Sub Else Dim rpta As MsgBoxResult rpta = MsgBox("Esta seguro que desea agregar el nuevo cargo :" & Chr(13) & Chr(10) & "codigo: " & codi & Chr(13) & Chr(10) & _ "Nombre: " & nombre, MsgBoxStyle.YesNo + MsgBoxStyle.Question, "Confirmación") If rpta = vbYes Then AgregaCargo(codi, nombre) Else Exit Sub End If End If End Sub

Codigo del Boton Buscar del Tooltrips . Private Sub tsbBuscar_Click(sender As Object, e As EventArgs) Handles tsbBuscar.Click Select Case sender.name Case "tsbBuscar" Dim strDato As String Dim fila As Integer Dim dv As New DataView strDato = InputBox("Ingrese codigo del Empleado: ", "Buscar") dv.Table = objDataSet.Tables("Empleado") dv.Sort = "CodEmpleado" fila = dv.Find(strDato) If fila = -1 Then MessageBox.Show("Codigo del Empleado no Existe", "Cuidado") Exit Sub

IV año de sistemas Asignatura: Facultativa II

Catedratico:Ing.Juan Ramon Osabas S.

UNIVERSIDAD AUTONOMA DE CHINANDEGA End If posicion = fila CargarDatos() Case "tsbbuscaravanzado" MessageBox.Show("Proximamente será implementado", "Busqueda Avanzada", MessageBoxButtons.OK, MessageBoxIcon.Information) End Select End Sub

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.

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:

IV año de sistemas Asignatura: Facultativa II

Catedratico:Ing.Juan Ramon Osabas S.

UNIVERSIDAD AUTONOMA DE CHINANDEGA

Creación de los procedimientos almacenados. Procedimiento agregar Factura. Create procedure agregarfactura ( @NomFac varchar(5), @FechaF datetime, @Subtotal float, @Totaligv float, @TotalFac float, @Codcliente varchar(5), @CodEmpleado varchar(5), @Estado bit ) as begin transaction INSERT INTO Factura (NomFac,FechaF,Subtotal,Totaligv,TotalFac,Codcliente,CodEmpleado,Estado) VALUES (@NomFac,@FechaF,@Subtotal,@Totaligv,@TotalFac,@Codcliente,@CodEmpleado,@Estado) if @@error=0 Commit Transaction else Rollback Transaction

Procedimiento agregar Detalle. Create procedure agregardetalle ( @NomFac varchar(5), @CodArticulo varchar(5), @CantidaA int, @importe numeric ) as Begin Transaction INSERT INTO Detalle (NomFac,CodArticulo,CantidaA,importe) VALUES (@NomFac,@CodArticulo,@CantidaA,@importe) if @@error=0 Commit Transaction else Rollback Transaction

Procedimiento actualizar stok.. Create procedure actualizarStock

IV año de sistemas Asignatura: Facultativa II

Catedratico:Ing.Juan Ramon Osabas S.

UNIVERSIDAD AUTONOMA DE CHINANDEGA ( @CodArticulo varchar(5), @StokA int ) as update Articulo set StokA=@StokA where CodArticulo=@CodArticulo

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 Dim Dim Dim Dim Dim Dim Dim Dim Dim Dim

daFactura As SqlDataAdapter dadetalle As SqlDataAdapter daEmpleado As SqlDataAdapter daCliente As SqlDataAdapter daArticulo As SqlDataAdapter objDataSet As New DataSet flag As Integer resultado As Integer strNroFac As String fil As Integer objDataRow As DataRow

Dim posicion As Integer Dim nart As Byte Código del Procedimiento Form_Load (Formulario)

Private Sub Facturacion_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim stremp, strcli As String stremp = "SELECT NombreEmp,ApellidoE,CodEmpleado,DireccE,SexoE,Telefono,Observacion,CodCargo,Activo,N ombreEmp + " & _ "' '" & " + ApellidoE AS nomape FROM Empleado" strcli = "SELECT CodCliente,NombreC,ApellidoC,DirC,RucC,NombreC+ " & _ "' '" & " + ApellidoC 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")

IV año de sistemas Asignatura: Facultativa II

Catedratico:Ing.Juan Ramon Osabas S.

UNIVERSIDAD AUTONOMA DE CHINANDEGA daCliente.Fill(objDataSet, "Cliente") daArticulo.Fill(objDataSet, "Articulo") ' relacionar las dos tablas del dataset por campo común ' relacionar las dos tablas del dataset por campo común objDataSet.Relations.Add("Factura_detalle", _ objDataSet.Tables("Factura").Columns("NomFac"), _ objDataSet.Tables("Detalle").Columns("NomFac")) ' Conexion.Close() llenarcombos() ' posicion = (objDataSet.Tables("Factura").Rows.Count - 1) CargarDatos() ' ActivarControl(False) ActivarBoton(True) Me.DataGridView1.ReadOnly = True End Sub Cree el siguiente procedimiento de usuario cargar datos:

Private Sub CargarDatos() ' ya esta Try objDataRow = objDataSet.Tables("Factura").Rows(posicion) lblnumfac.Text = objDataRow("NomFac") TextBox1.Text = objDataRow("CodCliente") TextBox2.Text = objDataRow("CodEmpleado") DateTimePicker1.Value = objDataRow("FechaF") TextBox2.Text = objDataRow("Subtotal") TextBox2.Text = objDataRow("Totaligv") TextBox2.Text = objDataRow("TotalFac") ComboBox1.SelectedValue = objDataRow("CodCliente") ComboBox2.SelectedValue = objDataRow("CodEmpleado") 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

Cree el siguiente procedimiento Enlazar Grilla. Private Sub EnlazaGrilla() ' Declarando variables a utilizar Dim miDr As SqlDataReader Dim strSQL As String = "Select * from Detalle where NomFac='" & lblnumfac.Text & "'" Dim miDt As New DataTable Dim Cm As SqlCommand ' Establecemos la conexión con la base de datos Cm = New SqlCommand(strSQL, Conexion) '

IV año de sistemas Asignatura: Facultativa II

Catedratico:Ing.Juan Ramon Osabas S.

UNIVERSIDAD AUTONOMA DE CHINANDEGA 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) DataGridView1.Columns.Clear() DataGridView1.DataSource = miDt Conexion.Close() End Sub Cree los procedimiento para llenar los combobox. Private Sub llenarcombos() ' Conexion.Open() Call desconectarcombos() ' Enlazando el combo de cliente ComboBox1.DataBindings.Add(New System.Windows.Forms.Binding("SelectedValue", Me.objDataSet, "Factura.CodCliente")) ComboBox1.DataSource = Me.objDataSet.Tables("Cliente") ComboBox1.DisplayMember = "NombreC" ComboBox1.ValueMember = "CodCliente" ComboBox1.DropDownStyle = ComboBoxStyle.DropDownList ' enlazando el combo de empleado ComboBox2.DataBindings.Add(New System.Windows.Forms.Binding("SelectedValue", Me.objDataSet, "Factura.CodEmpleado")) ComboBox2.DataSource = Me.objDataSet.Tables("Empleado") ComboBox2.DisplayMember = "NombreEmp" ComboBox2.ValueMember = "CodEmpleado" ComboBox2.DropDownStyle = ComboBoxStyle.DropDownList End Sub Private Sub desconectarcombos() ComboBox1.DataBindings.Clear() ComboBox2.DataBindings.Clear() End Sub Cree los procedimiento para limpiar controles Private Sub LimpiarControles() Dim ctrl As Control For Each ctrl In Me.Controls If TypeOf ctrl Is TextBox Then ctrl.Text = "" Next ComboBox1.Text = "" ComboBox2.Text = "" End Sub

Cree los procedimiento para actualizar 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")

IV año de sistemas Asignatura: Facultativa II

Catedratico:Ing.Juan Ramon Osabas S.

UNIVERSIDAD AUTONOMA DE CHINANDEGA 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 Cree los procedimiento para Activar controles

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

Cree los procedimiento Generar código. Private Sub GeneraCodigo() Dim cmd As New SqlCommand("select max(NomFac) from Factura", Conexion) Conexion.Open() strNroFac = cmd.ExecuteScalar Conexion.Close() lblnumfac.Text = Format(Val(strNroFac) + 1,"00000") End Sub

Cree los procedimiento Totalizar. Public Sub totalizar() Dim i As Integer, st As Double For i = 0 To nart st = st + CDbl(Me.DataGridView1.Item(3, i).Value) Next Me.TextBox3.Text = Format(st, "#######.00") Me.TextBox4.Text = Format(CDbl(Me.TextBox3.Text) * 0.19, "#######.00") Me.TextBox5.Text = Format(CDbl(Me.TextBox3.Text) + CDbl(Me.TextBox4.Text), "#######.00") End Sub

Cree los procedimiento desplazar. Private Sub Desplazar(ByVal op As Integer) Select Case op Case 1 posicion = 0 CargarDatos() Case 2 If posicion = 0 Then

IV año de sistemas Asignatura: Facultativa II

Catedratico:Ing.Juan Ramon Osabas S.

UNIVERSIDAD AUTONOMA DE CHINANDEGA 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

Programe el ToolStrip1 en el Evento ItemClicked Private Sub ToolStrip1_ItemClicked(sender As Object, e As 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.: " & lblnumfac.Text, MsgBoxStyle.YesNo + MsgBoxStyle.Question, "Confirmación") If rpta = vbYes Then AnularFactura(lblnumfac.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

Cree el procedimiento Nuevo. Private Sub Nuevo()

IV año de sistemas Asignatura: Facultativa II

Catedratico:Ing.Juan Ramon Osabas S.

UNIVERSIDAD AUTONOMA DE CHINANDEGA flag = 1 ActivarControl(True) Desplazar(4) ActivarBoton(False) LimpiarControles() GeneraCodigo() ' llamar al proc. para generar Nro. Factura Me.DataGridView1.DataSource = Nothing End Sub

Cree el procedimiento Nuevo. 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 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("@NomFac", SqlDbType.VarChar)) cmF.Parameters.Add(New SqlParameter("@FechaF", SqlDbType.DateTime)) cmF.Parameters.Add(New SqlParameter("@Subtotal", SqlDbType.Float)) cmF.Parameters.Add(New SqlParameter("@Totaligv", SqlDbType.Float)) cmF.Parameters.Add(New SqlParameter("@TotalFac", SqlDbType.Float)) cmF.Parameters.Add(New SqlParameter("@Codcliente", SqlDbType.VarChar)) cmF.Parameters.Add(New SqlParameter("@CodEmpleado", SqlDbType.VarChar)) cmF.Parameters.Add(New SqlParameter("@Estado", SqlDbType.Bit)) cmF.Parameters("@FechaF").Value = Me.DateTimePicker1.Value.ToShortTimeString cmF.Parameters("@NomFac").Value = Me.lblnumfac.Text cmF.Parameters("@Subtotal").Value = Me.TextBox3.Text

IV año de sistemas Asignatura: Facultativa II

Catedratico:Ing.Juan Ramon Osabas S.

UNIVERSIDAD AUTONOMA DE CHINANDEGA cmF.Parameters("@Totaligv").Value = Me.TextBox4.Text cmF.Parameters("@TotalFac").Value = Me.TextBox5.Text cmF.Parameters("@Codcliente").Value = Me.TextBox1.Text cmF.Parameters("@CodEmpleado").Value = Me.TextBox2.Text cmF.Parameters("@Estado").Value = estado Conexion.Open() resultado = cmF.ExecuteNonQuery 'Para detalle Dim i As Integer cmD.Parameters.Add(New cmD.Parameters.Add(New cmD.Parameters.Add(New cmD.Parameters.Add(New

SqlParameter("@NomFac", SqlDbType.VarChar)) SqlParameter("@CodArticulo", SqlDbType.VarChar)) SqlParameter("@CantidaA", SqlDbType.Money)) SqlParameter("@importe", SqlDbType.Money))

For i = 0 To nart - 1 cmD.Parameters("@NomFac").Value = Me.DataGridView1.Item(0, i).Value cmD.Parameters("@CodArticulo").Value = Me.DataGridView1.Item(1, i).Value cmD.Parameters("@CantidaA").Value = Me.DataGridView1.Item(2, i).Value cmD.Parameters("@importe").Value = Me.DataGridView1.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("@CodArticulo", SqlDbType.VarChar)) cmA.Parameters.Add(New SqlParameter("@StokA", SqlDbType.VarChar)) For i = 0 To nart - 1 strdato1 = Me.DataGridView1.Item(1, i).Value dv1.Table = objDataSet.Tables("Articulo") dv1.Sort = "@CodArticulo" fila1 = dv1.Find(strdato1) If fila1 = -1 Then MsgBox("no existe") Else objDatarow = objDataSet.Tables("Articulo").Rows(fila1) stock = objDatarow("StokA") nuevostock = stock - Val(Me.DataGridView1.Item(2, i).Value) cmA.Parameters("@CodArticulo").Value = Me.DataGridView1.Item(1, i).Value cmA.Parameters("@StokA").Value = nuevostock x = cmA.ExecuteNonQuery End If Next Catch exc As Exception MessageBox.Show(exc.Message) End Try Conexion.Close() Actualizar() ActivarControl(False)

IV año de sistemas Asignatura: Facultativa II

Catedratico:Ing.Juan Ramon Osabas S.

UNIVERSIDAD AUTONOMA DE CHINANDEGA ActivarBoton(True) EnlazaGrilla() Desplazar(1) End Sub

Cree el procedimiento cancelar. Public Sub cancelar() Conexion.Open() objDataSet.RejectChanges() Conexion.Close() Desplazar(2) ActivarControl(False) ActivarBoton(True) EnlazaGrilla() End Sub

Cree el procedimiento anular o eliminar . 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 NomFac=@NomFac,Estado=@Estado WHERE NomFac=@NomFac" Try 'Agregando Parametros objComando.Parameters.Add(New SqlParameter("@NomFac", SqlDbType.VarChar)) objComando.Parameters.Add(New SqlParameter("@Estado", SqlDbType.Bit)) 'asignando valores a parametros objComando.Parameters("@NomFac").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

IV año de sistemas Asignatura: Facultativa II

Catedratico:Ing.Juan Ramon Osabas S.

UNIVERSIDAD AUTONOMA DE CHINANDEGA

Cree el procedimiento Buscar . 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 = "NomFac" 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

Agrege el código en combobox cliente Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged If flag = 1 Then Me.TextBox1.Text = Me.ComboBox1.SelectedValue End If End Sub

Agregue el código en combobox Empleado

Private Sub ComboBox2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox2.SelectedIndexChanged If flag = 1 Then Me.TextBox2.Text = Me.ComboBox2.SelectedValue End If End Sub

Agregue el código en el Boton Elegir Articulo

IV año de sistemas Asignatura: Facultativa II

Catedratico:Ing.Juan Ramon Osabas S.

UNIVERSIDAD AUTONOMA DE CHINANDEGA Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim buscar As New BuscarArticulo If buscar.ShowDialog() = Windows.Forms.DialogResult.Cancel Then nart = ncompras totalizar() End If End Sub

diseñe la siguiente interfaz de la siguiente manera.

mports System.Data Imports System.Data.SqlClient Public Class BuscarArticulo 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 BuscarArticulo_Load(sender As Object, e As EventArgs) Handles MyBase.Load TxtBuscar.Clear() TxtBuscar.Enabled = False DataGridView1.ReadOnly = True NumericUpDown1.Minimum = 0 End Sub

IV año de sistemas Asignatura: Facultativa II

Catedratico:Ing.Juan Ramon Osabas S.

UNIVERSIDAD AUTONOMA DE CHINANDEGA Private Sub RadioButton1_Click(sender As Object, e As EventArgs) Handles RadioButton1.Click Select Case sender.name Case "RadioButton1" strcampo = "CodArticulo" oper = " Codigo " Case "RadioButton1" strcampo = "DesArt" oper = " Nombre " End Select Me.lblTitulo.Text = "ingrese " & oper & " a buscar" Me.DataGridView1.DataSource = Nothing TxtBuscar.Enabled = True TxtBuscar.Clear() TxtBuscar.Focus() lblEncontrados.Text = "" End Sub

Agregue el código en el Boton comprar articulo Private Sub cmdComprar_Click(sender As Object, e As EventArgs) Handles cmdComprar.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 Facturacion.DataGridView1.Item(0, f).Value = Facturacion.DataGridView1.Item(1, f).Value = Facturacion.DataGridView1.Item(2, f).Value = Facturacion.DataGridView1.Item(3, f).Value = rpta = MsgBox("Desea comprar otro artículo", MsgBoxStyle.Question, "Artículos") If rpta = vbYes Then f += 1 Else Facturacion.totalizar() Me.Dispose() End If

Facturacion.lblnumfac.Text cod_art can_art imp_art MsgBoxStyle.YesNo +

End Sub Procedimiento prepara grilla. Private Sub PreparaGrillaFactura() Facturacion.DataGridView1.Columns.Add("NomFac", "NomFac.Factura") Facturacion.DataGridView1.Columns.Add("CodArticulo", "CodArticulo.Artículo") Facturacion.DataGridView1.Columns.Add("CantidaA", "Cantidad") Facturacion.DataGridView1.Columns.Add("Importe", "Importe") Facturacion.DataGridView1.Rows.Add(4) End Sub

IV año de sistemas Asignatura: Facultativa II

Catedratico:Ing.Juan Ramon Osabas S.

UNIVERSIDAD AUTONOMA DE CHINANDEGA

Private Sub cmdCancelar_Click(sender As Object, e As EventArgs) Handles cmdCancelar.Click factura.cancelar() Me.Dispose() End Sub Private Sub NumericUpDown1_ValueChanged(sender As Object, e As 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 Boton Buscar Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim strSQL As String Dim total As Integer strSQL = "SELECT * FROM Articulo WHERE " & Trim(strcampo) & " LIKE '" & Trim(Me.TxtBuscar.Text) & "%'" If TxtBuscar.Text = "" Then TxtBuscar.Clear() : TxtBuscar.Focus() DataGridView1.DataSource = Nothing Exit Sub End If objDataAdapter = New SqlDataAdapter(strSQL, Conexion) Conexion.Open() objDataSet = New DataSet() objDataAdapter.Fill(objDataSet, "Articulo") Conexion.Close() 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

IV año de sistemas Asignatura: Facultativa II

Catedratico:Ing.Juan Ramon Osabas S.

UNIVERSIDAD AUTONOMA DE CHINANDEGA

Private Sub DataGridView1_DoubleClick(sender As Object, e As EventArgs) Handles DataGridView1.DoubleClick 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 End Class

IV año de sistemas Asignatura: Facultativa II

Catedratico:Ing.Juan Ramon Osabas S.