Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-11-2011
y_a_p y_a_p is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 37
Poder: 0
y_a_p Va por buen camino
'Not in edit mode'

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.

Última edición por Casimiro Notevi fecha: 10-11-2011 a las 22:59:36.
Responder Con Cita
  #2  
Antiguo 10-11-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.056
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración.

Y recuerda poner el código entre etiquetas, ejemplo:



.
Responder Con Cita
  #3  
Antiguo 10-11-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
esta tabla... donde colocas el edit???

Dm.dSET_pac.EDIT ????? donde????
Código Delphi [-]
DM.DSET_pac.Post;

para determinar la linea con error puedes colocar un break point y desde ahi ejecutyar presionando la tecla F8
__________________
Dulce Regalo que Satanas manda para mi.....

Última edición por oscarac fecha: 10-11-2011 a las 23:07:03.
Responder Con Cita
  #4  
Antiguo 10-11-2011
y_a_p y_a_p is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 37
Poder: 0
y_a_p Va por buen camino
Lightbulb

Olvide especificarles que en el OnShow del form tengo un append...
Responder Con Cita
  #5  
Antiguo 10-11-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
entonces ejecuta el programa con f8 y ahi vas revisando paso a paso
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #6  
Antiguo 10-11-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Probá agregando esta línea:
Código Delphi [-]
begin
 Try
  DM.DSET.Edit; // poner en modo edición antes de asignar valores
  DM.DSET_pacESTADO.Value:=0;
  DM.DSET_pacMESES.Value:=0;
  ...

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 11-11-2011
MartinS MartinS is offline
Miembro
NULL
 
Registrado: nov 2011
Ubicación: Villa Cacique - Argentina
Posts: 283
Poder: 13
MartinS Va por buen camino
A simple vista creo que si el programa no ingresa en alguno de los condicionales no hay inconvenientes pero si llegara a entrar en solo uno cancelas la edicion
Código Delphi [-]
 
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;
y luego queres asignar un valor a un Dataset cerrado para edicion

Código Delphi [-]
  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;
entonces ahi salta el error...

completa todos los campos y hace un seguimiento como sugiere oscarac (F8) y otro sin completar alguno para ver los resultados y veremos....
Responder Con Cita
  #8  
Antiguo 11-11-2011
y_a_p y_a_p is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 37
Poder: 0
y_a_p Va por buen camino
Hola desde ya muchas gracias por responder, si se hacer el seguimiento con el F8 y de hecho lo he intentado hacer, pero directamente ni correr el programa... Muchas gracias!
Responder Con Cita
  #9  
Antiguo 11-11-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
Cita:
Empezado por y_a_p Ver Mensaje
Hola desde ya muchas gracias por responder, si se hacer el seguimiento con el F8 y de hecho lo he intentado hacer, pero directamente ni correr el programa... Muchas gracias!
disculpar... pero mi no saber que tu querer decir con esta frase...
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #10  
Antiguo 14-11-2011
y_a_p y_a_p is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 37
Poder: 0
y_a_p Va por buen camino
Que no funciona el ejecutable porque cuando lo corro al programa me tira el error antes de de que se ejecute...
Responder Con Cita
  #11  
Antiguo 14-11-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
La tabla DSET_pac no esta abierta, por eso envia el error.
No puedes introducir datos a una tabla cerrada.
Aqui:
Código Delphi [-]
Try
  DM.DSET_pacESTADO.Value:=0;
  DM.DSET_pacMESES.Value:=0;
Estas diciendo que el estado y esl mes son iguales a 0, pero no esta abierta la tabla.
De ahi en eadelante se quieren indicar datos sin mostrar ni linea ni contenido y comparacion.
Osea, asi no funciona.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #12  
Antiguo 14-11-2011
y_a_p y_a_p is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 37
Poder: 0
y_a_p Va por buen camino
Muchísima gracias por todas sus ayudas, pero ya lo solucione, el error me tiraba aquí:
Código Delphi [-]
DM.DSET_pacEDAD.Value:=YearsBetween(Now, DM.DSET_pacFECHA_DE_NACIMIENTO.Value);
 DM.DSET_pacMESES.Value:=MonthsBetween(Now, DM.DSET_pacMESES.Value);
porque yo quería modificar la tabla DSET_pac dentro de un evento OnChange de un DBEdit y no había puesto la tabla en modo de edición, la solución es:
Código Delphi [-]
 DM.DSET_pac.Edit;
 DM.DSET_pacEDAD.Value:=YearsBetween(Now, DM.DSET_pacFECHA_DE_NACIMIENTO.Value);
 DM.DSET_pacMESES.Value:=MonthsBetween(Now, DM.DSET_pacMESES.Value);
y luego me marco otra vez el mismo error pero haciendo el seguimiento, me faltaba poner en edición la tabla (DSET_pac):
Código Delphi [-]
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_pac.Edit;
  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;
lo que agrege y me realiza bien todo lo que deseo.
Pero igual agradezco su tiempo...
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Not In Edit Mode marceloalegre Varios 3 23-11-2012 20:18:14
'Not in edit mode' JairoC Varios 5 29-10-2011 04:10:58
Not in edit mode KAYO Firebird e Interbase 5 22-06-2010 18:24:37
Not Edit Mode y IBquery kverna Conexión con bases de datos 2 06-03-2008 15:40:32
Error - Not in edit mode Jose Roman Conexión con bases de datos 16 23-01-2008 23:09:29


La franja horaria es GMT +2. Ahora son las 12:45:39.


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