Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   pasar un string date a un campo datetime de una tabla (https://www.clubdelphi.com/foros/showthread.php?t=7318)

Giniromero 11-02-2004 17:23:29

pasar un string date a un campo datetime de una tabla
 
Hola a todos,


Estoy usando interbase 7 con delphi 6.

¿Cómo se puede pasar un valor de un tMaskEdit, con mask de fecha dd/mm/aa, o un TEdit, a un campo Tdatetime de una base de datos interbase?

Estoy usando para las tablas de IB los IBDataSet.

Muchas gracias,
Virginia

__cadetill 11-02-2004 17:42:59

Sin probarlo.....

Código:

MiTablaMiCampo.AsDateTime := StrToDateTime(MiEdit.Text);
Lo que no se si funcionaría (tendrías que probarlo) es lo siguiente

Código:

MiTablaMiCampo.AsString := MiEdit.Text;
Eso sí, en todo caso, primero tendrías que validar que fuese una fecha válida

Nuria 11-02-2004 17:57:25

Lo que si funciona con un TDateEdit y con TDBDateEdit, que vienen con las RX. Lo siguiente:


Código:

MiTablaMiCampo.AsString := MiTDateEdit.EditText;
Y como bien dice Cadetill, primero tendrías que validar la fecha.

Giniromero 12-02-2004 09:42:15

Hola,

Cita:

primero tendrías que validar que fuese una fecha válida
tal vez este sea el problema, pues he probado todas las combinaciones que se me han ocurrido con:

MiTablaMiCampo.AsDateTime := StrToDateTime(MiEdit.Text);


esto es:

MiTablaMiCampo.value := StrToDateTime(MiEdit.Text);
MiTablaMiCampo.AsDateTime := StrToDate(MiEdit.Text);
MiTablaMiCampo.AsString := MiEdit.Text;

...

¿cómo hago para validar la fecha?

Como ya os digo, he intentado usar tanto TEdit como TMaskEdit, (con mascara para una fecha dd/mm/aa), para el campo en el que se debe insertar la fecha.

Gracias de antemano.

Virginia

__cadetill 12-02-2004 09:47:12

Cita:

Empezado por Giniromero
¿cómo hago para validar la fecha?

Hola Virginia

En Delphi 6 tienes la función TryStrToDateTime(), sinó siempre puedes hacer un bloque try..except..end

Código:

try
  StrToDateTime(MiEdit.Text);
except
  // No es fecha válida
end;


Giniromero 12-02-2004 10:29:07

Hola,

en el topic search no encuentro nada relativo al uso de TryStrToDateTime().

He mirado StrToDateTime, y me da a entender que tengo que introducir una fecha ¿Y UNA HORA? Yo sólo necesito la fecha, no la hora.

Mas que nada, por que me parece que con esto sólo voy a conseguir que, vale, no me de error, pero tampoco me guarde la fecha nunca, pues si el formato está siempre mal con respecto a lo que necesita...

Gracias por todo,

Virginia

__cadetill 12-02-2004 11:13:54

De TryStrToDateTime no encontrarás ayuda, pero sí de TryStrToConvUnit function

La forma de utilizarlo sería:

Código:

procedure TForm1.FormCreate(Sender: TObject);
var
  F: TDateTime;
begin
  if TryStrToDateTime(Edit1.Text, F) then
    ShowMessage('correcto')
  else
    ShowMessage('incorrecto')
end;

No obstante, el formate de la fecha te aconsejo que la hagas con 4 dígitos en el año (manías mias? quizás!!)

Otra cosa, un campo de tipo DateTime contiene, como bien dices, la fecha y la hora (fecha parte entera, hora parte decimal). Pero para hacer este tipo de validaciones/conversiones, no necesitas para nada discriminar esta "pequeñez"

Por otra parte, el problema dices que no te guarda la fecha. ¿Supongo que estarás poniendo en Edición o Inserción el registro antes de asignar la fecha, verdad? Mira de poner un cachito del código para que nos hagamos una idea ;)

Giniromero 12-02-2004 11:36:36

Hola,

Cita:

Por otra parte, el problema dices que no te guarda la fecha. ¿Supongo que estarás poniendo en Edición o Inserción el registro antes de asignar la fecha, verdad? Mira de poner un cachito del código para que nos hagamos una idea
No, si la fecha no me la guarda es por que da error y el registro no llega a guardarse :( . Supongo que si consigo que me deje de dar error, tal vez vea si me lo guarda bien o no.

Voy a progar lo que me comentas.

Muchas gracias, como siempre, por todo.

Te cuento que pasa.

Virginia

Giniromero 12-02-2004 14:58:10

EUREKA!!

Esta torpe estaba poniendo mal "DateTime", pues estaba escribiedo "DataTime". De todos modos me han sido de mucha ayuda vuestras indicaciones.

Gracias por todo,

Virginia


La franja horaria es GMT +2. Ahora son las 09:21:08.

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