Ver Mensaje Individual
  #2 (permalink)  
Antiguo 18/07/2005, 10:23
Avatar de Bravenap
Bravenap
 
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 6 meses
Puntos: 4
Apabullante cantidad de respuestas . Bueno, más o menos creo que lo tengo resuelto. Espero que se entienda por si le sirve a alguien. Más adelante pondré la cadena de consulta completa para que os echéis a llorar, sobre todo porque tengo que adapatar la función también para las fechas . Yo por mi parte montaré un fiesta si lo consigo. Un saludo.

Código:
    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
        Dim operador As New ArrayList
        Dim i As Integer
        For i = 0 To cadena.Length - 1
            If cadena.Chars(i) = "|" Or cadena.Chars(i) = "&" Or cadena.Chars(i) = "¬" Then
                operador.Add(cadena.Chars(i))
            End If
        Next
        If operador.Count > 0 Then
            Dim operadores() As Char = {"|", "&", "¬"}
            Dim arrCadena() As String = cadena.Split(operadores)
            cadena = campo & "'*" & Trim(arrCadena.GetValue(0)) & "*'" & operador(0)
            For i = 1 To operador.Count - 1
                cadena += campo & "'*" & Trim(arrCadena.GetValue(i)) & "*'" & operador(i)
            Next
            cadena += campo & "'*" & Trim(arrCadena.GetValue(arrCadena.Length - 1)) & "*'"
        Else
            cadena = campo & "'*" & cadena.Trim & "*'"
        End If
        cadena = cadena.Replace("¬", " AND NOT ")
        cadena = cadena.Replace("|", " OR ")
        cadena = cadena.Replace("&", " AND ")
        Return cadena

    End Function
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!