Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-02-2004
Giniromero Giniromero is offline
Miembro
 
Registrado: may 2003
Ubicación: Madrid
Posts: 296
Poder: 21
Giniromero Va por buen camino
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
__________________
Sonrie al mundo, y el mundo te sonreirá :)
Responder Con Cita
  #2  
Antiguo 11-02-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
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
Responder Con Cita
  #3  
Antiguo 11-02-2004
Avatar de Nuria
Nuria Nuria is offline
Miembro
 
Registrado: may 2003
Posts: 531
Poder: 22
Nuria Va por buen camino
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.
Responder Con Cita
  #4  
Antiguo 12-02-2004
Giniromero Giniromero is offline
Miembro
 
Registrado: may 2003
Ubicación: Madrid
Posts: 296
Poder: 21
Giniromero Va por buen camino
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
__________________
Sonrie al mundo, y el mundo te sonreirá :)

Última edición por Giniromero fecha: 12-02-2004 a las 09:45:07.
Responder Con Cita
  #5  
Antiguo 12-02-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
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;
Responder Con Cita
  #6  
Antiguo 12-02-2004
Giniromero Giniromero is offline
Miembro
 
Registrado: may 2003
Ubicación: Madrid
Posts: 296
Poder: 21
Giniromero Va por buen camino
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
__________________
Sonrie al mundo, y el mundo te sonreirá :)
Responder Con Cita
  #7  
Antiguo 12-02-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
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
Responder Con Cita
  #8  
Antiguo 12-02-2004
Giniromero Giniromero is offline
Miembro
 
Registrado: may 2003
Ubicación: Madrid
Posts: 296
Poder: 21
Giniromero Va por buen camino
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
__________________
Sonrie al mundo, y el mundo te sonreirá :)
Responder Con Cita
  #9  
Antiguo 12-02-2004
Giniromero Giniromero is offline
Miembro
 
Registrado: may 2003
Ubicación: Madrid
Posts: 296
Poder: 21
Giniromero Va por buen camino
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
__________________
Sonrie al mundo, y el mundo te sonreirá :)
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


La franja horaria es GMT +2. Ahora son las 06:27:19.


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