Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Como insertar una fecha vacia? (https://www.clubdelphi.com/foros/showthread.php?t=47541)

Gaim2205 30-08-2007 19:18:52

Como insertar una fecha vacia?
 
Tengo un formulario donde capturo varios datos, entre ellos estan los campos fecha_sni, fecha_per ambos de tipo Date, el usuario tiene la opcion de ingresar o no una fecha en ellos. Como puedo hacer para insertar una fecha vacia en la base de datos??

no 01/01/0001 ni 31/12/1899... vacio...

" / / " o " "

Gracias =D

nota: mi tabla en la b.d si permite nulls para esos campos.

paldave 30-08-2007 20:03:14

1 Archivos Adjunto(s)
No dices con que tipo de tablas ni de base de datos estás trabajando. Creo que no te tomaste el tiempo suficiente como para plantear tu pregunta. Lee la Guía de estilo en la barra superior.
De todas formas creo que podrías usar un condicional para comprobar si los campos van a tener alguna fecha válida, y luego dependiendo de ello darles entrada en tu BD.
Para ser más claro propongo que descargues el componente TosDateEdit que adjunto (creación de un servidor, úsalo libremente), pongas 2 de ellos en el formulario y luego compruebes si tiene un valor válido en cada uno de ellos.
Por ejemplo si tu fech está en osDateEdit1 sería:
Código Delphi [-]
if (osDateEdit1.IsNull) or (not osDateEdit1.IsValid) then
    table1.SetFields([Nombre,null])
  else
     table1.SetFields([Nombre,osDateEdit1.Date]);

Gaim2205 30-08-2007 20:32:31

Disculpa por lo de la explicacion, tienes razon. Mi base de datos está en firebird. uso delphi 7 y los componentes MDO para conectarme.

La insercion de los datos la hago mediante un query, con el siguiente código:
Código Delphi [-]
que_ins.SQL.Text := format('insert into %s',[tabla])+''+'('+textosql+'';
que_ins.ParamByName('cve').AsInteger := StrToInt(Edit1.Text);
que_ins.ParamByName('mat').AsInteger := StrToInt(Edit2.text);
que_ins.ParamByName('nombre').AsString := edit3.Text;
que_ins.ParamByName('status').AsString := ComboBox1.Text;
que_ins.ParamByName('contrato').AsString := ComboBox2.Text;
que_ins.ParamByName('perfil').AsString := ComboBox12.Text;
que_ins.ParamByName('sni').AsString := ComboBox13.Text;
que_ins.ParamByName('Fechaper').AsDate := Fechaper.Date;
que_ins.ParamByName('Fechsni').AsDate := Fechasni.Date;

el combobox12 ycombobox13 (que tienen como opciones "si" y "no") son los que definen si la fecha sera vacia o no.

la unica forma en que he logrado que inserte la fecha vacia es guardando 4 cadenas distintas dentro de la variable "textosql", y con un case seleccionar el valor que tomara textosql segun las opciones elegidas. Pero quiero hacerlo de forma mas "limpia" y optimizada.

gracias otra vez

paldave 30-08-2007 20:43:06

Perdona, pero Fechaper y Fechasni ¿que tipo de componentes son? EditBox no pueden ser por la propiedad Date.

Gaim2205 30-08-2007 20:48:21

que detalles se me van!!... son TDateEdit, de la Rxlib.


La franja horaria es GMT +2. Ahora son las 10:33:40.

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