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

otra vez el select

Estas en el tema de otra vez el select en el foro de ASP Clásico en Foros del Web. esta si que no la se: si tengo en un buscador ... WHERE "&por&" LIKE '%"&vector(0)&"%'" y quiero que me muestre las palabras que se ...
  #1 (permalink)  
Antiguo 03/03/2003, 10:08
 
Fecha de Ingreso: diciembre-2002
Ubicación: argentina... de ahí seran veinte cuadras
Mensajes: 382
Antigüedad: 21 años, 5 meses
Puntos: 0
otra vez el select

esta si que no la se:

si tengo en un buscador
... WHERE "&por&" LIKE '%"&vector(0)&"%'"

y quiero que me muestre las palabras que se inician ej: solo con "ca", que debo poner en el formulario de consulta?.

se que es con
ca%
pero me muestra todas las aparicones ca sin importar en donde esten dentro de la cadena, me muestra ej: vaca tambien

saludos
__________________
Juan Pablo
  #2 (permalink)  
Antiguo 03/03/2003, 10:53
Avatar de urjose  
Fecha de Ingreso: diciembre-2001
Mensajes: 5.286
Antigüedad: 22 años, 5 meses
Puntos: 1
Tendría que funcionar asi

... WHERE "&por&" LIKE '"&vector(0)&"%'"
  #3 (permalink)  
Antiguo 03/03/2003, 11:22
 
Fecha de Ingreso: diciembre-2002
Ubicación: argentina... de ahí seran veinte cuadras
Mensajes: 382
Antigüedad: 21 años, 5 meses
Puntos: 0
gracias urjose....ahora si!!!

lo que pasa ahora es que me muestra solo los campos cuya primer palabra aparezca con el criterio.

ej: tengo dos autores:

cacho gomes y gonzalo cacho

enviando ca% me muestra cacho gomes, pero gonzalez cacho no aparece.

sí aparece si envío %ca%

Siendo que quiero facilitar el envío al usuario, que me recomendas?

lo ideal sería que en el select le ponga los dos %, cosa de que el que busque cacho, encuentre los dos, ya sea nombre o apellido, pero como anulo el primer % si quiero buscar palabras que solo se inicien con ej. ca.

me explico?


saludos
__________________
Juan Pablo
  #4 (permalink)  
Antiguo 03/03/2003, 12:19
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Cita:
pero como anulo el primer % si quiero buscar palabras que solo se inicien con ej. ca.
agregás un select con las dos opciones: "buscar en todas partes" y "buscar sólo al principio". Lo llamás "donde". Luego:



Donde = Request.Form("donde")
SQL = "... WHERE "&por&" LIKE '"
If Donde = "buscar en todas partes" then
SQL = SQL & "%"
End if
SQL = SQL & vector(0)&"%'"
  #5 (permalink)  
Antiguo 03/03/2003, 12:34
 
Fecha de Ingreso: diciembre-2002
Ubicación: argentina... de ahí seran veinte cuadras
Mensajes: 382
Antigüedad: 21 años, 5 meses
Puntos: 0
ASÍ LO ESTOY HACIENDO AHORA, PERO INTENTO DARLE EL MENOR LABURO POSIBLE AL USER, COMO NO VEO OTRA SALIDA ESTOY HACIENDO ALGO PARECIDO A LO QUE ME PROPONES DAZUAGA.

LO QUE ESTABA BUSCANDO ES POR EJEMPLO, VISTE QUE HAY VECES QUE TE ROMPES LA CABEZA PORQUE NO TE ENCUENTRA LO QUE BUSCAS Y ES PORQUE, QUE SE YO, PUSISTE UN < Y TE OLVIDASTE DE CERRARLO Y TE TOMA EL > DE OTRA LÍNEA Y LO TOMA COMO VÁLIDO IGUAL, PERO NO ES LO QUE SE ESPERA, UNA ESPECIE DE RUPTURA DE CÓDIGO.

PENSABA QUE POR EJ SE PRODRÍA "CONFUNDIR" AL SQL HACIENDOLE "NO DARSE CUENTA" DEL PRIMER &.

ES MUY LOCO LO QUE DIGO?
__________________
Juan Pablo
  #6 (permalink)  
Antiguo 03/03/2003, 14:05
 
