Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Problema con parametros (https://www.clubdelphi.com/foros/showthread.php?t=72132)

tiago_begins 29-01-2011 19:37:14

Problema con parametros
 
Hola amigos, necesito una ayuda urgente.
No sé que es lo que esta mal en este código:

Código Delphi [-]
begin
    sSQL:= ' DELETE FROM turnos WHERE ID_PACIENTE= :ID_PACIENTE AND DATE_FORMAT( FECHA_HORA, ' + QuotedSTR( '%Y%m%d' ) + ')= ' + QuotedSTR( FormatDateTime( 'yyyyMMdd'))= :FECHA_HORA;
        //DATE_FORMAT( FECHA_HORA, ' + QuotedSTR( '%H:%i' ) + ' ) '= QuotedSTR( FormatDateTime( 'yyyyMMdd')= ':fecha_hora');
        qryEXEC:=TZQuery.Create(nil);
        qryEXEC.SQL.Add( sSQL );
        qryEXEC.ParamByName( 'ID_PACIENTE' ).Value:= Data.qryTurno.FieldByName( 'ID_PACIENTE' ).Value;
        qryEXEC.ParamByName( 'FECHA_HORA' ).Value:= Data.qryTurno.FieldByName( 'FECHA_HORA' ).Value;
        qryEXEC.Connection:= Data.Conx;
        qryEXEC.ExecSQL();
        FreeAndNil( qryEXEC );
        Data.qryTurno.Refresh;
    end;

Tengo que decirle que me elimine los datos que están en FECHA_HORA con la ID_PACIENTE correspondiente, pero los datos de FECHA_HORA con este formato FormatDateTime( 'yyyyMMdd')

Mi error creo que está en esta línea:

Código Delphi [-]
sSQL:= ' DELETE FROM turnos WHERE ID_PACIENTE= :ID_PACIENTE AND DATE_FORMAT( FECHA_HORA, ' + QuotedSTR( '%Y%m%d' ) + ')= ' + QuotedSTR( FormatDateTime( 'yyyyMMdd'))= :FECHA_HORA;

espero su ayuda

Casimiro Notevi 29-01-2011 20:23:24

¿Qué base de datos es?

Caral 29-01-2011 20:23:51

Hola
Como presenta la fecha el campo ?:
Código Delphi [-]
Data.qryTurno.FieldByName( 'FECHA_HORA' ).Value
y Como presenta la fecha el campo FECHA_HORA de la tabla turnos?.
Si es que FECHA_HORA es un campo?.
Saludos

Caral 29-01-2011 20:29:47

Hola
CONCATENACION????:
Código Delphi [-]
sSQL:= ' DELETE FROM turnos WHERE ID_PACIENTE= :ID_PACIENTE AND '+
       'DATE_FORMAT( FECHA_HORA, ' + QuotedSTR( '%Y%m%d' ) + ')= ' +
       QuotedSTR( FormatDateTime( 'yyyyMMdd')) +'= :FECHA_HORA';
El ultimo parametro presentado (:FECHA_HORA) DEBE SER, parte de la consulta.
Por eso hay que concatenarlo.
No se, digo...
Saludos

tiago_begins 29-01-2011 20:39:39

Mysql
 
La base de datos es MySql.

La tabla es turno y los campos ID_PACIENTE Y FECHA_HORA

El formato de la fecha es yyyyMMdd

Caral 29-01-2011 20:49:02

Hola
Entonces para que la formateas la fecha?.
Saludos

tiago_begins 29-01-2011 21:09:48

Clarooo
 
Muchas gracias, estaba pabeando formatando la fecha para solo eliminarla

Pero... tengo otra ahora:

Código Delphi [-]
qryExec:= TZQuery.Create(nil);
qryEXEC.SQL.Add(' INSERT INTO turno ( ID_PACIENTE, FECHA_HORA , ' +'DATE_FORMAT( FECHA_HORA, ' + QuotedSTR( '%H:%i' ) + ' )) values ( :ID_PACIENTE, :FECHA_HORA))');
        qryExec.ParamByName( 'ID_PACIENTE' ).Value:= Data.qryPAC.FieldByName ( 'ID_PACIENTE' ).value;
        qryExec.ParamByName ( 'FECHA_HORA').Value:= sHora;
        qryExec.Connection:=Data.Conx;
        qryExec.ExecSQL;
        FreeAndNil (qryExec);
        Data.qryTurno.Refresh;

me da error en la Syntaxis de MySql ( en la parte del código: 'DATE_FORMAT( FECHA_HORA, ' + QuotedSTR( '%H:%i' ) + ' ), tengo que guardar en el Campo FECHA_HORA el valor de la variable sHora

Caral 29-01-2011 21:54:38

Hola
Asi?:
Código Delphi [-]
qryExec:= TZQuery.Create(nil);
qryEXEC.SQL.Add(' INSERT INTO turno ( ID_PACIENTE, FECHA_HORA ) '+
          ' values ( :ID_PACIENTE, :FECHA_HORA)');
        qryExec.ParamByName( 'ID_PACIENTE' ).Value:= Data.qryPAC.FieldByName ( 'ID_PACIENTE' ).value;
        qryExec.ParamByName ( 'FECHA_HORA').Value:= FormatDateTime( 'yyyyMMdd', sHora );
        qryExec.Connection:=Data.Conx;
        qryExec.ExecSQL;
        FreeAndNil (qryExec);
        Data.qryTurno.Refresh;
No esto muy seguro del FormatDateTime (nunca lo he usado, pero esa es la idea.
El parametro no tiene por que contener el formato, es cuando se le da valor que lo debe contener.
Saludos

Caral 29-01-2011 22:13:36

Hola
Otra es formatear la fecha antes:
Código Delphi [-]
qryExec:= TZQuery.Create(nil);
ShortDateFormat := 'yyyyMMdd';
qryEXEC.SQL.Add(' INSERT INTO turno ( ID_PACIENTE, FECHA_HORA ) '+
          ' values ( :ID_PACIENTE, :FECHA_HORA)');
        qryExec.ParamByName( 'ID_PACIENTE' ).Value:= Data.qryPAC.FieldByName ( 'ID_PACIENTE' ).value;
        qryExec.ParamByName ( 'FECHA_HORA').Value:=  sHora;
        qryExec.Connection:=Data.Conx;
        qryExec.ExecSQL;
        FreeAndNil (qryExec);
        Data.qryTurno.Refresh;
Saludos


La franja horaria es GMT +2. Ahora son las 00:55:33.

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