Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Error en consulta con parametros adoquery (https://www.clubdelphi.com/foros/showthread.php?t=74938)

escorpionrojo43 19-07-2011 19:50:50

Error en consulta con parametros adoquery
 
Hola Colegas.
Tengo un problema en una consulta. mi base de datos es access atraves de ado.

mi componente contiene estas sentencias
Código SQL [-]
select * from ticket where cia_codigo = :cia_codigo  and loc_codigo   =: loc_codigo and fecha =:fecha

Código Delphi [-]
  with adoQuery1, Parameters do
  begin
    Close;
    ParamByName('cia_codigo').value := cia_codigo;
    ParamByName('loc_codigo').value := loc_codigo;
    ParamByName('fecha').value      := fecha;
    Open;
    if eof then
    begin
      ShowMessage('Transacción no encontrada.!');
      exit;
    end;

me presenta un error en la ejecucion no coinciden los tipos de datos en la expresion de criterio:(
espero me puedan ayudar

oscarac 19-07-2011 20:15:57

yo se que en access las fechas tienes que encerrarlas entre ##

algo asi

Código Delphi [-]
 
ParamByName('fecha').value      := '#' + FormatDatetime('dd/mm/yyyy', fecha) + '#';

escorpionrojo43 19-07-2011 20:43:29

Al utilizar #. me da en error de nocoinciden los datos en la expresion de criterios

oscarac 19-07-2011 20:50:46

el parametro fecha de donde lo sacas
un datetimepicker? un edit?

escorpionrojo43 19-07-2011 20:52:22

Cita:

Empezado por oscarac (Mensaje 406849)
el parametro fecha de donde lo sacas
un datetimepicker? un edit?

de la fecha actual (date)

oscarac 19-07-2011 20:56:04

si es un now()

en el parametro podrias colocar asi

Código Delphi [-]
 
ParamByName('fecha').value      := '#' + FormatDatetime('dd/mm/yyyy', now) + '#';

escorpionrojo43 19-07-2011 21:03:38

Cita:

Empezado por oscarac (Mensaje 406851)
si es un now()

en el parametro podrias colocar asi

Código Delphi [-]
 
ParamByName('fecha').value      := '#' + FormatDatetime('dd/mm/yyyy', now) + '#';

Oscarac. el punto es que cuando utlizo el signo # me da un error que te mencione antes.

oscarac 19-07-2011 21:13:16

pregunta...
el campo en la tabla es de tipo Date verdad?

escorpionrojo43 19-07-2011 21:16:57

Cita:

Empezado por oscarac (Mensaje 406853)
pregunta...
el campo en la tabla es de tipo Date verdad?

si. en en acces y es del tipo Date/Time con formato short date

oscarac 19-07-2011 21:43:33

entonces deberia funcionar bien... quiza el problema se origine en los otros campos, verifica

escorpionrojo43 19-07-2011 21:59:54

me parece que el problema esta en la forma en la que paso la fecha
porque (FormatDatetime('dd/mm/yyyy', now)); me pasa la fecha con comilla '19/07/2011' 7y se supone que tenga que pasarla sin comilla. me pueden aclarar a ver si estoy en lo cierto y si es asi como lo puedo hacer.?

oscarac 19-07-2011 22:07:54

te comento que las veces que yo he trabajado con access
para pasarle un parametro tipo fecha debia usar # si no me salia error

aposi 21-07-2011 16:07:14

Código SQL [-]select * from ticket where cia_codigo = :cia_codigo and loc_codigo =: loc_codigo and fecha =:fecha


el error no vendra por el espacio entre =: loc_codigo
que tendria que ser = :loc_codigo


La franja horaria es GMT +2. Ahora son las 10:16:06.

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