Corrijo para permitir el espacio haga lo siguiente:
1. A nivel del módulo del formulario defina esta variable:
Private blnSpace As Boolean
2. Su código debe quedar así:
Private Sub txtlista1_Change()
Dim alfa As String
Me.Refresh
If blnSpace = False Then
alfa = filtrando()
Me.Refresh
Me.txtlista1.SetFocus
Me.txtlista1.SelStart = Len(Me.txtlista1.Text)+1
End If
End Sub
Debe programar el evento Al presionar una tecla para anular el espacio:
Private Sub ctlbusca_KeyPress(KeyAscii As Integer)
If KeyAscii = 32 Then
blnSpace = True
Else
blnSpace = False
End If
End Sub
Para realizar búsquedas como le explican debe tener cuidado en eliminar los acentos, en caso contrario las palabras con acentos no se mostrarán, salvo que estos se digiten. Para esto utilice:
StrConv(Me. CtlBusca.Text, 2, 1042)
En donde Me. CtlBusca.Text es el campo donde va ingresando el texto a buscar.
A manera de ejemplo le muestro un formulario que utilizo para buscar y lo llamo desde varios formularios.
CODIGO DEL CAMPO "Buscar"
Private Sub ctlBusca_Change()
On Error Resume Next
Dim strSQl As String
If blnSpace = False Then
Select Case Me.OpenArgs
Case 1 'Ventas
strSQl = "SELECT tblreses.idres, tblreses.nombre,tblreses.fechanace,tblreses.numero_res,tblreses.sexo,tblreses.ides,tblreses.cargada,tblreses.escotera " & vbCrLf
strSQl = strSQl & " FROM tblreses WHERE ides=1 AND StrConv([nombre],2,1042) " & vbCrLf
strSQl = strSQl & " Like '*" & StrConv(Me.ctlBusca.Text, 2, 1042) & "*'" & " ORDER BY tblreses.nombre;"
Case 2 'Celos
strSQl = "SELECT tblreses.idres, tblreses.nombre,tblreses.fechanace,tblreses.numero_res,tblreses.sexo,tblreses.ides,tblreses.cargada,tblreses.escotera,tblreses.idcl " & vbCrLf
strSQl = strSQl & " FROM tblreses WHERE ides=1 AND (idcl=2 OR idcl=3) AND cargada=1 AND StrConv([nombre],2,1042) " & vbCrLf
strSQl = strSQl & " Like '*" & StrConv(Me.ctlBusca.Text, 2, 1042) & "*'" & " ORDER BY tblreses.nombre;"
Case 3 ' Partos
strSQl = "SELECT tblreses.idres, tblreses.nombre,tblreses.fechanace,tblreses.numero_res,tblreses.sexo,tblreses.ides,tblreses.cargada,tblreses.escotera " & vbCrLf
strSQl = strSQl & " FROM tblreses WHERE ides=1 AND cargada=2 AND StrConv([nombre],2,1042) " & vbCrLf
strSQl = strSQl & " Like '*" & StrConv(Me.ctlBusca.Text, 2, 1042) & "*'" & " ORDER BY tblreses.nombre;"
Case 4 ' Destetes
strSQl = "SELECT tblreses.idres, tblreses.nombre,tblreses.fechanace,tblreses.numero_res,tblreses.sexo,tblreses.ides,tblreses.cargada,tblreses.escotera " & vbCrLf
strSQl = strSQl & " FROM tblreses WHERE (ides=1 AND escotera=2) AND StrConv([nombre],2,1042) " & vbCrLf
strSQl = strSQl & " Like '*" & StrConv(Me.ctlBusca.Text, 2, 1042) & "*'" & " ORDER BY tblreses.nombre;"
End Select
Me.RecordSource = strSQl
ctlBusca.SetFocus
ctlBusca.SelStart = Len(Me.ctlBusca.Text) + 1
End If
End Sub
Por ejemplo si voy a buscar "COSITA PARTO 2" que tiene un espacio obtendría:
Ahora si voy a buscar las que tengan la palabra CANCIÓN o CANCION.
Obtengo:
Observe que digito las letras en minúsculas y sin acento. Siga el ejemplo y trate de adaptarlo, sino puede escríbame a [email protected] y si quiere envíeme su base de datos. Favor en el asunto anotar la pregunta.
.