Fecha de Ingreso: diciembre-2002
Ubicación: argentina... de ahí seran veinte cuadras
Mensajes: 382
Antigüedad: 21 años, 5 meses
Puntos: 0
Al menos si pueden contestenme esto, que es lo mismo que pregunte anteriormente:

si tengo dos palabras dentro de un campo de la bd y quiero que me muestre las palabras que comiencen con ej: ca

como hago para que me muestre cardoso, en un campo que contenga juan cardoso?

tengo:
strsql = "select * FROM publicaciones WHERE autor LIKE '"&vector(0)&"%' OR titulo LIKE '"&vector(0)&"%'...

pero me muestra solo la primer palabra que comienza con ca

osea, me muestra cardoso juan, pero no juan cardoso

que hago????
__________________
Juan Pablo
  #7 (permalink)  
Antiguo 03/03/2003, 16:10
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
a ver... si no te entiendo mal, lo que pretendés es que te muestre las palabras que comiencen por el criterio (ya sea ésta la primer palabra o una intermedia) pero nunca las palabras en dónde el criterio caiga completamente dentro de ella?
(o sea.. si se busca ca que encuentre "juan cardoso", "cardoso juan" y no "scalabrini ortiz"??)

Si es así, es fácikl.. Veamos.. una palabra tiene un espacio adelante (si es intermedia en la cadena) o no (si es la primer palabra). Entonces generás dinámicamente "un campo nuevo" que sea una concatenación de un espacio más el contenido del campo y luego buscás en dicho campo las cadenas coincidentes con "cualquier cosa - espacio - criterio - cualquier cosa"


Sería algo así, aunque no comprobé demasiado bien la sintaxis:

strsql = "select * FROM publicaciones WHERE (((' ' & [publicaciones]![autor]) Like '% '"&vector(0)&"%))..."




Editando:
Funciona bien, al menos desde una consulta dentro del Access

Última edición por AlZuwaga; 03/03/2003 a las 16:12
  #8 (permalink)  
Antiguo 04/03/2003, 07:35
 
Fecha de Ingreso: diciembre-2002
Ubicación: argentina... de ahí seran veinte cuadras
Mensajes: 382
Antigüedad: 21 años, 5 meses
Puntos: 0
gracias dazuaga, pero me tira el sig error

Microsoft JET Database Engine error '80040e14'

Error de sintaxis (falta operador) en la expresión de consulta '(((' ' &[publicaciones]![AUTOR]) Like '% 'ca%))'.


esto es lo que me da haciendole un write al sql

select * FROM publicaciones WHERE (((' ' &[publicaciones]![AUTOR]) Like '% 'ca%))

el error me lo tira en la línea

SET objRS=objConn.Execute(strsql)


que puede estar pasando..

gracias
__________________
Juan Pablo
  #9 (permalink)  
Antiguo 04/03/2003, 09:52
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Te dije que no había chequeado bien la sintaxis

Ahora si debería funcionar:

strsql = "select * FROM publicaciones WHERE (((' ' & [publicaciones]![autor]) Like '% "&vector(0)&"%'))"
  #10 (permalink)  
Antiguo 04/03/2003, 10:23
 
Fecha de Ingreso: diciembre-2002
Ubicación: argentina... de ahí seran veinte cuadras
Mensajes: 382
Antigüedad: 21 años, 5 meses
Puntos: 0
GENIO CAPO GENIO

AHORA SI VA...

SABÉS DE ALGUNA DOCUMENTACIÓN PARA QUE PUEDA ENTENDER LO QUE HICE?

APARTE DE QUE TENGO PROBLEMAS PARA ENCONTRAR PALABRAS COMPLETAS DENTRO DE UNA CADENA, EJ: ENCONTRAR RIO, DENTRO DE UN CAMPO QUE TENGA COMO CONTENIDO "EL RIO CORRE..."
SIN QUE ME ARROJE LOS RESULTADOS PARCIALES, PERO CALCULO QUE SERÁ ALGO PARECIDO A LO ANTERIOR.
SI TENÉS ALGUN LINK, TE LO VOY A AGRADECER MUCHO MAS, YA QUE EN LAS FAQS NO ENCUENTRO NADA, NI EN POSTS SIMILARES...

MUCHAS GRACIAS VIEJO!!!!

SALUDOS.
__________________
Juan Pablo
  #11 (permalink)  
Antiguo 04/03/2003, 10:52
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
no me subas el ego que me hace mal

