Foros Club Delphi

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

usuario1000 19-02-2017 20:27:09

Problemas con fechas SQL
 
Hola amigos, que tal???

Me da hasta verguenza preguntar esto, pero es que llevo toda la tarde haciendo mil combinaciones y no toca la flauta. No sé como grabar una fecha en mi base de datos de Firebird, utilizando el típico query.He probado de mil maneras y nada.

Código Delphi [-]
 with QUERY1 do
  begin
      SQL.Add('insert into DATOS (N_obra,  nombre_largo, nombre_corto, domicilio, poblacion, provincia, codigo_postal, comentario, fechaCreacion)');
      SQL.Add('values ( :obra, :nlargo, :ncorto, :domicilio, :poblacion, :provincia, :cp, :comentario, :fechaCreacion)');
      ParamByName('obra').AsInteger := strtoInt(codigo);
      ParamByName('nlargo').AsString := nombrelargo;
      ParamByName('ncorto').AsString := nombrecorto;
      ParamByName('domicilio').AsString := domicilio;
      ParamByName('poblacion').AsString := poblacion;
      ParamByName('provincia').AsString := provincia;
      ParamByName('cp').AsString := codigopostal;
      ParamByName('comentario').AsString := comentario;
      ParamByName('FechaCreacion').Value:= strToDate(FechaCreacion);   <- DA ERROR
    end;

Esa línea que da error la he cambiado por:

ParamByName('FechaCreacion').asdate:= strToDate(FechaCreacion); <- y DA ERROR

ParamByName('FechaCreacion').asDateTime:= strToDate(FechaCreacion); <- y DA ERROR

ParamByName('FechaCreacion').Value:= date(); <- por probar y DA ERROR


He leido y releido, pero ya no veo ni entiendo nada, después de tanto rato.

Se agradece un poco de luz.

Gracia a todos.

Nota: Utilizo Delphi Seatle, FireBird 2.5 y componentes FireDac (FDQuery)

AgustinOrtu 19-02-2017 23:43:39

Que error te da?

Como esta definido el campo en cuestion en tu tabla?

usuario1000 20-02-2017 06:59:38

El campo está definido en la base de datos como tipo 'date'

saludos.

Casimiro Notevi 20-02-2017 09:31:55

Cita:

Empezado por usuario1000 (Mensaje 513485)
...saludos.

Recuerda poner los tags al código fuente, ejemplo:



Gracias :)

ecfisa 20-02-2017 15:03:43

Hola.

No se de que tipo es la variable FechaCreacion, pero intenta de estas formas:
Código Delphi [-]
  // 1.-
    ParamByName('FechaCreacion').AsDate     := FechaCreaCion;
  // 2.-
    ParamByName('FechaCreacion').AsDateTime := FechaCreacion;
En mi prueba funciona de ambos modos, sea que en Delphi la variable FechaCreación esté declarada de tipo TDate o TDateTime.

Una observación: Para evitar residuos de llamadas anteriores es muy importante no olvidar el método Clear cuando usas el método Add .
Código Delphi [-]
  with QUERY1 do
  begin
    SQL.Clear;  // <- !!!!
    ...

Saludos :)

olbeup 20-02-2017 15:04:35

Hola Usuario1000,

La variable que le pasas "FechaCreacion" ya es de tipo TDateTime o es un String?, si es de tipo TDateTime el StrToDate(FechaCreacion) sobra.

En vez de
Código Delphi [-]
ParamByName('FechaCreacion').Value:= strToDate(FechaCreacion);   <- DA ERROR
Poner
Código Delphi [-]
ParamByName('FechaCreacion').AsDateTime := FechaCreacion;
Un saludo.

usuario1000 20-02-2017 16:41:54

Solucionado.

Gracias a todos por vuestro tiempo.

Al final se trataba de un error en el nombre de la variable "FechaCreacion" de la base de datos, y estaba equivocandola con la varieble que utilizaba como parametro. UFF, vaya error por mi parte!!!, me estaba volviendo loco.

Gracias a todos por vuestro tiempo.

AgustinOrtu 21-02-2017 00:05:14

En realidad lo ideal es que peges (y leas :)) el mensaje de error, porque las bases de datos suelen ser bastante explicitas, en este caso, con mensajes como "columna "XXX" no encontrada en tabla "YYY""

usuario1000 21-02-2017 00:12:47

Lo tendré en cuenta.

Gracias por vuestra paciencia.


La franja horaria es GMT +2. Ahora son las 07:27:23.

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