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