Si tengo documentación?... Nop
Todo prueba y error, y error, y más pruebas y error hasta que, al final, sale

Igual te digo que, para consultas más complejas que un simple SELECT * FROM Tabla, suelo abrir la BD con el MSAccess y crear una consulta desde ahí. Luego copio el SQL que generó y lo modifico para usarlo en un ASP... es más... visual

Con respecto a lo de 'RIO', con modificar esto:
'% "&vector(0)&"%'

... por esto:
'% "&vector(0)&" %'

... debería funcionar (prestá atención a los espacios que hay antes y después de los caracteres comodines '%')

saludos
  #12 (permalink)  
Antiguo 04/03/2003, 11:26
 
Fecha de Ingreso: diciembre-2002
Ubicación: argentina... de ahí seran veinte cuadras
Mensajes: 382
Antigüedad: 21 años, 5 meses
Puntos: 0
PERFECTO!!!!
PERO OCURRE ALGO RARO, ENCUENTRA TODAS LAS APARICIONES COMPLETAS EN TODOS LOS CAMPOS, EXEPTO EN UNO, EN EL CUAL ME ENCUENTRA SOLO UNA, HABIENDO DOS.

REVISÉ TODOS LOS % SOBRE TODOS LOS ASIGNADOS AL CAMPO AUTOR ( EL QUE NO ENCUENTRA MAS DE UNO) Y ESTA BIEN.
¿ QUE PUEDE SER, ALGO CON LA BD?


Y NO TE HAGAS EL HUMILDE, SOS UN CAPO DE VERDAD.

SALUDOS
__________________
Juan Pablo
  #13 (permalink)  
Antiguo 04/03/2003, 11:39
 
Fecha de Ingreso: diciembre-2002
Ubicación: argentina... de ahí seran veinte cuadras
Mensajes: 382
Antigüedad: 21 años, 5 meses
Puntos: 0
SE QUE ES MUCHO PEDIR...

PERO EN DONDE VES EN ACCESS LA SENTENCIA SQL QUE TE GENERA?
__________________
Juan Pablo
  #14 (permalink)  
Antiguo 04/03/2003, 12:49
 
Fecha de Ingreso: diciembre-2002
Ubicación: argentina... de ahí seran veinte cuadras
Mensajes: 382
Antigüedad: 21 años, 5 meses
Puntos: 0
Cita:
PERO OCURRE ALGO RARO, ENCUENTRA TODAS LAS APARICIONES COMPLETAS EN TODOS LOS CAMPOS, EXEPTO EN UNO, EN EL CUAL ME ENCUENTRA SOLO UNA, HABIENDO DOS.
no encuentra solo una, sino que no encuentra las palabras que esten en un lugar <> del inicio de la cadena.

si busco en autores: cacho, encuentra cacho juan, pero no juan cacho.
pero si busco el titulo: la, encuentra vida y obra de la ...
lo raro es que tengo el mismo sql para buscar en los distintos campos, y en el campo autor tengo ese problema, pero en los demás no

hice un nuevo campo autor, y borré el anterior, pero sigue igual
agregé nuevos cacho: assss cacho, jose cacho, por si estaba mal escrito, pero tampoco.

siempre faltan 5 pal peso!!!!
__________________
Juan Pablo
  #15 (permalink)  
Antiguo 04/03/2003, 13:20
 
Fecha de Ingreso: diciembre-2002
Ubicación: argentina... de ahí seran veinte cuadras
Mensajes: 382
Antigüedad: 21 años, 5 meses
Puntos: 0
sorry por hacer esto de mandar todo el código...
pero no encuentro el error, supongo que debo tener algun error en el vector, pero no lo encuentro...

El write i que hice para comprobar el vector no me imprime nada.

HELP ME PLEASE

if ubound(vector) > 0 THEN

strsql = "select * FROM publicaciones WHERE (((' ' &[publicaciones]!["&por&"]) Like '% "&vector(0)&" %'))"
FOR i = 1 to ubound(vector)

strsql = strsql & " OR (((' ' &[publicaciones]!["&por&"]) Like '% "&vector(i)&" %'))"
response.write i
NEXT



ELSE

strsql = "select * FROM publicaciones WHERE (((' ' &[publicaciones]!["&por&"]) Like '% "&vector(0)&" %'))"
response.write i
END IF


ELSE

' se busca en todos los campos
if ubound(vector) > 0 then

