Ver Mensaje Individual
  #6  
Antiguo 31-05-2004
Giniromero Giniromero is offline
Miembro
 
Registrado: may 2003
Ubicación: Madrid
Posts: 296
Reputación: 22
Giniromero Va por buen camino
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 que genera un nuevo vencimiento en TbVtos
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  //FIN DE if salimos con OK del modal
        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
__________________
Sonrie al mundo, y el mundo te sonreirá :)
Responder Con Cita