¿Quién conoce cómo puedo en un formulario filtrar hasta 3 criterios?

Está noche deseo conocer cómo puedo realizar varios filtros tomando presente 3 cuadros combinados; el primero de ellos tiene categoría, el segundo tiene línea bueno con estos dos trabajando en una tabla cuyo nombre es Productos. Los campos se llaman categoría y línea. Ambos campos son tipo dato texto corto. Cómo puedo a través de la consulta de selección qry_cs_inventariio dar el criterio de estos campos con código vba.

Yo comúnmente lo hago con SQL trabajo con la concatenación pero solo lo he realizado con 1 criterio pero no lo he generado con 2.

Por ejemplo en Excel cuando se usa el filtro pues ejemplo tomo categoría Acoples, y se ven todos los acoples pero cuando le digo mitsubishi entonces si en el primer filtro arroja 20 resultados, en el segundo ya reduce a la mitad. Bueno esto es en el excel pero cómo hacerlo en Access y con código vba y en un formulario.

Mil gracias. Por la ayuda que me puedan suministrar.

2 respuestas

Respuesta
2

Sandra, como este tema ya salió hasta la saciedad en los foros de Access, hace un tiempo que mi compañero Neckkito colgó en su web un ejemplo para construir filtros múltiples, y a él te remito: http://neckkito.xyz/nck/index.php/ejemplos/13-formularios/77-crear-un-filtro-multiple

El filtro del ejemplo es un poco "más complejo" que lo que entiendo que buscas, porque te permite filtrar por uno o más campos, pero tal y como está explicado, te sirve perfectamente para tu caso.

Y como te dice jorge con su ejemplo, para encadenar criterios a un filtro (hasta 99) solo has de encadenarlos con los operadores "And" u "Or" según quieras que los criterios sean acumulativos o no.

Un saludo.


Respuesta
1

Por falta de tiempo solo te daré una idea de la consulta.

SELECT ... FROM Productos

WHERE Productos.Categoria = 'Nombre de la categoría' AND Productos.Linea = 'Nombre de la linea'

Esta programación debe colocarse en el evento de un botón o en un evento de cada cuadro para que se vaya ejecutando el filtro.

Nota: las variables de texto deben encerrarse entre comillas o apóstrofes " " : ' '

Las variables numéricas no llevan comillas.

Buenas Jorge. Mira estoy usando este código para este formulario te dejo aquí posteado ello.

Me esta dando pero de un 100% solo un 80% porque bueno cuando trabajo el cuadro combinado, quiero que también este funcione.

Pero en mi instrucción SQL a través del nombre strSQL el final lo quiero dejar con la instrucción ORDER BY pero me sale que falta algo al cierre. Lo quite, pero me gustaría tenerlo, porque pienso que eso arregla lo del cuadro combinado.

En el ORDER BY pues quiero CATEGORÍA y LÍNEA

Te dejo la lista de código que usé y muchas gracias por tu valiosa ayuda.

Option Compare Database
Sub elige_consulta()
Dim strSQL As String
strSQL = "SELECT Productos.CodFinProd, Productos.Codigo_Prod, "
strSQL = strSQL & "Productos.Descrpcion_Prod, Productos.TIPO, Productos.CATEGORIA, "
strSQL = strSQL & "Productos.LINEA, Productos.STOCK, Productos.PRECIO "
strSQL = strSQL & "FROM Productos "
strSQL = strSQL & "WHERE Productos.CATEGORIA = '" & Me.Lista3 & "'"
Me.SbfFmQry_Cs_Inventario.Form.RecordSource = strSQL
Me.SbfFmQry_Cs_Inventario.Form.Requery
Me.SbfFmQry_Cs_Inventario.Visible = True
Me.Cuadro_combinado5 = Null
End Sub

Private Sub Form_Load()
LN1.Caption = tituloEF()
End Sub

Private Sub Comando9_Click()
Me.SbfFmQry_Cs_Inventario.Visible = False
DoCmd.Requery "SbfFmQry_Cs_Inventario"
DoCmd.Requery "Lista3"
Me.Lista3.SetFocus
End Sub


Private Sub Comando10_Click()
Me.Cuadro_combinado5 = Null
Me.SbfFmQry_Cs_Inventario.Form.FilterOn = False
Me.Refresh
End Sub

Private Sub Cuadro_combinado5_AfterUpdate()
Dim strFiltro As String
strFiltro = Me.Cuadro_combinado5
Me.SbfFmQry_Cs_Inventario.Form.Filter = strFiltro
Me.SbfFmQry_Cs_Inventario.Form.FilterOn = True
Me.Refresh
Dim miRS As Recordset
Set miRS = Me.SbfFmQry_Cs_Inventario.Form.RecordsetClone
If miRS.RecordCount = O Then
MsgBox "No hubo registros", vbInformation, tituloVt()
Else
MsgBox "hay " & miRS.RecordCount & " registros", vbInformation, tituloVt()
End If
miRS.Clone
Set miRS = Nothing
End Sub

Private Sub Lista3_Click()
Call elige_consulta
End Sub

Finalmente si deseas puedes pasarme por favor tu correo, y te puedo pasar la base de datos para que te orientes mejor. Yo sé que es algo pequeño que me falta. Mira es la primera vez que esto lo hago. Pero bueno aquí estamos para aprender y también para aportar. Mil gracias amigo.

No he analizado mucho el código sin embargo encuentro estos posibles errores:

1.

strSQL = strSQL & "Productos.Descrpcion_Prod, Productos.TIPO, Productos.CATEGORIA, "

P/ será Descripcion y no Descrpcion

2.

If miRS.RecordCount = O Then

P/ = O es cero o la letra o mayúscula¿O? Oes: OO ceros: 00 podes notar la diferencia en lo gordito.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas