Foros del Web » Programando para Internet » ASP Clásico »

problemas con busador y SQlserver7 ayuda

Estas en el tema de problemas con busador y SQlserver7 ayuda en el foro de ASP Clásico en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 30/07/2003, 16:19
Usuario baneado!
 
Fecha de Ingreso: enero-2003
Mensajes: 184
Antigüedad: 21 años, 4 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]
  #2 (permalink)  
Antiguo 30/07/2003, 16:34
Usuario baneado!
 
Fecha de Ingreso: enero-2003
Mensajes: 184
Antigüedad: 21 años, 4 meses
Puntos: 0
ya lo resolvi la gracias es decirle al recordset2 que si esta vacio por la busqueda en la base de datos ponga todos

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)

if rs2.eof then
strsql2="select * from servicio"
set rs2=oConn.Execute(strSQL2)
end if
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:51.