Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MS SQL Server (https://www.clubdelphi.com/foros/forumdisplay.php?f=23)
-   -   Problema al guardar Fecha+Hora en SQLServer 2005 (https://www.clubdelphi.com/foros/showthread.php?t=86898)

scigliano 20-10-2014 07:25:51

Problema al guardar Fecha+Hora en SQLServer 2005
 
1 Archivos Adjunto(s)
Hola amigos... :)
Tengo un formulario para controlar las entradas del Personal, donde solicito al usuario en dos campos TDateTimePicker la Fecha de Entrada y la Hora de Entrada. Mi intención es guardar estos dos datos (Fecha+Hora) en un solo campo de la Tabla, la cual he definido como DateTime.

Los datos del primer campo son:
Name: DTFechaInicio
Kind: dtkDate
DateFormat: dfShort

Los datos del segundo campo son:
Name: DTHoraInicio
Kind: dtkTime

Y en la Tabla de SQLServer2005 tengo:
Campo: FECHA_INICIO
Tipo de Dato: datetime


En el anexo les envío una imagen de como aparecen en el formulario.

En el botón 'Guardar' tengo la siguiente instrucción:
Código SQL [-]
               
SQL.Text := 'INSERT INTO T_MOV (..., FECHA_INICIO, ... ) '+
                 'Values (..., :PFINICIO, ...) ';
with Parameters do
   begin
      ...
      ParamByName('PFINICIO').Value := ((DTFechaInicio.Date) + (DTHoraInicio.Time)) ;
      ...
   end;

Los valores que coloco en el formulario son:
Fecha: 21/10/2014
Hora:20:30:24

Luego de pulsar el botón 'Guardar' busco los valores que se almacenaron, y me encuentro
09/03/2129 20:55:49 :eek:

En probado colocar antes de realizar el Insert, la instruccion SET DATEFORMAT DMY, pero no cambia en nada.
Sera que no se puede hacer lo que estoy intentando? :confused:

olbeup 20-10-2014 08:38:29

Hola scigliano,

Cambia esto:
Código SQL [-]
               
SQL.Text := 'INSERT INTO T_MOV (..., FECHA_INICIO, ... ) '+
                 'Values (..., :PFINICIO, ...) ';
with Parameters do
   begin
      ...
      ParamByName('PFINICIO').Value := ((DTFechaInicio.Date) + (DTHoraInicio.Time)) ;
      ...
   end;
Por Esto:
Código SQL [-]
               
SQL.Text := 'INSERT INTO T_MOV (..., FECHA_INICIO, ... ) '+
                 'Values (..., :PFINICIO, ...) ';
with Parameters do
   begin
      ...
      ParamByName('PFINICIO').Value := DateToStr(DTFechaInicio.Date) + ' ' + TimeToStr(DTHoraInicio.Time);
      ...
   end;

No trabajo con parametros, espero que te funcione

Un saludo.

luisgutierrezb 20-10-2014 16:46:13

Prueba con:

Código Delphi [-]
ParamByName('PFINICIO').Value := (Int(DTFechaInicio.Date) + fracc(DTHoraInicio.Time)) ;

La parte entera es el día, y la parte decimal es la hora, aunque pongas que solo el time, te regresa con fecha y se la suma a la otra fecha...

scigliano 20-10-2014 21:16:55

Amigos olbeup y luisgutierrezb

Agradecido con sus soluciones, ambas funcionaron muy bien. ^\||/
Solo que en el caso de luisgutierrezb, en vez de 'fracc' coloque 'frac' porque daba error al momento de compilar. :)

Muchas gracias por su colaboracion... :)


La franja horaria es GMT +2. Ahora son las 08:02:25.

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