![]() |
No encuentro el evento adecuado
Saludos a todos,
mi problema es q tengo un procidimiento para cuando se cambie el valor de un campo actualice todas las filas de la tabla hacia el final de ella, el procidimiento lo tengo en un click de boton (para pruebas) y funciona perfectamente con el resultado deseado, el problema es q no encuentro el evento de la tabla, campo, o grid para q se ejecute de manera transparente al usuario, cuando lo pongo en el AfterScroll o OnUpdateChange o OnChange me da "Stack Overflow", en el OnDataChange ni si quiera se abre la aplicacion pq "cannot perform this action on a closed dataset", en el evento AfterPost o OnStateChange no se puede pq el procidimiento utiliza los metodos edit y next q llaman a post, bueno estoy hecho un lio y lo he probado de mil maneras pero na.., seguro q alguien tiene una idea brillante:) |
qué motor de bases de datos utilizas? Si te soporta los procedimientos almacenados, puedes probar con ellos
|
Hola:
En cualquier caso, si implementas desde Delphi cualquier acción en uno de esos eventos, es necesario que uses un semáforo (una variable boolean). El error de "Stack overflow" te salta porque en el OnChange haces modificaciones que a su vez disparan ese evento OnChange y así hasta el infinito ... o hasta quen se agota la memoria. Código:
actualizando : Boolean; // variable global al formulario |
Bueno, no sé como tienes implementado el código, pero ese Stack Overflow salta por provocarse un desbordamiento de la pila de la memoria y esto sucede cuando se incurre en algún tipo de bucle infinito de llamadas recursivas y algo parecido.
Comprueba que si el evento salta al producirse una determinada acción como por ejemplo indicas "AfterScroll o OnUpdateChange o OnChange " ese mismo evento se producirapor cada uno de las tuplas que estan desde la tupla donde se produce hasta el final y asi para cada uno de ellas. Suerte. |
En realidad no uso ningun motor pq uso la denominada MyBase con ClientDataSet, eso pq es una aplicacion para un negocio pequeño q el numero total de registros no pasara de los 6000 o 7000 como mucho, por eso decidi de usar (por primera vez) la MyBase, espero q me puedan ayudar, asias de antemano..
|
Pues te remito a lo comentado por el amigo Andrés
Cita:
|
La franja horaria es GMT +2. Ahora son las 08:57:59. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi