En esta vídeo, se trabajará que al escribir el nombre del producto y aparezca la lista de productos me pueda desplazar en ella al presionar la Tecla Flecha Abajo y Al desplazarme con las teclas Fecha Arriba y Flecha Abajo busque los datos del producto seleccionado y lo segundo es calcular el valor total de ese producto seleccionado.
Colabora y Suscribete a mi canal de
Se agrego unas lineas adicional al evento KeyUp del control txtNombrePro
Private Sub txtNombrePro_KeyUp(KeyCode As Integer, Shift As Integer) If Len(txtNombrePro.Text) > 2 Then Call BuscarProductoNombre Else lstListaRapida.Visible = False End If If KeyCode = 40 Then 'Línea nueva lstListaRapida.SetFocus 'Línea nueva End If 'Línea nueva End Sub
Se actualizo el procedimiento — donde agregamos el IdProducto a la propieda ItemData del control List que nos permite guardarlo con un indice para luego poderlo obtener, creamos un contador en la variable Index que nos ayuda a guardar ese datos en el control.
Sub BuscarProductoNombre() Dim Sql As String Dim Index As Long 'linea nueva Sql = "Select * From tblProductos Where NombrePro Like '" & txtNombrePro.Text & "%'" Set RecordSet_Producto = ConexionADO.Execute(Sql) If RecordSet_Producto.RecordCount > 0 Then lstListaRapida.Clear Index = 0 'linea nueva Do While Not RecordSet_Producto.EOF lstListaRapida.AddItem RecordSet_Producto("NombrePro") lstListaRapida.ItemData(Index) = RecordSet_Producto("IdProducto") 'linea nueva Index = Index + 1 'linea nueva RecordSet_Producto.MoveNext Loop lstListaRapida.Visible = True lstListaRapida.ListIndex = 0 'linea nueva Else lstListaRapida.Visible = False End If End Sub
En el evento KeyUp de control List agregamos las siguientes lineas que nos permiten primero obtener los datos del producto seleccionado en la lista, segundo ocultar la lista y devolver el foco al control txtNombrePro para poder buscar otro producto y tercero presionar la tecla Enter y así poder digitar la cantidad del producto a comprar:
Private Sub lstListaRapida_KeyUp(KeyCode As Integer, Shift As Integer) Dim IdPro As Long If KeyCode = 40 Or KeyCode = 39 Then 'Tecla Direccionar Arriba y Abajo IdPro = lstListaRapida.ItemData(lstListaRapida.ListIndex) Call DatosProducto(IdPro) End If If KeyCode = 27 Then 'Tecla ESC lstListaRapida.Visible = False End If If KeyCode = 13 Then 'Tecla Enter txtCant_Pro.SetFocus lstListaRapida.Visible = False End If End Sub
Después de tener la lista ya programada podemos cargar la ubicación de esta en el evento Load del Formulario para no tener control List encima de otro controles. Para esto tomamo su propiedad Top y Left y se las asignamos de la siguiente manera:
Private Sub Form_Load() Call Inicial lstListaRapida.Top = 2605 'Linea Nueva lstListaRapida.Left = 1920 'Linea Nueva End Sub
Luego de esto podemos mover la lista a cualquier otro lugar para poder trabajar mejor.
Necesitamos calcular el Valor Total del producto que estamos buscando ejemplo si quisiéramos comprar 2 productos hay que multiplicar la cantidad comprada por el precio de venta del producto y si queremos hacer el descuento ya sea por valor o por porcentaje se calcularía de la siguiente manera :
'Si Tipo = 1 % 'Si tipo = 2 Valor Sub CalcularVTotal(Tipo As Integer) Dim CantP As Long Dim ValorP, ValorTotal, TotalDesc As Currency Dim PorcDes As Double CantP = txtCant_Pro.Text ValorP = txtPrecioV_Pro.Text ValorTotal = CantP * ValorP 'calcular el Descuento If Tipo = 1 Then '% PorcDes = (txtPorcDescuentoPro / 100) TotalDesc = PorcDes * ValorTotal txtDesuentoVPro.Text = TotalDesc ElseIf Tipo = 2 Then 'Valor TotalDesc = CCur(txtDesuentoVPro) PorcDes = (TotalDesc / ValorTotal) PorcDes = Round(PorcDes, 1) txtPorcDescuentoPro.Text = PorcDes Else TotalDesc = CCur(txtDesuentoVPro.Text) End If ValorTotal = ValorTotal - TotalDesc txtValorTotalPro.Text = Format(ValorTotal, "currency") End Sub
Despues que tenemos el procedimiento de calculo de Valor Total Producto llamamos esta funciones desde los controles Cantidad, Descuento Porcentaje y Descuento por Valor en sus eventos KeyUp:
Private Sub txtCant_Pro_KeyUp(KeyCode As Integer, Shift As Integer) If txtCant_Pro.Text <> "" Then Call CalcularVTotal(0) End If End Sub Private Sub txtPorcDescuentoPro_KeyUp(KeyCode As Integer, Shift As Integer) If txtPorcDescuentoPro.Text <> "" Then Call CalcularVTotal(1) End If End Sub Private Sub txtDesuentoVPro_KeyUp(KeyCode As Integer, Shift As Integer) If txtDesuentoVPro.Text <> "" Then Call CalcularVTotal(2) End If End Sub
El vídeo donde explico paso a paso:
Si tienes problemas deja tus comentario.
Apóyanos siguiendo las redes sociales:
Suscribete a Youtube
Siguenos en Twitter
Siguenos en Facebook