Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-01-2014
Parsec Parsec is offline
Miembro
 
Registrado: abr 2006
Posts: 143
Poder: 19
Parsec Va por buen camino
Insertar Fecha (DatetimePicker) en MYSQL

Hola,

tengo un TADOQuery que se llama InsertaFichajes con la siguiente sentencia:
Código:
insert  into aluminio.fichajes(Orden, Operacion, Empleado, Inicio, Fin, Maquina, TiempoTeorico, UnidadTiempo, Tipo, Tipo_Incidencia, Observaciones_Incidencia, Composicion, Cantidad, Buenas, Malas, Motivo, Observaciones, AyudaStr1) values (:Orden, :Operacion, :Empleado, :Inicio, :Fin, :Maquina, :TiempoTeorico, :UnidadTiempo, :Tipo, :Tipo_Incidencia, :Observaciones_Incidencia, :Composicion, :Cantidad, :Buenas, :Malas, :Motivo, :Observaciones, :AyudaStr1)
Concretamente tengo problemas con los campos Inicio y Fin.
Cuando llega el momento de asignar valores a los campos Inicio y Fin me sale un error de que el formato no es compatible.
Para asignar valores a Inicio y Fin (solo presento Inicio, el campo Fin es idéntico) he utilizado esto:
Código Delphi [-]
InsertaFichaje.Parameters.ParamByName('Inicio').Value:=DatetimePicker3.DateTime;
Y, también, esto que he encontrado por el foro:
Código Delphi [-]
            InsertaFichaje.Parameters.ParamByName('Inicio').Value:=QuotedStr(FormatDateTime('yyyy-mm-dd',DateTimePicker3.Date));
Y mucho más...llevo toda la tarde probando.
Siempre me sale un error, la cuestión es que MYSQL tiene un formato del tipo 'yyyy-mm-dd hh:mm:ss' y el DateTimePiker es del tipo 'dd/mm/aaaa hh:mm:ss' y no encuentro la forma de poder insertar el valor.
Si me podéis echar un cable os lo agradecería.

Saludos
Responder Con Cita
  #2  
Antiguo 28-01-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Parsec.

Revisa la función MySQL DATE_FORMAT()

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 29-01-2014
Parsec Parsec is offline
Miembro
 
Registrado: abr 2006
Posts: 143
Poder: 19
Parsec Va por buen camino
Hola Ecfisa,

Delphi no reconoce date_format()

Exactamente, lo que necesito es convertir un datetimepicker en aaaa-mm-dd hh:mm:ss (formato fecha de MYSQL) y que delphi lo reconozca como un formato bueno al pasárselo al 'Parameter' de un 'ADOQuery'.
Esta es la instrucción insert en SQL del comoponente ADOQuery:
Cita:
insert into aluminio.fichajes(Orden, Operacion, Empleado, Inicio, Fin, Maquina, TiempoTeorico, UnidadTiempo, Tipo, Tipo_Incidencia, Observaciones_Incidencia, Composicion, Cantidad, Buenas, Malas, Motivo, Observaciones, AyudaStr1) values (:Orden, :Operacion, :Empleado, :Inicio, :Fin, :Maquina, :TiempoTeorico, :UnidadTiempo, :Tipo, :Tipo_Incidencia, :Observaciones_Incidencia, :Composicion, :Cantidad, :Buenas, :Malas, :Motivo, :Observaciones, :AyudaStr1)
Y cuando le intento asignar el valor al 'Parameter' del ADOQuery con el formato que necesita MYSQL es cuando me da el error, (lo he probado de muchas formas, te presento las 2 últimas):

Código Delphi [-]
InsertaFichaje.Parameters.ParamByName('Inicio').Value:=DatetimePicker3.DateTime;
// También he probado con esta sentencia
InsertaFichaje.Parameters.ParamByName('Inicio').Value:=QuotedStr(FormatDateTime('yyyy-mm-dd',DateTimePicker3.Date));

¿Hay solución?.
Gracias y saludos
Responder Con Cita
  #4  
Antiguo 29-01-2014
Parsec Parsec is offline
Miembro
 
Registrado: abr 2006
Posts: 143
Poder: 19
Parsec Va por buen camino
Hola de nuevo,

muestro el error y la línea donde ocurre.
Código Delphi [-]
              InsertaFichaje.Parameters.ParamByName('Inicio').Value:=StrToDateTime('2014-01-20 01:02:33');

Y este es el error:



Saludos
Responder Con Cita
  #5  
