Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-01-2008
Jose Roman Jose Roman is offline
Miembro
 
Registrado: jul 2006
Ubicación: Colombia
Posts: 361
Poder: 18
Jose Roman Va por buen camino
Error - Not in edit mode

Hola a todos, Tengo Delphi 7, Firebird 2.0, MDO, un form con sus respectivos DBEdit, DataSourge, DBNavigator. La tabla de datos TIngreso esta vacia, doy clic a insertar, pero al momento de cerrar el form sin dar clic en cancelar aparece este error , que hago para que no aparezca este error si yo deseo que al momento de cerrar la aplicacion cuando mi dataset esta en dsInsert o dsEdit se pueda cancelar desde codigo, yo aplique en el evento FormClose lo siguiente:

If fbDataSet.State in dsEditModes then fbDataSet.Cancel;
trLocal.Commit;
Action := caFree;

Y aun asi sale este error, cabe notar que si estoy en modo Inser o Edit y doy clic a cancel en el DBNavigator no lo genera, y necesito cancelar cualquier cambio si el cliente cierra el form.
Responder Con Cita
  #2  
Antiguo 23-01-2008
Avatar de juanelo
juanelo juanelo is offline
Miembro
 
Registrado: sep 2007
Posts: 1.083
Poder: 18
juanelo Va por buen camino
Que tal José Román,
Creo que tu error está en:

Código Delphi [-]
 If fbDataSet.State in dsEditModes then fbDataSet.Cancel;
 trLocal.Commit; // <-- Aquí
 Action := caFree;

Ya no tiene sentido hacer commit si tus modificaciones o inserciones se cancelaron.

Saludos
Responder Con Cita
  #3  
Antiguo 23-01-2008
Jose Roman Jose Roman is offline
Miembro
 
Registrado: jul 2006
Ubicación: Colombia
Posts: 361
Poder: 18
Jose Roman Va por buen camino
Nada...

Se reporta el mismo error....
Responder Con Cita
  #4  
Antiguo 23-01-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Cita:
Empezado por juanelo Ver Mensaje
Que tal José Román,
Creo que tu error está en:

Código Delphi [-]
 If fbDataSet.State in dsEditModes then fbDataSet.Cancel;
 trLocal.Commit; // <-- Aquí
 Action := caFree;

Ya no tiene sentido hacer commit si tus modificaciones o inserciones se cancelaron.

Saludos
¡claro que tiene sentido!, solo por decir un par de casos que se me ocurren:
  • Si el nivel de aislamiento de tu transacción es "Repetable read" o "serializable" que es lo mismo, y requerís obtener información "fresca" en tu siguiente select.
  • Que tal si la aplicación correrá sin parar durante un año, no querras que tu Oldest Transaction en el servidor sea tan viejo... y tener todas las versiones de todos los registros solo por eso... si la base de datos tiene unos cuantos miles de registros, y unos cuantos millones de updates en el transcurso de un año (una tabla de existencias, es un buen ejemplo). ¡el tamaño de la base de datos sería monstruoso!

Te recuerdo que también los select's y no no solo los insert/update/delete corren en el contexto de una transacción.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #5  
Antiguo 23-01-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Jose Roman: ¿En cual de las líneas que mostras ocurre la excepción?
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #6  
Antiguo 23-01-2008
Jose Roman Jose Roman is offline
Miembro
 
Registrado: jul 2006
Ubicación: Colombia
Posts: 361
Poder: 18
Jose Roman Va por buen camino
Question

If fbDataSet.State in dsEditModes then fbDataSet.Cancel; No entiendo porque, realizo clic en el boton Insert o Edit del DBNavigator, si realizo click en el boton Cancel y cierro el Form no hay error, pero si el DataSet esta en modo Insert o Edit y lo cierro aparece el error, indicandole lo que se debe realizar en el evento OnClose;
Responder Con Cita
  #7  
Antiguo 23-01-2008
Avatar de Luis M.
[Luis M.] Luis M. is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Ripollet - Barcelona
Posts: 212
Poder: 20
Luis M. Va por buen camino
Solo por curiosidad.
No tendrás ningún código en BeforeCancel o AfterCancel del Dataset que
asignes algún valor.

Un saludo.
Responder Con Cita
  #8  
Antiguo 23-01-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Cita:
Empezado por Luis M. Ver Mensaje
Solo por curiosidad.
No tendrás ningún código en BeforeCancel o AfterCancel del Dataset que
asignes algún valor.

Un saludo.
Es una buena posibilidad.

Me pregunto si lo has ejecutado paso a paso o solamente estas suponiendo que esa es la línea que produce el error.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #9  
Antiguo 23-01-2008
Jose Roman Jose Roman is offline
Miembro
 
Registrado: jul 2006
Ubicación: Colombia
Posts: 361
Poder: 18
Jose Roman Va por buen camino
Ya encontre el error..

Encontre el error. El error radica en el evento OnExit de un DBEdit, en el cual le asigno un valor a un campo, mas no le informaba que debia asignarle el valor solo cuando esta en modo de Insert o Edit.
Responder Con Cita
  #10  
Antiguo 23-01-2008
Avatar de juanelo
juanelo juanelo is offline
Miembro
 
Registrado: sep 2007
Posts: 1.083
Poder: 18
juanelo Va por buen camino
Cita:
Empezado por jachguate Ver Mensaje
¡claro que tiene sentido!, solo por decir un par de casos que se me ocurren:
  • Si el nivel de aislamiento de tu transacción es "Repetable read" o "serializable" que es lo mismo, y requerís obtener información "fresca" en tu siguiente select.
  • Que tal si la aplicación correrá sin parar durante un año, no querras que tu Oldest Transaction en el servidor sea tan viejo... y tener todas las versiones de todos los registros solo por eso... si la base de datos tiene unos cuantos miles de registros, y unos cuantos millones de updates en el transcurso de un año (una tabla de existencias, es un buen ejemplo). ¡el tamaño de la base de datos sería monstruoso!
Te recuerdo que también los select's y no no solo los insert/update/delete corren en el contexto de una transacción.

Hasta luego.

Que tal,
Yo respondo en el contexto en que el amigo Jose Roman hace su pregunta

Cita:
Hola a todos, Tengo Delphi 7, Firebird 2.0, MDO, un form con sus respectivos DBEdit, DataSourge, DBNavigator. La tabla de datos TIngreso esta vacia
Entonces no creo que su tabla tenga un millón de registros ni mucho menos .
Responder Con Cita
  #11  
Antiguo 23-01-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Cita:
Empezado por juanelo Ver Mensaje
Que tal,
Yo respondo en el contexto en que el amigo Jose Roman hace su pregunta

Entonces no creo que su tabla tenga un millón de registros ni mucho menos .
Jose Roman dice que actualmente la tabla está vacia. No dice cuantos datos tendrá en el futuro.

Si programasemos las aplicaciones pensando solamente en que cuando se instalan, normalmente la gran mayoría de las tablas están vacias... no quiero imaginarme el desempeño y los resultados cuándo esas aplicaciones tengan unos cuantos años en producción...
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #12  
Antiguo 23-01-2008
Avatar de juanelo
juanelo juanelo is offline
Miembro
 
Registrado: sep 2007
Posts: 1.083
Poder: 18
juanelo Va por buen camino
Wink

Cita:
Empezado por jachguate Ver Mensaje
Jose Roman dice que actualmente la tabla está vacia. No dice cuantos datos tendrá en el futuro.

Si programasemos las aplicaciones pensando solamente en que cuando se instalan, normalmente la gran mayoría de las tablas están vacias... no quiero imaginarme el desempeño y los resultados cuándo esas aplicaciones tengan unos cuantos años en producción...
Estoy de acuerdo, pero tambien hay que saber hacer lo que el cliente en realidad quiere, recuerdo muy bien una serie de imagenes en la cual un cliente solicita que se le contruya un columpio, y el programador termino contruyendo una montaña rusa con una llanta a modo de balancin. ¿Esta era su verdadera necesidad del usario?.
El problema que tenemos a veces es pensar en lugar del usuario, y le presentamos soluciones que van mas alla de sus necesidades.

En ninguna parte del mensaje del compañero Jose Roman menciono que su aplicacion es 24x7x365 con transacciones cada 1/2 segundo, etc ... Creeme que que si lo hubiese mencionado otra cosa hubiera sido.

PD: No es mi intencion polemizar ni seguir con este debate, es mi punto de vista y ya.
Responder Con Cita
  #13  
Antiguo 23-01-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Estoy de acuerdo en no buscar la polémica.

Normalmente no hago afirmaciones solamente en el contexto del hilo, pues la idea es que lo que acá se dice sea leido por mas gente, ahora y en el futuro, por lo que mejor si es útil para muchos.

Lamento la desviación al tema original.
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #14  
Antiguo 23-01-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por juanelo Ver Mensaje
PD: No es mi intencion polemizar ni seguir con este debate, es mi punto de vista y ya.
Cita:
Empezado por jachguate Ver Mensaje
Estoy de acuerdo en no buscar la polémica.
Debate, debate, debate !!!!!

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #15  
Antiguo 23-01-2008
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
Cita:
Empezado por egostar Ver Mensaje
Debate, debate, debate !!!!!

Salud OS
Sereno Moreno,
Ya Egostar, calma, relajate, a ver respira conmigo 1,2,3...
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela

Última edición por eduarcol fecha: 23-01-2008 a las 22:43:28.
Responder Con Cita
  #16  
Antiguo 23-01-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por eduarcol Ver Mensaje
Sereno Moreno,
Ya Egostar, calma, relajate, a ver respira conmigo 1,2,3...
Epa eduarcol, eres un desvirtuador de hilos ya no se puede confiar en nadie......
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #17  
Antiguo 23-01-2008
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
Cita:
Empezado por egostar Ver Mensaje
Epa eduarcol, eres un desvirtuador de hilos ya no se puede confiar en nadie......
Pero si yo solo estoy evitando que la sangre llegue al rio
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
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
Error ("not in edit or insert mode") en Update con ADOQuery miquellg SQL 8 16-05-2011 20:11:07
Dataset not in edit or insert mode :S si esta en append! Mannu C++ Builder 1 28-11-2007 09:52:18
ayuda novata: "Dataset not in Edit or Insert mode" maquicu Tablas planas 1 05-06-2004 09:40:27
Table1:Datase not in Edit o Insert Mode JamesBond_Mx Conexión con bases de datos 3 14-04-2004 23:19:44


La franja horaria es GMT +2. Ahora son las 07:38:08.


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