Búsquedas que provocan error

15/01/2005 - 13:29 por Juan M Afan de Ribera | Informe spam
Hola a todos,

Estoy probando una consulta para hacer búsquedas con una base de datos
Access. Esta consulta tiene un parámetro de búsqueda, por el que se busca en
varios campos. Si configuro el parámetro dentro de la sentencia SQL de esta
forma (y resumiendo mucho la consulta):

SELECT MiCampo
FROM MiTabla
WHERE MiCampo Like '%' & [param] & '%'

y después, a través de una página ASP que recoge ese parámetro de búsqueda,
escribo "[" (sin comillas), me aparece el siguiente error:

"
Información técnica (para personal de soporte técnico)
Tipo de error:
Microsoft JET Database Engine (0x80040E14)
Cadena modelo no válida
...
...

Datos de POST:
txtBuscar=%5B
"

En cambio, si en la consulta configuro el parámetro de esta otra forma:

SELECT MiCampo
FROM MiTabla
WHERE InStr(MiCampo, [param]) > 0

el introducir el mismo carácter "[" funciona sin más problemas

¿A qué se debe esta anomalía? Prefiero utilizar Like siempre que puedo en
vez de una función, pues es bastante más rápido.

Muchas gracias.



Saludos,
Juan M Afan de Ribera
[MVP Access]
http://www.accessvbafaq.mvp-access.com
http://www.mvp-access.com/juanmafan
 

Leer las respuestas

#1 Juan M Afan de Ribera
15/01/2005 - 17:19 | Informe spam
Hola Valdov y gracias por contestar.

No se si te entiendo bien. A ver... Tengo una página buscar (en realidad es
la página "Buscar" en la primera web de mi firma) con un solo campo
(txtBuscar) para captar el texto de busqueda. Una vez lo recojo, lo paso a
una función que se encarga de construir la cadena SQL y demás cosas. Viene a
ser algo así:

Dim ResultadosBusqueda

ResultadosBusqueda =
FuncionResultadosBusqueda(Request.Form("txtBuscar"))

y en esa función:

FuncionResultadosBusqueda(TextoABuscar)
Dim SQL

TextoABuscar= "'%" & TextoABuscar & "%'"

SQL = "SELECT MiCampo FROM MiTabla WHERE MiCampo Like " & TextoABuscar

etc...

¿se corresponde esto con lo que me comentabas?

lo de pasarlo por el Url ya se me escapa, no se a qué te refieres.

Muchas gracias.

Saludos,
Juan M Afan de Ribera
[MVP Access]
http://www.accessvbafaq.mvp-access.com
http://www.mvp-access.com/juanmafan


"Valdov" escribió en el mensaje
news:u5OaEfx%
En Asp deberia quedar algo como:

SELECT MiCampo FROM MiTabla WHERE MiCampo Like '%" & variable & "%'"

o bien, si el parametro lo capturas en una pantalla antes en una caja de
texto de un form:

SELECT MiCampo FROM MiTabla WHERE MiCampo Like '%" &
request.form("param")
& "%'"

o si pasas el dato por el url:

SELECT MiCampo FROM MiTabla WHERE MiCampo Like '%" &
request.querystring("param") & "%'"

Valdov - Omar Valdovino


"Juan M Afan de Ribera" escribió en el mensaje
news:u6t9e3v#
Hola a todos,

Estoy probando una consulta para hacer búsquedas con una base de datos
Access. Esta consulta tiene un parámetro de búsqueda, por el que se busca


en
varios campos. Si configuro el parámetro dentro de la sentencia SQL de


esta
forma (y resumiendo mucho la consulta):

SELECT MiCampo
FROM MiTabla
WHERE MiCampo Like '%' & [param] & '%'

y después, a través de una página ASP que recoge ese parámetro de


búsqueda,
escribo "[" (sin comillas), me aparece el siguiente error:

"
Información técnica (para personal de soporte técnico)
Tipo de error:
Microsoft JET Database Engine (0x80040E14)
Cadena modelo no válida
...
...

Datos de POST:
txtBuscar=%5B
"

En cambio, si en la consulta configuro el parámetro de esta otra forma:

SELECT MiCampo
FROM MiTabla
WHERE InStr(MiCampo, [param]) > 0

el introducir el mismo carácter "[" funciona sin más problemas

¿A qué se debe esta anomalía? Prefiero utilizar Like siempre que puedo en
vez de una función, pues es bastante más rápido.

Muchas gracias.



Saludos,
Juan M Afan de Ribera
[MVP Access]
http://www.accessvbafaq.mvp-access.com
http://www.mvp-access.com/juanmafan






Preguntas similares