strsql = "select * FROM publicaciones WHERE (((' ' &[publicaciones]![AUTOR]) Like '% "&vector(0)&" %')) OR (((' ' &[publicaciones]![TITULO]) Like '% "&vector(0)&" %')) OR (((' ' &[publicaciones]![PUBLICACION]) Like '% "&vector(0)&" %')) OR (((' ' &[publicaciones]![FUENTE]) Like '% "&vector(0)&" %')) OR (((' ' &[publicaciones]![AUTOR]) Like '% "&vector(1)&" %')) OR (((' ' &[publicaciones]![TITULO]) Like '% "&vector(1)&" %')) OR (((' ' &[publicaciones]![PUBLICACION]) Like '% "&vector(1)&" %')) OR (((' ' &[publicaciones]![FUENTE]) Like '% "&vector(1)&" %'))"
for i =1 to ubound(vector)

strsql = strsql & " OR (((' ' &[publicaciones]![AUTOR]) Like '% "&vector(i)&" %')) OR (((' ' &[publicaciones]![TITULO]) Like '% "&vector(i)&" %')) OR (((' ' &[publicaciones]![PUBLICACION]) Like '% "&vector(i)&" %')) OR (((' ' &[publicaciones]![FUENTE]) Like '% "&vector(i)&" %')) "

response.write i
next

else

strsql = "select * FROM publicaciones WHERE (((' ' &[publicaciones]![AUTOR]) Like '% "&vector(0)&" %')) OR (((' ' &[publicaciones]![TITULO]) Like '% "&vector(0)&" %')) OR (((' ' &[publicaciones]![PUBLICACION]) Like '% "&vector(0)&" %')) OR (((' ' &[publicaciones]![FUENTE]) Like '% "&vector(0)&" %'))"


GRACIAS DE ANTEMANO!!!
__________________
Juan Pablo
  #16 (permalink)  
Antiguo 05/03/2003, 08:36
Avatar de DanielRey
Usuario no validado
 
Fecha de Ingreso: enero-2001
Ubicación: Mendoza
Mensajes: 630
Antigüedad: 23 años, 4 meses
Puntos: 1
Tarlipes:

like '" & variable & "%' or like '% " & variable & "%'

Nótese que luego del segundo LIKE hay un signo porcentaje, un espacio y luego la variable.

Esto hará que:
"CARDOSO JUAN" concuerde con el primer LIKE
"JUAN CARDOSO " concuerde con el segundo (gracias al espacio)
y
"ABRACADABRA" no concuerde con ninguno de los dos like's.

Suerte
  #17 (permalink)  
Antiguo 05/03/2003, 09:03
 
Fecha de Ingreso: diciembre-2002
Ubicación: argentina... de ahí seran veinte cuadras
Mensajes: 382
Antigüedad: 21 años, 5 meses
Puntos: 0
gracias Daniel, pero la intención mia es que muestre solo palabras completas, es por eso que hay dos espacios, lo cual funciona perfecto, el tema es que no me mustra todos los campos que hay.

ej.

esta es la base de datos

AUTOR TITULO PUBLICACION
cacho gomez la banana Platanos
gomes cacho el tren via
jose perez un cacho de... el dia
roberto carlos el gato la vida del gato cacho
amado nervo el cacho limones

el resultado de la busqueda me muestra algunos de los records en donde aparece cacho, pero no todos y en la base estan.

el tema de encontrar la palabra completa, funciona barbaro, el único problema es que me deja datos a fuera del resultado.


si notan algo mal, por favor avisenme.

saludos
__________________
Juan Pablo
  #18 (permalink)  
Antiguo 05/03/2003, 10:57
 
Fecha de Ingreso: diciembre-2002
Ubicación: argentina... de ahí seran veinte cuadras
Mensajes: 382
Antigüedad: 21 años, 5 meses
Puntos: 0
EURECA!!!..

El problema está en que % variable %, no reconoce como espacio a lo que sigue a la última palabra de la cadena en el campo, por lo cual si buscamos cacho encuentra ( )cacho( )juan pero no juan( )cacho

ahora, como lo soluciono? pensé en hacer un or y cambiar el espacio por un punto y una coma, pero que pasa si el que completa la base de datos no pone ni punto ni coma?.

que puedo hacer, ahora que se lo que es puede que resulte mas fácil que me den una manito.



gracias de antemano
__________________
Juan Pablo
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 22:55.