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

Preguntas similare

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






Respuesta Responder a este mensaje
#2 Valdov
15/01/2005 - 17:33 | Informe spam
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


Respuesta Responder a este mensaje
#3 Juan M Afan de Ribera
15/01/2005 - 18:14 | Informe spam
Por favor, responde a este mensaje y dinos si te funcionó o no. Gracias

Ahh. Vale, jejeje, gracias por la info. Es que no estoy muy ducho con los
términos empleados en ASP.

Igualmente, tal vez mi pregunta original no se entendió (o yo, que no me
entero):

Si hago una consulta en la que utilizo el Like % parametro % y le paso el
valor "[" (con otros valores funciona bien) en ese parametro, la página
casca y envía el mensaje de error antes mencionado. Si en vez de utilizar
Like, utilizo la función InStr(Cadena_donde_buscar, parametro) da igual lo
que ponga en el valor parametro, que la consulta funciona perfectamente
bien.

¿a qué se debe esto?

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:ekws6Cy%
Ok, tu mismo lo dijiste, estas usando una caja de texto y al hacer click
en
un boton buscar se lleva a cabo la misma sobre la misma pantalla. Esto con
el dato a buscar oculto (va en el post).

Con lo de la url me referia a algo como esto:

tu entras a una página: p.e. www.hotmail.com

inmediatamente se te redirecciona a:
http://login.passport.net/uilogin.srf?id=2

si te fijas termina con un ?id=2

id es un parametro que estan pasando a uilogin.srf

y si te fijas ya le asignan el valor deseado. estos parametros los recojes
con request.querystring en lugar de request.form.

Espero haberme explicado y como decía el chavo del ocho: "La idea es esa".
:)
Valdov - Omar Valdovino


"Juan M Afan de Ribera" escribió en el mensaje
news:eE#SB4x#
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
>>
>>
>
>






Respuesta Responder a este mensaje
#4 Valdov
15/01/2005 - 18:37 | Informe spam
Ok, tu mismo lo dijiste, estas usando una caja de texto y al hacer click en
un boton buscar se lleva a cabo la misma sobre la misma pantalla. Esto con
el dato a buscar oculto (va en el post).

Con lo de la url me referia a algo como esto:

tu entras a una página: p.e. www.hotmail.com

inmediatamente se te redirecciona a:
http://login.passport.net/uilogin.srf?id=2

si te fijas termina con un ?id=2

id es un parametro que estan pasando a uilogin.srf

y si te fijas ya le asignan el valor deseado. estos parametros los recojes
con request.querystring en lugar de request.form.

Espero haberme explicado y como decía el chavo del ocho: "La idea es esa".
:)
Valdov - Omar Valdovino


"Juan M Afan de Ribera" escribió en el mensaje
news:eE#SB4x#
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
>>
>>
>
>


Respuesta Responder a este mensaje
#5 Valdov
15/01/2005 - 19:59 | Informe spam
La pregunta es como le asignas el valor al parametro?, efectivamente el
query esta bien establecido si lo ejecutas en access directamente, pero
porque access te manda un input pidiendote el valor del parametro, aca no te
va a pedir el parametro.

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

Valdov - Omar Valdovino


"Juan M Afan de Ribera" escribió en el mensaje
news:uWnruWy#
Por favor, responde a este mensaje y dinos si te funcionó o no. Gracias

Ahh. Vale, jejeje, gracias por la info. Es que no estoy muy ducho con los
términos empleados en ASP.

Igualmente, tal vez mi pregunta original no se entendió (o yo, que no me
entero):

Si hago una consulta en la que utilizo el Like % parametro % y le paso el
valor "[" (con otros valores funciona bien) en ese parametro, la página
casca y envía el mensaje de error antes mencionado. Si en vez de utilizar
Like, utilizo la función InStr(Cadena_donde_buscar, parametro) da igual lo
que ponga en el valor parametro, que la consulta funciona perfectamente
bien.

¿a qué se debe esto?

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:ekws6Cy%
> Ok, tu mismo lo dijiste, estas usando una caja de texto y al hacer click
> en
> un boton buscar se lleva a cabo la misma sobre la misma pantalla. Esto


con
> el dato a buscar oculto (va en el post).
>
> Con lo de la url me referia a algo como esto:
>
> tu entras a una página: p.e. www.hotmail.com
>
> inmediatamente se te redirecciona a:
> http://login.passport.net/uilogin.srf?id=2
>
> si te fijas termina con un ?id=2
>
> id es un parametro que estan pasando a uilogin.srf
>
> y si te fijas ya le asignan el valor deseado. estos parametros los


recojes
> con request.querystring en lugar de request.form.
>
> Espero haberme explicado y como decía el chavo del ocho: "La idea es


esa".
> :)
> Valdov - Omar Valdovino
>
>
> "Juan M Afan de Ribera" escribió en el mensaje
> news:eE#SB4x#
>> 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
>> >>
>> >>
>> >
>> >
>>
>>
>
>


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida