Hola estoy haciendo un sistema para un consultorio pediátrico, trabajo con BD SQL, motor Firebird y con Delphi, cuando hago un alta con este código:
Código Delphi
[-]begin
Try
DM.DSET_pacESTADO.Value:=0;
DM.DSET_pacMESES.Value:=0;
if (DM.DSET_pacAPELLIDO_Y_NOMBRE.Value='')then
begin
ShowMessage('Verifica que hay campos obligatorios que no están cargados');
DM.DSET_pac.Cancel;
DM.Transaccion.RollbackRetaining;
end;
if(DM.DSET_pacTIPO_DOCUMENTO.Value='')then
begin
ShowMessage('Verifica que hay campos obligatorios que no están cargados');
DM.DSET_pac.Cancel;
DM.Transaccion.RollbackRetaining;
end;
if(DM.DSET_pacNUMERO_DOCUMENTO.Value='')then
begin
ShowMessage('Verifica que hay campos obligatorios que no están cargados');
DM.DSET_pac.Cancel;
DM.Transaccion.RollbackRetaining;
end;
if(DM.DSET_pacFECHA_DE_NACIMIENTO.Value=null)then
begin
ShowMessage('Verifica que hay campos obligatorios que no están cargados');
DM.DSET_pac.Cancel;
DM.Transaccion.RollbackRetaining;
end;
if(DM.DSET_pacSEXO.Value='')then
begin
ShowMessage('Verifica que hay campos obligatorios que no están cargados');
DM.DSET_pac.Cancel;
DM.Transaccion.RollbackRetaining;
end;
if(DM.DSET_pacDIRECCION.Value='')then
begin
ShowMessage('Verifica que hay campos obligatorios que no están cargados');
DM.DSET_pac.Cancel;
DM.Transaccion.RollbackRetaining;
end;
if(DM.DSET_pacNUM_DIR.Value=0)then
begin
ShowMessage('Verifica que hay campos obligatorios que no están cargados');
DM.DSET_pac.Cancel;
DM.Transaccion.RollbackRetaining;
end;
if(DM.DSET_pacPROFESIONAL.Value=null)then
begin
ShowMessage('Verifica que hay campos obligatorios que no están cargados');
DM.DSET_pac.Cancel;
DM.Transaccion.RollbackRetaining;
end;
DM.DSET_pacID_PROF.Value:=DM.DSET_profID_PROF.Value;
DM.DSET_pacID_COBER.Value:=DM.DSET_cob_medID_COBER.Value;
DM.DSET_pacID_LOC.Value:=DM.DSET_locID_LOC.Value;
DM.DSET_num.Edit;
DM.DSET_numTIPO.Value:='H';
DM.DSET_numCOMENTARIO.Value:='HISTORIA CLINICA';
DM.DSET_numNUMERO.Value:=DM.DSET_numNUMERO.Value + 1;
DM.DSET_pacNUMERO_HISTORIA_CLINICA.Value:=DM.DSET_numNUMERO.Value;
DM.DSET_pac.Post;
DM.DSET_num.Post;
DM.Transaccion.CommitRetaining;
DM.DSET_pac.Append;
ape_nom_pac_a.SetFocus;
except
ShowMessage('No se puede ingresar un registro en blanco');
DM.DSET_pac.Cancel;
DM.Transaccion.RollbackRetaining;
end;
end;
Donde DM= Data Module, DSET_pac= tabla paciente.
El problema que tengo es que cuando lo quiero correr me tira el error: 'Not in edit mode' y no puedo localizar en donde está el error, desde ya muchas gracias por la ayuda y en caso de alguna duda estoy dispuesta a responder por si no se entiende mi pregunta.