Ver Mensaje Individual
  #3 (permalink)  
Antiguo 18/07/2005, 12:15
Avatar de RootK
RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 23 años, 1 mes
Puntos: 50
Hola Bravenap, creo que te podrías ahorra código y objetos utilizando otra lógica... ademas de que nmo es necesaria usar un objeto de tipo Regex..(tambien te ahorrarias el método preparaCadena )

Podría quedarte mas o menos así tu funcion...(es solo una idea..)
Cita:
Private Function PrepareQuery(ByVal sText As String, ByVal sTableName As String) As String
Dim arrCriteries() As String = {".O", ".Y", ".NO"}
Dim arrReplacements() As String = {"OR", "AND", "NOT"}
Dim myString As String = sText.Trim 'quito los espacios si hay
Dim i As Int16 = 0
Dim iTam As Int16 = arrCriteries.Length

For i = 0 To iTam - 1
myString = myString.Replace(arrCriteries(i), arrReplacements(i))
Next

Dim myStringTemp As String = String.Empty
Dim b As Boolean = True 'verifico que sea una cadena y no un criterio
For Each sTemp As String In myString.Split(New Char() {" "})
For ix As Int16 = 0 To iTam - 1
If sTemp = arrReplacements(ix) Then b = False
Next
If b Then
myStringTemp &= " " & sTableName & " LIKE '*" & sTemp & "*' "
Else
myStringTemp &= " " & sTemp 'concateno el criterio
End If

b = True
Next

myStringTemp = "SELECT * FROM tabla WHERE ( " & myStringTemp & " )"

Return myStringTemp

End Function

Y ya la mandas a llamar por ejemplo:

Cita:
MessageBox.Show(PrepareQuery(TextBox1.Text, "Nombre"))

Y en tus arrays puedes guardar la cantidad que desees de criterios y colocar su equivalente para hacer el barrido al mismo tiempo..

Espero que te sirva.

Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net