Antiguo 29-01-2014
Parsec Parsec is offline
Miembro
 
Registrado: abr 2006
Posts: 143
Poder: 19
Parsec Va por buen camino
Hola otra vez,

este es el error que me sale si le paso un fecha con formato delphi:
Instrucción:
Código Delphi [-]
InsertaFichaje.Parameters.ParamByName('Inicio').Value:=StrToDateTime('20/01/2014 01:02:33');
Error:


Saludos
Responder Con Cita
  #6  
Antiguo 29-01-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por Parsec Ver Mensaje
...
Exactamente, lo que necesito es convertir un datetimepicker en aaaa-mm-dd hh:mm:ss
...
Hola Parsec.

Para ese punto que solicitas, intenta de este modo:
Código Delphi [-]
...
var
  tmp: string;
begin
  tmp:= ShortDateFormat; 
  try
    ShortDateFormat:= 'yyyy-MM-dd';
    ShowMessage(DateTimeToStr(DateTimePicker1.DateTime)); // (para que verifiques el valor)
    ...
    InsertaFichaje.Parameters.ParamByName('Inicio').Value:= DatetimePicker3.DateTime;
    InsertaFichaje.ExecSQL; // (supongo)
  finally
    ShortDateFormat:= tmp;
  end;
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 30-01-2014
Parsec Parsec is offline
Miembro
 
Registrado: abr 2006
Posts: 143
Poder: 19
Parsec Va por buen camino
Hola,

hemos avanzado!!, he conseguido grabar la fecha pero la hora la deja en 00:00:00, te pego una imagen de la BBDD MYSQL:



Es posible que haya otro problema en el parameter 'Inicio' (fecha con formato DateTime) del componente ADOQuery, te pego la imagen:



He cambiado varias veces los valores del parameter 'Inicio' pero siempre deja la hora '00:00:00'.

¿Hay alguna incompatibilidad entre Delphi y MYSQL?, con PHP va como la seda.
¿Hay solución?, estoy pensando en asignar otro tipo de variable al campo Inicio en MYSQL, pero tengo más de 20 páginas en PHP que trabajan con él y modificarlo significaría un montón de horas de trabajo.

Saludos
Responder Con Cita
  #8  
Antiguo 30-01-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Parsec.

No uso MySQL, pero jamás escuché que tuviera incompatibilidad con Delphi.

A ver, fijate si así...
Código Delphi [-]
var
  sdt, ltf: string;
begin
  sdt:= ShortDateFormat;
  ltf:= LongTimeFormat;
  try
    ShortDateFormat:= 'yyyy-MM-dd';
    LongTimeFormat := 'hh:mm:ss';
    ...
    InsertaFichaje.Parameters.ParamByName('Inicio').Value:= DatetimePicker3.DateTime;
    InsertaFichaje.ExecSQL;
  finally
    ShortDateFormat:= sdt;
    LongTimeFormat := ltf;
  end;
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #9  
Antiguo 30-01-2014
Parsec Parsec is offline
Miembro
 
Registrado: abr 2006
Posts: 143
Poder: 19
Parsec Va por buen camino
Hola,

sigue sin guardar la hora, la deja a '00:00:00', pero he metido un parchecito que me soluciona el problema.

Una vez insertado el registro (con inicio = 2014-01-30 00:00:00), realizo una búsqueda al último campo insertado y modifico el campo 'Inicio', como ahora no es ningún parámetro puedo utilizar 'AsDateTime' y si que graba la hora:
Código Delphi [-]
begin
            ModificaInicio.Edit;
            ModificaInicio.FieldByName('Inicio').AsDateTime:=DateTimePicker3.DateTime;
            ModificaInicio.FieldByName('Tipo').AsString:='Prueba1';
            ModificaInicio.Post;
          end;

Muchas gracias por tu ayuda.
saludos
Responder Con Cita
Respuesta



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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ayuda para insertar de un DATETIMEPICKER Salnhack Varios 3 18-07-2012 20:36:34
comparar fecha de datetimepicker con fecha fija gonza_619 Varios 2 09-11-2010 02:15:45
Extraer con un DbNavigator fecha para mostrarla en un DateTimePicker (BD MySQL) alan85 Varios 2 06-06-2007 17:12:23
DateTimePicker con fecha erronea FGarcia Varios 3 04-12-2005 21:42:30
Fecha Actual en DateTimePicker Barzaugc Varios 1 15-11-2005 17:29:20


La franja horaria es GMT +2. Ahora son las 00:02:05.


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
Copyright 1996-2007 Club Delphi