El usuario escribe en el campo "Nombre" lo siguiente
Cita:
Con lo que la consulta quedaría:MANOLO .O JOSÉ .Y .NO PEPE
Cita:
De momento tengo este código:SELECT *
FROM tabla
WHERE
(
tabla.Nombre LIKE '*MANOLO*' OR
tabla.Nombre LIKE '*JOSÉ*' AND NOT
tabla.Nombre LIKE '*PEPE*'
)
FROM tabla
WHERE
(
tabla.Nombre LIKE '*MANOLO*' OR
tabla.Nombre LIKE '*JOSÉ*' AND NOT
tabla.Nombre LIKE '*PEPE*'
)
Código:
Lo que está en verde es lo que me tiene bloqueado. Alguna ayuda.Dim nombre As String = preparaCriterio(preparaCadena(Me.txtNombre.Text),"Nombre") ..... Private Function preparaCadena(ByVal cadena As String) As String Dim regExp As System.Text.RegularExpressions.Regex cadena = cadena.Trim cadena = cadena.ToUpper Do While cadena.IndexOf(" ") <> -1 cadena = cadena.Replace(" ", " ") Loop cadena = cadena.Replace(".O", "|") cadena = cadena.Replace(".Y", "&") cadena = cadena.Replace(".Y .NO", "¬") cadena = regExp.Replace(cadena, "[AÁ]", "[AÁ]") cadena = regExp.Replace(cadena, "[EÉ]", "[EÉ]") cadena = regExp.Replace(cadena, "[IÍ]", "[IÍ]") cadena = regExp.Replace(cadena, "[OÓ]", "[OÓ]") cadena = regExp.Replace(cadena, "[UÚ]", "[UÚ]") Return cadena End Function Private Function preparaCriterio(ByVal cadena As String, ByVal campo As String) As String campo += " LIKE " If cadena.StartsWith("|") Or cadena.StartsWith("&") Or cadena.StartsWith("¬") Then cadena = cadena.Substring(1) End If '******************** 'SIN HACER: 'Aquí hay que separar cada palabra o conjunto de palabras 'por los operadores '******************** cadena = cadena.Replace("¬", " AND NOT " & campo) cadena = cadena.Replace("|", " OR " & campo) cadena = cadena.Replace("&", " AND " & campo) Return cadena End Function
Gracias y un saludo.