En esta lección vamos a trabajar el buscar producto por código y por nombre en la ventana de Ventas.
Colabora y Suscribete a mi canal de 
Para buscar por código, la idea es que al escribir el código y presionar la tecla Enter , me traiga toda la información del producto (Nombre, Precio Venta, Precio Minimo, Existencia) .
Lo primero es crear las variables a nivel de formulario y el RecordSet de producto que lo manejaremos así para no tener que estar pasandole al RecordSet la consulta sino que usaremos la propiedad Requery del RecordSet para que vuelva a actualizar la consulta anterior.
Dim IdProducto As Long Dim Precio2_Producto As Currency Dim Precio3_Producto As Currency Dim RecordSet_Producto As New ADODB.RecordSet
Ahora se crea el procedimiento que toma el código digitado en el campo Código para que busque el producto y obtener el IdProducto, este id se lo pasamos a otro procedimiento que se encarga de llenar los datos del producto en cada campo del formulario.
Sub BuscarProductoCodigo()
Dim Sql As String
Sql = "Select * From tblProductos Where CodigoPro = '" & txtCodigoPro.Text & "'"
Set RecordSet_Producto = ConexionADO.Execute(Sql)
Call DatosProducto(RecordSet_Producto("IdProducto"))
End Sub
El procedimiento siguiente se encarga de Filtrar el RecordSet por el IdProducto recibido como parámetro y llena los campos del formulario con estos datos
Sub DatosProducto(IdProducto)
RecordSet_Producto.Filter = " IdProducto = " & IdProducto
If RecordSet_Producto.RecordCount > 0 Then
With RecordSet_Producto
txtCodigoPro.Text = !CodigoPro
txtNombrePro.Text = !NombrePro
txtPrecioV_Pro.Text = !PVenta1Pro
txtPrecioMinimoPro.Text = Format(!PMinimoPro, "currency")
txtExistPro.Text = !ExistPro
Precio2_Producto = !PVenta2Pro
Precio3_Producto = !PVenta3Pro
End With
End If
End Sub
Ya tenemos el buscar por código funcional ahora se crea otro procedimiento para buscar por nombre y la idea es que a medida que escriba en el cuadro de texto nombre del producto este me muestro los producto que coincidan en un control List. Para esto hacemos la consulta usando like para que me filtre y llenamos el List con los registros obtenidos y se hace visible la lista, si no hay registros se oculta la lista.
Sub BuscarProductoNombre()
Dim Sql As String
Sql = "Select * From tblProductos Where NombrePro Like '" & txtNombrePro.Text & "%'"
Set RecordSet_Producto = ConexionADO.Execute(Sql)
If RecordSet_Producto.RecordCount > 0 Then
lstListaRapida.Clear
Do While Not RecordSet_Producto.EOF
lstListaRapida.AddItem RecordSet_Producto("NombrePro")
RecordSet_Producto.MoveNext
Loop
lstListaRapida.Visible = True
Else
lstListaRapida.Visible = False
End If
End Sub
Para llamar al procedimiento anterior usamos el evento KeyUp del campo Nombre del Producto y lo condicionamos a que después que se escriban 2 caracteres filtre según lo que hayamos escrito, de lo contrario ocultamos la lista
Private Sub txtNombrePro_KeyUp(KeyCode As Integer, Shift As Integer)
If Len(txtNombrePro.Text) > 2 Then
Call BuscarProductoNombre
Else
lstListaRapida.Visible = False
End If
End Sub
Apóyanos siguiendo las redes sociales:
Suscribete a Youtube
Siguenos en Twitter
Siguenos en Facebook

