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

