PDA

Ver la Versión Completa : Componentes DATE


RafaelGV
03-10-2011, 21:19:12
Tengo un inconveniente: es en la elección de los componentes adecuado.
Problema: Cuando un debemos ponerle a usuarios el nro de vto del seguro o de su licencia. Probamos al principio ponerlo como string con un Tedit.
Usamos TDateTimePicker , TAdvDateTimePicker (TMS) , TDateEdit (RX), pero no logramos hacer que si no ponemos fecha pueda pasarle un NULL a la base.
Resolvimos esto poniendo un chkbox pero es demasiado codigo y creo que nos estamos pasando por alto algun modo mas simple.
TDateTimePicker , TAdvDateTimePicker (TMS) tienen la opcion que lei hoy aca que es ShowCheckBox que en cierta manera seria util pero, hay otra manera de pasarle o no la fecha NULL?
Si no ponemos Fecha me toma 31/12/1899 y no esta bien. Usamos Una base Firebird.

Gracias

procedure TfrmEmpleadosAM.chkLicenciaClick(Sender: TObject);
begin
if chkLicencia.Checked then
begin
dLicencia.Enabled := True
end
else
begin
dLicencia.Enabled := False;
dLicencia.Clear;
end;
end;

ecfisa
03-10-2011, 21:51:19
Hola Rafael y bienvenido a los foros de Club Delphi :)

Te invito a que leas la Guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php) y especialmente te ruego que cuando incluyas código Delphi, lo hagas entre las etiquetas .

Un saludo.

ecfisa
03-10-2011, 22:04:25
Hola de nuevo.
hay otra manera de pasarle o no la fecha NULL?
No sé si estoy entendiendo bién lo que buscas hacer, pero usando un TDateTimePicker, se me ocurre lo siguiente:

Inicializar el DateTimePicker:

DateTimePicker1.Format:= ' ';


Luego en algún punto evaluar:

if DateTimePicker1.Format = ' ' then
begin
IBDataSet1.Edit;
// de los dos modos siguientes se envía NULL al campo
IBDataSet1.FieldByName('FECHA').Clear; // modo 1
IBDataSet1.FieldByName('FECHA').AsVariant:= NULL; // modo 2
end;


Un saludo.