¿Cómo filtro registros en un formulario de access desde un Txtbox?

Mi nombre es martin y estoy haciendo una base de datos en access y necesito hacer unos filtros, pero no se como.

Tengo un formulario basado en una consulta llamado compras en el cual están todos los registros de las compras realizadas en el año y quiero filtrar por medio de unos cuadros de texto independientes por ejemplo aquellas compras realizadas en un mes determinado, y/o de un rubro determinado al hacer click en un botón.

Para ello cree un campo independiente en el formulario y un botón, en el botón escribí el siguiente código:

Private Sub Comando50_Click()
DoCmd.ApplyFilter "", "Mes = 'Form!texto48'"
End Sub

Pero al aplicar el botón en vez de aparecer los registros de un mes determinado, lo que sucede es que desaparecen todos los registros.

Alguien podría ayudarme con esto

1 respuesta

Respuesta
2

Dejando de lado que no utilizo el ApplyFilter (cada programador tiene sus manías y formas de hacer las cosas), la construcción de la condición es incorrecta. Tal como la has puesto tu simplemente te filtrará por aquellos registros dónde mes valga Form! Texto48 (literalmente) cuando tu quieres que filtre por el CONTENIDO de Form! Texto48.

Suponiendo que texto48 esté en el mismo formulario dónde se filtra y que Mes sea un numérico:

DoCmd.ApplyFilter , "Mes = " & Me!texto48

Un saludo

Xavi

http://www.mvp-access.com

http://www.llodax.com

http://www.aesoft-databases.com

Gracias Xavi, Resuelto,

Si bien no era un campo numérico, era de texto, con tu aclaración pude resolverlo.

quisiera hacerte una consulta sobre lo mismo,

Lo que necesito es tener 3 TxtBox diferentes con formato texto para filtrar a la vez por ejemplo por producto, mes y proveedor, pero si dejo uno en blanco ese filtro no lo tome, es decir que filtre por los otros 2 TxtBox.

Para que me filtre por los 3 criterios lo que hice es lo siguiente.

DoCmd.ApplyFilter , "(Producto = '" & Me.Cuadro_combinado60 & "' & Mes = '" & Me.Texto62 & "' & Proveedor = '" & Me.Texto64 & "')"

pero cuando lleno los tres TxTBox (va uno es un campo combinado) desaparecen todos los registros.

Probé hacerlo de a uno para cada TxTBox , y funciona, pero cuando pongo todos juntos desaparece todo.

y no se como hacer para que si dejo uno de los TxtBox en blanco filtre por los otros dos..

No se si me explico.

Desde ya muchas gracias

Martin

Dim strCriteria As String

strCriteria = ""

If Nz(Me!Cuadro_combinado60, "") <> "" Then

strCriteria = strCriteria & " AND Producto = '" & Me!Cuadro_combinado60 & "'"

End If

If Nz(Me!Texto62, "") <> "" Then
strCriteria = strCriteria & " AND Mes = '" & Me!Texto62 & "'"
End If

If Nz(Me!Texto64, "") <> "" Then

strCriteria = strCriteria & " AND Proveedor = '" & Me!Texto64 & "'"
End If

If Len(strCriteria) > 0 Then

strCriteria = Trim(Mid(strCriteria, 5))

DoCmd.AppluFilter , strCriteria

End If

Te dejo que investigues el porqué de esa mecánica ;-)

Xavi

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas