Hola a todos,
Siento que tal vez he sido un poco densa explicandome. Intentaré aclararme un poco:
Esta ventana se encarga de insertar, editar y borrar datos
en una tabla.
Los problemas los tengo al editar y modificar campos
de tipo date.
Comparto la misma ventana para la inserción y la edición
de los datos, (ventana insertar/editar).
Dicha ventana tiene unicamente tres campos:
descripción, de tipo varchar,
fecha Inicial de tipo date,
fecha final de tipo date.
y dos botones: Aceptar, (devuelve modal result OK) y
Cancelar, (devuelve modal result Cancel).
Voy haciendo pruebas con los datos:
1)
Inserto un nuevo registro --> Se me muestra la
ventana insertar/editar. Inserto datos
sólo en los
campos date,
dejando vacio el de descripcion.
acepto, y se guardan los datos.
Una vez hecho esto,
edito ese mismos registro.
Me muestra la ventana insertar/editar.
Añado datos en el campo que antes dejé vacío,(nul),
esto es, descripcion. Doy a aceptar y me lo guarda.
2)Esta vez
me situo en un registro antiguo, de los que
nunca han tenido datos en fechaini y fechafin,
siempre han estado vacios o nulos
Edito dicho registro, me muestra la ventana de
insercion/edicion, pidiendome datos para los tres campos.
Añado datos en los campos que antes eran nul,
esto es,
fecha inicial y fecha final, doy a aceptar y
NO ME LOS GUARDA.
==> Conclusión, no me deja modificar un campo que era
null si éste es de tipo date
3)
Inserto un nuevo registro --> Se me muestra la
ventana insertar/editar.
Inserto datos esta vez sólo en el campo descrición,
dejando vacios los de fecha, y acepto.
Una vez hecho esto, edito ese mismos registro.
Me muestra la ventana insertar/editar.
Añado datos en los campos que antes dejé vacío. esto es,
fecha inicial y fecha final, doy a aceptar y NO ME LOS
GUARDA.
4)
Edito un registro que tiene datos en los campo fecha
, me muestra la ventana insertar/editar, modifico las
fechas, doy a aceptar, y
me guarda las modificaciones
.
==> Conclusión sólo me da problemas para modificar
campos date que inicialmente estaban vacíos o es null.
Este es el código SQL que tengo para ModifySQL del
IBDataSet:
Código SQL
[-]
update VTOS
set
CODVTO = :CODVTO,
DESCRIPCION = ESCRIPCION,
NUMGRUP = :NUMGRUP,
FECHAINI = :FECHAINI,
FECHAFIN = :FECHAFIN
where
CODVTO = :OLD_CODVTO and
NUMGRUP = :OLD_NUMGRUP and
FECHAINI = :OLD_FECHAINI
este el que tengo en el SelectSQL
Código SQL
[-]
select CODVTO, DESCRIPCION, NUMGRUP, FECHAINI,
FECHAFIN
from VTOS
where (NUMGRUP=:NUMGRUP)
and (CURRENT_DATE between FECHAINI and FECHAFIN)
order by NUMGRUP, CODVTO, fechaini
esto es lo que tengo en insertSQL:
Código SQL
[-]
insert into VTOS
(CODVTO, DESCRIPCION, NUMGRUP, FECHAINI,
FECHAFIN)
values
(:CODVTO, ESCRIPCION, :NUMGRUP, :FECHAINI,
:FECHAFIN)
El código asociado al botón que me inserta un nuevo registro es:
Código Delphi
[-]
procedure TFrmPagos.BitBtn2Click(Sender: TObject);
Var FrmVtos : TFrmVtos;
begin
screen.cursor := crHourGlass;
FrmVtos := TFrmVtos.Create(Self);
Screen.cursor := crDefault;
TRY
FrmDModule.TbVtosVna.Insert;
FrmVtos.ShowModal;
If FrmVtos.modalresult = mrOk Then Begin
FrmDModule.TbVtosVna.Post;
FrmDModule.TbVtosVna.Close;
FrmDModule.TbVtosVna.Open;
End Else Begin
FrmDModule.TbVtosVna.Cancel;
End;
FINALLY
FrmVtos.Free;
END;
end;
y el que tengo asociado al botón editar es:
Código Delphi
[-]
screen.cursor := crHourGlass;
FrmVtos := TFrmVtos.Create(Self);
Screen.cursor := crDefault;
TRY
FrmDModule.TbVtosVna.Edit;
FrmVtos.ShowModal;
if FrmVtos.modalresult = mrOk then begin
FrmDModule.TbVtosVna.Post;
FrmDModule.TbVtosVna.Close;
FrmDModule.TbVtosVna.Open;
end
else begin
FrmDModule.TbVtosVna.Cancel;
end;
FINALLY
FrmVtos.Free;
END;
Espero que ahora esté más claro cual es mi problema.
Gracias de ante mano a todos,
Virginia