Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-01-2005
Tecnic2 Tecnic2 is offline
Miembro
 
Registrado: may 2004
Posts: 155
Poder: 14
Tecnic2 Va por buen camino
Unhappy Error en consulta con fecha y hora.

Hola a todos,

Veréis, tengo un problema que me trae de cabeza:

En mi base de datos access tengo una tabla con campos entre los cuales tengo "Subject" (String), "Start1" (Fecha corta), "Start2" (Hora larga).

Hago la siguiente consulta con un control ADOQuery:

ADOQBuscar.SQL.Add('SELECT * FROM tabla');
ADOQBuscar.SQL.Add('WHERE Subject = ' + QuotedStr('texto'));
ADOQBuscar.SQL.Add('AND Start1 = # + 'fecha' + '#');
ADOQBuscar.SQL.Add('AND Start2 = #' + 'hora' + '#');


El problema está en que si quito la última linea de la consulta la hace bien, pero con élla me da el siguiente error:
"Parameter object is improperly defined. Inconsistent or incomplete information was provided."

P.D.: El formato de 'fecha' está ya en mm/dd/yyyy.

Alguien me ayuda?

Muchas gracias por adelantado.
Responder Con Cita
  #2  
Antiguo 18-01-2005
Avatar de Neftali
Neftali Neftali is offline
-Germán Estévez-
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 15.351
Poder: 10
Neftali Va camino a la famaNeftali Va camino a la fama
¿Has probado a utilizar parámetros en la consulta?

Aqui tienes ejemplos de utilización:
http://www.clubdelphi.com/foros/showthread.php?t=11491
http://www.clubdelphi.com/foros/showthread.php?t=10575
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 18-01-2005
Tecnic2 Tecnic2 is offline
Miembro
 
Registrado: may 2004
Posts: 155
Poder: 14
Tecnic2 Va por buen camino
Post Mejor sin parámetros....

Hola Neftali, no creo que hagan faltan los parámetros, lo que no entiendo es por qué razón si lo pongo directamente en access la consulta me funciona y en Delphi no.

Alguna solucion mas?
Responder Con Cita
  #4  
Antiguo 18-01-2005
Avatar de Neftali
Neftali Neftali is offline
-Germán Estévez-
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 15.351
Poder: 10
Neftali Va camino a la famaNeftali Va camino a la fama
Cita:
Empezado por Tecnic2
...no creo que hagan faltan los parámetros, lo que no entiendo es por qué razón si lo pongo directamente en access la consulta me funciona y en Delphi no.
Bueno, hacer falta, no creo que hagan falta, tal vez se puede hacer directamente, pero creo que con parámetros te evitarías errores.

En cuanto a la segunda afirmación, la razón por la que no funciona es que realmente ADO no ejecuta consultas contra Access, sino contra MS JET (que es el motor de Base de Datos que usa Access); Access no deja de ser una aplicación que trabaja con MS Jet igual que la tuya.

Que tu consulta funcione en Access, no significa que deba funcionar en Delphi; Es así en el 95% de los casos, pero Access en algunos casos también hace modificaciones a la consulta antes de lanzarla contra Jet, de ahí que una SQL que en Access funcione no significa que directamente contra Jet deba funcionar.

No se si me expliqué correctamente.

P.D: ADO + Delphi puede funcionar en un ordenador que no tenga instalado Access, basta con que esté instalado MS Jet; Es más, debe funcionar sin Access, ya que para instalar Access se necesita "pagar" licencia de Office y para usar ADO en Delphi no se debe comprar el Office (sólo nos faltaba eso ...).
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 18-01-2005
Tecnic2 Tecnic2 is offline
Miembro
 
Registrado: may 2004
Posts: 155
Poder: 14
Tecnic2 Va por buen camino
Post Y el motivo del error?

Muchas gracias por tu respuesta, pero necesito saber el motivo de por que falla ésta consulta.
Lo que dices de que el Access "prepara" la consulta antes de lanzarla supongo que te refieres al código SQL que genera no? Pues éste código lo he copiado exactamente igual en el Delphi y no me funciona tampoco.

No sé, más que nada querría saber solo el motivo por el cual no accepta la consulta.

Muchas gracias.
Responder Con Cita
  #6  
Antiguo 18-01-2005
Avatar de ISKANDAR
ISKANDAR ISKANDAR is offline
Miembro
 
Registrado: jun 2004
Ubicación: Argentina, Latitud 28- Longitud 59 (Resistencia)
Posts: 41
Poder: 0
ISKANDAR Va por buen camino
Talking

Mira, no tengo mucha experiencia con Access, pero siempre que lo utilicé ha sido bastante quisquilloso, y creo que podrías probrar agregando paréntesis para eliminar su confusión, pues cuando hay más de una condición en el WHERE, puede marearse. Probá así:

ADOQBuscar.SQL.Add('SELECT * FROM tabla');
ADOQBuscar.SQL.Add('WHERE (Subject = ' + QuotedStr('texto')+') ');
ADOQBuscar.SQL.Add('AND (Start1 = #' + 'fecha' + '#) ');
ADOQBuscar.SQL.Add('AND (Start2 = #' + 'hora' + '#)');

Ya sé que no es muy elegante hacer esto, pero recuerda que como todo producto de Mocosoft, puede tener sus mañas .
Responder Con Cita
  #7  
Antiguo 19-01-2005
Avatar de Neftali
Neftali Neftali is offline
-Germán Estévez-
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 15.351
Poder: 10
Neftali Va camino a la famaNeftali Va camino a la fama
Cita:
Empezado por Tecnic2
...Pues éste código lo he copiado exactamente igual en el Delphi y no me funciona tampoco.
¿Puedes "pegar" aquí exactamente la consulta SQL que estás lanzando en Access?
Tal vez viendola te podamos decir porqué no funciona en Delphi y qué hay que modificar para que funcione.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #8  
Antiguo 19-01-2005
Tecnic2 Tecnic2 is offline
Miembro
 
Registrado: may 2004
Posts: 155
Poder: 14
Tecnic2 Va por buen camino
Post Aqui está la consulta

Ésta es la consulta que genera el Access:

SELECT calendario.*, calendario.Subject, calendario.Start1, calendario.Start2
FROM calendario
WHERE (((calendario.Subject)="asunto de prueba") AND ((calendario.Start1)=#1/19/2005#) AND ((calendario.Start2)=#12/30/1899 13:15:0#));
Responder Con Cita
  #9  
Antiguo 19-01-2005
Avatar de Neftali
Neftali Neftali is offline
-Germán Estévez-
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 15.351
Poder: 10
Neftali Va camino a la famaNeftali Va camino a la fama
Coloca en Delphi en un ADOQuery la siguiente consulta SQL:

Código SQL [-]
  SELECT calendario.*, calendario.Subject, calendario.Start1, calendario.Start2
  FROM calendario
  WHERE (calendario.Subject='asunto de prueba') AND (calendario.Start1=#1/19/2005#)
  and (calendario.Start2=TimeValue('12/30/1899 13:15:00'))

NOTA: Comillas simples en lugar de # y utiliza la fiunción TimeValue.

La de Access no funciona en Delphi, en cambio (en éste caso) si pegas ésta en Access verás como sí funciona...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #10  
Antiguo 20-01-2005
Tecnic2 Tecnic2 is offline
Miembro
 
Registrado: may 2004
Posts: 155
Poder: 14
Tecnic2 Va por buen camino
Post Lo probaré.

De acuerdo, lo probaré y os informaré del resultado.

Muchas gracias.
Responder Con Cita
  #11  
Antiguo 01-10-2005
[FGarcia] FGarcia is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Cordoba, Veracruz, México
Posts: 1.123
Poder: 14
FGarcia Va por buen camino
Desde el dia 20 de enero 2005 estamos esperando tu respuesta para saber como resolviste este problema, tengo un problema similara y me gustaria sa ber como lo resolviste. De ya Gracias!
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 19:49:42.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi