En este vídeo explico como modificar un producto del inventario.
Después de tener ingresado los producto se crea la necesidad de querer modificar datos de un producto en especifico por ejemplo el precios, la existencia, o la descripción del producto.
Para modificar un producto se debe seleccionar de la lista del msGrid y luego dar clic en el botón modificar o dar doble clic sobre el producto para que abra la ventana de Producto y nos muestre todos los datos del producto seleccionado.
Primero vamos a crear una variable global en el modulo Conexiones llamada glob_ModificarPro de tipo Boolean:
glob_ModificarPro
Luego creamos el código en el botón modificar de la ventana inventario:
Private Sub cmdModificar_Click() IdProducto = msGrid.TextMatrix(msGrid.Row, 1) If IdProducto <> "" Then glob_ModificarPro = True frmProducto.Show End If End Sub
Luego en la ventana de Producto nos vamos al evento Load del formulario:
Private Sub Form_Load() CodigoProducto = 0 Call LimpiarTextos Call LlenarProveedores Call LlenarCategorias 'Lineas para modificar el producto If glob_ModificarPro = True Then CodigoProducto = frmInventario.msGrid.TextMatrix(frmInventario.msGrid.Row, 1) Call LlenarDatosProducto End If End Sub
En el código anterior estamos llamando al procedimiento LlenarDatosProducto cuyo código es el siguiente:
Sub LlenarDatosProducto() Dim RecordsetTemp As New ADODB.Recordset Dim Sql As String Sql = "SELECT tblProductos.IdProducto, tblProductos.CodigoPro, tblProductos.NombrePro, tblProductos.NombreCortoPro, tblProductos.ExistPro, tblProductos.ExistMinPro, tblProductos.PCostoPro, tblProductos.PVenta1Pro, tblProductos.PVenta2Pro, tblProductos.PVenta3Pro, tblProductos.PMinimoPro, tblProductos.EstantePro, tblProductos.IdCategoria, tblProductos.IdProveedor, tblProductos.Impuesto, tblProveedores.NombreEmpresaPro, tblCategorias.NombreCategoria " _ & " FROM (tblProductos INNER JOIN tblProveedores ON tblProductos.IdProveedor = tblProveedores.IdProveedor) INNER JOIN tblCategorias ON tblProductos.IdCategoria = tblCategorias.Idcategoria WHERE tblProductos.IdProducto = " & CodigoProducto RecordsetTemp.Open Sql, ConexionADO If RecordsetTemp.RecordCount > 0 Then txtCodigoPro.Text = RecordsetTemp("CodigoPro") txtNombrePro.Text = RecordsetTemp("NombrePro") txtNombreCort.Text = RecordsetTemp("NombreCortoPro") cmdProveedor.Text = RecordsetTemp("NombreEmpresaPro") cmbCategorias.Text = RecordsetTemp("NombreCategoria") txtEstante.Text = RecordsetTemp("EstantePro") txtExistencia = RecordsetTemp("ExistPro") txtExistMinima = RecordsetTemp("ExistMinPro") txtPrecioCosto = RecordsetTemp("PCostoPro") txtImpuesto = RecordsetTemp("Impuesto") txtPrecioV1 = RecordsetTemp("PVenta1Pro") txtPrecioV2 = RecordsetTemp("PVenta2Pro") txtPrecioV3 = RecordsetTemp("PVenta3Pro") txtPrecioVMinim = RecordsetTemp("PMinimoPro") Call CalcularImpuesto Call PorcentajeUtilidad(txtPrecioV1, txtProcV1, txtUtilidadP1) Call PorcentajeUtilidad(txtPrecioV2, txtProcV2, txtUtilidadP2) Call PorcentajeUtilidad(txtPrecioV3, txtProcV3, txtUtilidadP3) Call PorcentajeUtilidad(txtPrecioVMinim, txtProcVMinim, txtUtilidadP4) End If End Sub
Para guardar el producto validamos que la variable CodigoProducto sea mayo a cero para hacer la actualización:
CodCategoria = cmbCategorias.ItemData(cmbCategorias.ListIndex) 'mov CodProv = cmdProveedor.ItemData(cmdProveedor.ListIndex) If CodigoProducto = 0 Then 'erro IdProducto = UltimoIdTabla("tblProductos", "IdProducto") Sql = "Insert Into tblProductos (IdProducto, CodigoPro, NombrePro, NombreCortoPro,EstantePro, ExistPro, ExistMinPro, PCostoPro,PVenta1Pro, PVenta2Pro, PVenta3Pro, PMinimoPro, IdCategoria, IdProveedor) Values (" & IdProducto & ",'" & txtCodigoPro & "','" & txtNombrePro & "','" & txtNombreCort & "','" & txtEstante & "','" & txtExistencia & "','" & txtExistMinima & "','" & txtPrecioCosto & "','" & txtPrecioV1 & "','" & txtPrecioV2 & "','" & txtPrecioV3 & "', '" & txtPrecioVMinim & "', " & CodCategoria & ", " & CodProv & ") " Else Sql = "Update tblProductos SET CodigoPro = '" & txtCodigoPro & "', NombrePro = '" & txtNombrePro & "',NombreCortoPro = '" & txtNombreCort & "',EstantePro = '" & txtEstante & "',ExistPro = '" & txtExistencia & "',ExistMinPro = '" & txtExistMinima & "', PCostoPro = '" & txtPrecioCosto & "', PVenta1Pro = '" & txtPrecioV1 & "', PVenta2Pro = '" & txtPrecioV2 & "', PVenta3Pro = '" & txtPrecioV3 & "', PMinimoPro = '" & txtPrecioVMinim & "', IdCategoria = '" & CodCategoria & "', IdProveedor = '" & CodProv & "' Where IdProducto = " & CodigoProducto End If
El código completo de el sub procedimiento guardar es el siguiente:
Sub GuardarProducto() If txtCodigoPro.Text = "" Then MsgBox "Debe llenar el Campo Código", vbExclamation, "Error" Exit Sub End If If txtNombrePro.Text = "" Then MsgBox "Debe llenar el Campo Nombre del Producto", vbExclamation, "Error" Exit Sub End If If txtNombreCort.Text = "" Then MsgBox "Debe llenar el Campo Nombre Corto", vbExclamation, "Error" Exit Sub End If If txtEstante.Text = "" Then MsgBox "Debe llenar el Campo Estante", vbExclamation, "Error" Exit Sub End If If txtPrecioCosto.Text = "" Then MsgBox "Debe llenar el Campo Precio Costo", vbExclamation, "Error" Exit Sub End If If txtPrecioV1.Text = "" Then MsgBox "Debe llenar el Campo Precio Venta 1", vbExclamation, "Error" Exit Sub End If If txtImpuesto.Text = "" Then MsgBox "Debe llenar el Campo Impuesto", vbExclamation, "Error" Exit Sub End If CodCategoria = cmbCategorias.ItemData(cmbCategorias.ListIndex) 'mov CodProv = cmdProveedor.ItemData(cmdProveedor.ListIndex) If CodigoProducto = 0 Then 'erro IdProducto = UltimoIdTabla("tblProductos", "IdProducto") Sql = "Insert Into tblProductos (IdProducto, CodigoPro, NombrePro, NombreCortoPro,EstantePro, ExistPro, ExistMinPro, PCostoPro,PVenta1Pro, PVenta2Pro, PVenta3Pro, PMinimoPro, IdCategoria, IdProveedor) Values (" & IdProducto & ",'" & txtCodigoPro & "','" & txtNombrePro & "','" & txtNombreCort & "','" & txtEstante & "','" & txtExistencia & "','" & txtExistMinima & "','" & txtPrecioCosto & "','" & txtPrecioV1 & "','" & txtPrecioV2 & "','" & txtPrecioV3 & "', '" & txtPrecioVMinim & "', " & CodCategoria & ", " & CodProv & ") " Else Sql = "Update tblProductos SET CodigoPro = '" & txtCodigoPro & "', NombrePro = '" & txtNombrePro & "',NombreCortoPro = '" & txtNombreCort & "',EstantePro = '" & txtEstante & "',ExistPro = '" & txtExistencia & "',ExistMinPro = '" & txtExistMinima & "', PCostoPro = '" & txtPrecioCosto & "', PVenta1Pro = '" & txtPrecioV1 & "', PVenta2Pro = '" & txtPrecioV2 & "', PVenta3Pro = '" & txtPrecioV3 & "', PMinimoPro = '" & txtPrecioVMinim & "', IdCategoria = '" & CodCategoria & "', IdProveedor = '" & CodProv & "' Where IdProducto = " & CodigoProducto End If ConexionADO.Execute Sql MsgBox "Producto Guardado", vbInformation, "Guardar" Call LimpiarTextos txtCodigoPro.SetFocus End Sub