Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/07/2003, 16:19
carlostapi
Usuario baneado!
 
Fecha de Ingreso: enero-2003
Mensajes: 184
Antigüedad: 22 años, 3 meses
Puntos: 0
problemas con busador y SQlserver7 ayuda

Holas miren tengo este ejemplo de buscador que saque de aqui, anda muy pero my bien es lejos el mejor buscador que e tenido, el problema es que cuando pongo algo que no esta en la base de datos se cae por ejemplo un numero y como la base no tiene nuemeros se cae y da error,,osea lo que pasa que la funcion


function GeneraSql(cadena,tabla,campos)

si ven el ELSE, no discrimina, por que la consulta venga vacia sino simplemente que discrimina si no trae nada, pero el problema que al poner un numero ya tiene algo la consulta y no discrimina y da error

pongo el codigo ahora a ver si alguien me puede ayudar porfavorrr
************************************************** *************************
set oConn=server.createObject("adodb.connection")
oConn.open "DSN=ServiceCollege; uid=sa; "
rs=server.createObject("adodb.recordset")
rs2=server.createObject("adodb.recordset")
strSQL="select * from clasifica_servicio order by clas_ser"

palabra2=LCase(request.form("palabra"))
anti=ltrim(palabra2)'saca los espacios
MiPalabra=rtrim(anti)'saca los espacios

cadenax=sinAcentos(MiPalabra)
anti2=cadenax

cadena=anti2

'************************************************* *************

Function sinAcentos(Str)
Dim CurLtr
For x = 1 To Len(Str)
CurLtr = Mid(Str, x, 1)
Select Case CurLtr
Case "a", "à", "á"
sinAcentos = sinAcentos & "[aàá]"
Case "e", "é", "è"
sinAcentos = sinAcentos & "[eéè]"
Case "i", "ì", "í"
sinAcentos = sinAcentos & "[iìí]"
Case "o", "ò", "ó"
sinAcentos = sinAcentos & "[oòó]"
Case "u", "ù", "ú"
sinAcentos = sinAcentos & "[uùú]"
Case "n", "ñ", "Ñ"
sinAcentos = sinAcentos & "[nñÑ]"
Case Else
sinAcentos = sinAcentos & CurLtr
End Select
Next
End Function

'************************************************* **********

function Sacar(cadena,campos)
dim i
dim SacarAux
while InStr(cadena," ")
Cadena=Replace(Cadena," "," ")
wend
if len(cadena)>0 then
if InStr(cadena," ")>0 then
Sacar= Sacar(left(cadena,InStr(cadena," ")-1),campos) & " OR " & Sacar(right(cadena,len(cadena)-InStr(cadena," ")),campos)
elseif InStr(cadena,"+")>0 then
Sacar=Sacar(left(cadena,InStr(cadena,"+")-1),campos) & " AND "& Sacar(right(cadena,len(cadena)-InStr(cadena,"+")),campos)
elseif InStr(cadena,"-")>0 then
Sacar=Sacar(left(cadena,InStr(cadena,"-")-1),campos) & " AND NOT " & Sacar(right(cadena,len(cadena)-InStr(cadena,"-")),campos)
else
'fijamos la sentencia
SacarAux=""
i=1
SacarAux= "( " & campos(i) & " Like '%" & cadena & "%'"
i=i+1
while len(campos(i))>0
SacarAux= SacarAux & " OR " & campos(i) & " Like '%" & cadena & "%'"
i=i+1
wend
SacarAux=SacarAux & " )"
Sacar=SacarAux
end if
else
sacar=""
end if
end function


function GeneraSql(cadena,tabla,campos)
if len(cadena)>0 then '
generaSql="Select * from " & tabla & " Where " & Sacar(cadena,campos)
else
Response.Write "No hay criterios"
end if
end function

dim campos(3) 'el tamano del array debe superar en uno al numero de campos
campos(1)="nom_ser"
campos(2)="clave_ser"

tabla="servicio" ' le entrego valor servicio o tabla a busar
resultado=GeneraSql(cadena,tabla,campos)
strSQL2=resultado

'************************************************* ***********
'***********************************************

set rs=oConn.Execute(strSQL)
set rs2=oConn.Execute(strSQL2)


si alguien me puede ayudar porfavor enviar algo a
[email protected]