Filtrar registros.
Tengo un formulario en el cual puedo introducir cuatro palabras que luego utilizo como criterio de búsqueda para filtrar los registros que contengan alguna de esas palabras en el campo Descripción. El código se dispara al hacer clic a un botón. En general funciona bien pero, he comprobado que si ingroduzco la palabra GALICIA, me saca todos los registros en que esa palabra aparece en el campo DESCRIPCIÓN... Hasta aquí, todo bien. Pero resulta que también me saca una serie de registros que contienen la palabra GALLEGAS lo cual, en principio, no es correcto. Te adjunto el código para que le eches un vistazo y me digas qué hago mal. ¿Tal vez sería mejor utilizar una SQL en lugar de un filtro?
'=================================
Dim ClaveBusca As String
'-- Montamos el criterio de búsqueda
ClaveBusca = "[Descripcion] Like " & Chr$(34) & "*" & Me.txtPalabra1 & "*" & Chr$(34)
If Not IsNull(Me!txtPalabra2) Then
ClaveBusca = ClaveBusca & " " & Me!ANDOR & " [Descripcion] Like " & Chr$(34) & "*" & Me.txtPalabra2 & "*" & Chr$(34)
End If
If Not IsNull(Me!txtPalabra3) Then
ClaveBusca = ClaveBusca & " " & Me!ANDOR & " [Descripcion] Like " & Chr$(34) & "*" & Me.txtPalabra3 & "*" & Chr$(34)
End If
If Not IsNull(Me!txtPalabra4) Then
ClaveBusca = ClaveBusca & " " & Me!ANDOR & " [Descripcion] Like " & Chr$(34) & "*" & Me.txtPalabra4 & "*" & Chr$(34)
End If
'=================================
Me.Visible = False
'-- Filtramos los registros
DoCmd.ApplyFilter , ClaveBusca
Me.txtResultado = ClaveBusca
Me.Visible = True
Me!cmdStop.SetFocus
' Me!cmdFiltra.Visible = False
' DoCmd.Close
==========================
'=================================
Dim ClaveBusca As String
'-- Montamos el criterio de búsqueda
ClaveBusca = "[Descripcion] Like " & Chr$(34) & "*" & Me.txtPalabra1 & "*" & Chr$(34)
If Not IsNull(Me!txtPalabra2) Then
ClaveBusca = ClaveBusca & " " & Me!ANDOR & " [Descripcion] Like " & Chr$(34) & "*" & Me.txtPalabra2 & "*" & Chr$(34)
End If
If Not IsNull(Me!txtPalabra3) Then
ClaveBusca = ClaveBusca & " " & Me!ANDOR & " [Descripcion] Like " & Chr$(34) & "*" & Me.txtPalabra3 & "*" & Chr$(34)
End If
If Not IsNull(Me!txtPalabra4) Then
ClaveBusca = ClaveBusca & " " & Me!ANDOR & " [Descripcion] Like " & Chr$(34) & "*" & Me.txtPalabra4 & "*" & Chr$(34)
End If
'=================================
Me.Visible = False
'-- Filtramos los registros
DoCmd.ApplyFilter , ClaveBusca
Me.txtResultado = ClaveBusca
Me.Visible = True
Me!cmdStop.SetFocus
' Me!cmdFiltra.Visible = False
' DoCmd.Close
==========================
1 respuesta
Respuesta de raulmoscardo
1