Error de sintaxis en una consulta

02/12/2005 - 22:41 por Ivan Saucedo | Informe spam
Saludos grupo:

-Estoy tratando de recuperar un campo de un registro mediante una consulta
SQL pero tengo problemas porque me manda un error de sintaxis y no se
porque, le pongo la linea en cuestion:

DbCommand.CommandText = "SELECT idHistoria FROM Historial WHERE id = " + id
+ " AND Fecha = #" + tmpFecha + "#";

-Cuando ejecuto esta consulta utilizo OleDbException para mostrar el mensaje
de error y es el siguiente:

Error de sintaxis en la fecha en la expresion de consulta 'id = 28 AND Fecha
= #Dic-02-2005#'

- Y sucede en la linea que les pongo a continuacion

LeeIdHistoria = DbCommand.ExecuteReader();

- LeeIdHistoria es un OleDbDataReader
- La conexion a la base de datos esta abierta
- La base de datos esta en Access
- El campo es Date/Time (Fecha corta)
- El formato de fecha que utilizo es MMM-dd-aaaa (en mi sistema operativo)
- DCommand es un OleDbCommand

* Acaso no se pueden comparar dos tipos de datos distintos en la clausula
WHERE??

Gracias de antemano

Preguntas similare

Leer las respuestas

#6 Ivan Saucedo
09/12/2005 - 02:47 | Informe spam
Saludos de nuevo, Gracias por su ayuda. me ayudo mucho
"A.Poblacion" escribió en
el mensaje news:ulgnFM%
"Ivan Saucedo" wrote in message
news:
-Estoy tratando de recuperar un campo de un registro mediante una
consulta
SQL pero tengo problemas porque me manda un error de sintaxis y no se
porque, le pongo la linea en cuestion:

DbCommand.CommandText = "SELECT idHistoria FROM Historial WHERE id = " +


id
+ " AND Fecha = #" + tmpFecha + "#";

-Cuando ejecuto esta consulta utilizo OleDbException para mostrar el


mensaje
de error y es el siguiente:

Error de sintaxis en la fecha en la expresion de consulta 'id = 28 AND


Fecha
= #Dic-02-2005#'

- Y sucede en la linea que les pongo a continuacion

LeeIdHistoria = DbCommand.ExecuteReader();

- LeeIdHistoria es un OleDbDataReader
- La conexion a la base de datos esta abierta
- La base de datos esta en Access
- El campo es Date/Time (Fecha corta)
- El formato de fecha que utilizo es MMM-dd-aaaa (en mi sistema
operativo)
- DCommand es un OleDbCommand

* Acaso no se pueden comparar dos tipos de datos distintos en la clausula
WHERE??



No hay ningún problema en comparar tipos de datos distintos en el
WHERE. El problema de este tipo de consultas suele estar en el formato de
la
fecha. Cuando haces el "+ tmpFecha +", asumiendo que tmpFecha sea de tipo
DateTime, el compilador lo interpreta haciendo un tmpFecha.ToString() para
poderla concatenar, y el ToString usa el formato que esté en ese momento
configurado. Por otra parte, el parser de la consulta Sql que utiliza
OleDb
espera las fechas en un formato que sigue criterios distintos, por lo que
dependiendo de la configuración es bastante fácil que no concuerden los
dos
formatos.
Para no volverse loco pensando en cómo hay que formatear la fecha para
que el programa funcione siempre bajo todas las circunstancias, lo mejor
es
parametrizar la consulta y dejar que el formateo se realice
automáticamente
de forma interna:

DbCommand.CommandText > "SELECT idHistoria FROM Historial WHERE id=? AND Fecha=?";
DbCommand.Parameters.Add("id", id);
DbCommand.Parameters.Add("fecha", tmpFecha);

LeeIdHistoria = DbCommand.ExecuteReader();





email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida