Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Go Back   Foros Club Delphi > Principal > Conexión con bases de datos
Register FAQ Members List Calendar Guía de estilo Search Today's Posts Mark Forums Read

Conexión con bases de datos

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 23/01/2008
Jose Roman Jose Roman is offline
Miembro
 
Join Date: Jul 2006
Location: Colombia
Posts: 364
Poder: 21
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.
Reply With Quote
  #2  
Old 23/01/2008
juanelo's Avatar
juanelo juanelo is offline
Miembro
 
Join Date: Sep 2007
Posts: 1,087
Poder: 20
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
Reply With Quote
  #3  
Old 23/01/2008
Jose Roman Jose Roman is offline
Miembro
 
Join Date: Jul 2006
Location: Colombia
Posts: 364
Poder: 21
Jose Roman Va por buen camino
Nada...

Se reporta el mismo error....
Reply With Quote
  #4  
Old 23/01/2008
jachguate's Avatar
jachguate jachguate is offline
Miembro
 
Join Date: May 2003
Location: Guatemala
Posts: 6,254
Poder: 30
jachguate Va por buen camino
Quote:
Originally Posted by juanelo View Post
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
Reply With Quote
  #5  
Old 23/01/2008
jachguate's Avatar
jachguate jachguate is offline
Miembro
 
Join Date: May 2003
Location: Guatemala
Posts: 6,254
Poder: 30
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
Reply With Quote
  #6  
Old 23/01/2008
Jose Roman Jose Roman is offline
Miembro
 
Join Date: Jul 2006
Location: Colombia
Posts: 364
Poder: 21
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;
Reply With Quote
  #7  
Old 23/01/2008
Luis M.'s Avatar
[Luis M.] Luis M. is offline
Miembro Premium
 
Join Date: Sep 2004
Location: Ripollet - Barcelona
Posts: 212
Poder: 22
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.
Reply With Quote
  #8  
Old 23/01/2008
jachguate's Avatar
jachguate jachguate is offline
Miembro
 
Join Date: May 2003
Location: Guatemala
Posts: 6,254
Poder: 30
jachguate Va por buen camino
Quote:
Originally Posted by Luis M. View Post
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
Reply With Quote
  #9  
Old 23/01/2008
Jose Roman Jose Roman is offline
Miembro
 
Join Date: Jul 2006
Location: Colombia
Posts: 364
Poder: 21
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.
Reply With Quote
  #10  
Old 23/01/2008
juanelo's Avatar
juanelo juanelo is offline
Miembro
 
Join Date: Sep 2007
Posts: 1,087
Poder: 20
juanelo Va por buen camino
Quote:
Originally Posted by jachguate View Post
¡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

Quote:
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 .
Reply With Quote
  #11  
Old 23/01/2008
jachguate's Avatar
jachguate jachguate is offline
Miembro
 
Join Date: May 2003
Location: Guatemala
Posts: 6,254
Poder: 30
jachguate Va por buen camino
Quote:
Originally Posted by juanelo View Post
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
Reply With Quote
  #12  
Old 23/01/2008
juanelo's Avatar
juanelo juanelo is offline
Miembro
 
Join Date: Sep 2007
Posts: 1,087
Poder: 20
juanelo Va por buen camino
Wink

Quote:
Originally Posted by jachguate View Post
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.
Reply With Quote
  #13  
Old 23/01/2008
jachguate's Avatar
jachguate jachguate is offline
Miembro
 
Join Date: May 2003
Location: Guatemala
Posts: 6,254
Poder: 30
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
Reply With Quote
  #14  
Old 23/01/2008
[egostar] egostar is offline
Registrado
 
Join Date: Feb 2006
Posts: 6,572
Poder: 27
egostar Va camino a la fama
Quote:
Originally Posted by juanelo View Post
PD: No es mi intencion polemizar ni seguir con este debate, es mi punto de vista y ya.
Quote:
Originally Posted by jachguate View Post
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
Reply With Quote
  #15  
Old 23/01/2008
eduarcol's Avatar
[eduarcol] eduarcol is offline
Miembro Premium
 
Join Date: Aug 2003
Location: En los estados Zulia y Merida de Venezuela
Posts: 4,151
Poder: 28
eduarcol Va por buen camino
Quote:
Originally Posted by egostar View Post
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

Last edited by eduarcol : 23/01/2008 at 22:43.
Reply With Quote
  #16  
Old 23/01/2008
[egostar] egostar is offline
Registrado
 
Join Date: Feb 2006
Posts: 6,572
Poder: 27
egostar Va camino a la fama
Quote:
Originally Posted by eduarcol View Post
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
Reply With Quote
  #17  
Old 23/01/2008
eduarcol's Avatar
[eduarcol] eduarcol is offline
Miembro Premium
 
Join Date: Aug 2003
Location: En los estados Zulia y Merida de Venezuela
Posts: 4,151
Poder: 28
eduarcol Va por buen camino
Quote:
Originally Posted by egostar View Post
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
Reply With Quote
Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Not In Edit Mode marceloalegre Varios 3 23/11/2012 20:18
Error ("not in edit or insert mode") en Update con ADOQuery miquellg SQL 8 16/05/2011 20:11
Dataset not in edit or insert mode :S si esta en append! Mannu C++ Builder 1 28/11/2007 09:52
ayuda novata: "Dataset not in Edit or Insert mode" maquicu Tablas planas 1 05/06/2004 09:40
Table1:Datase not in Edit o Insert Mode JamesBond_Mx Conexión con bases de datos 3 14/04/2004 23:19


All times are GMT +2. The time now is 10:08.


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