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