PDA

Ver la Versión Completa : El procemiento Abort me inicia nuevamente el evento!!


Chogo
07-03-2007, 18:52:17
Hola, gracias por tomar tiempo en ver este hilo, el problema que tengo, es quiero validar el evento beforepost en un adotable, estoy usando Delphi 7 con ado+access

Cuando ejecuto el abort, no cancela el evento si no que lo reinicia y cuando vuelve nuevamente a encontra el abort. ahi si lo ejecuta.
por ejemplo este es el codigo que tengo, estoy probando.

procedure TDataModule1.ATDetailSalidaProductoBeforePost(DataSet: TDataSet);
begin
ShowMessage('Por que aparece este mensaje dos veces');
abort;

end;




Extrañamene aparece dos!!!:confused: veces el mensaje.

Saludos

dec
07-03-2007, 19:01:14
Hola,

Por decir algo... ¿probaste de este modo?


procedure TDataModule1.ATDetailSalidaProductoBeforePost(DataSet: TDataSet);
begin
abort;
ShowMessage('Por que aparece este mensaje dos veces');
end;

jhonny
07-03-2007, 19:01:26
¿No habrá otro lugar donde estés disparando dicho evento y que tal vez ese lugar tenga un try..finally o algo por el estilo?

Chogo
07-03-2007, 19:17:41
amigo Dec, probe lo que describes, y lo veo con el debuger como el cursor del debuger se posiciona dos veces en el abort.

jhonny, lo que dices me parece razonable pero a nivel de codigo no hay ningun lugar donde lo este llamando el evento, talvez lo coloque por accidente en algun evento de algun objecto.

pero no veo donde.

roman
07-03-2007, 19:24:55
Yo creo que el evento se está generando dos veces porque dos veces se está intentando hacer un post. Quizá haces explícitamente el post pero ya antes se movió el cursor de registro, lo cual provocaría el post.

Posiblemente te ayude de algo colocar un punto de ruptura (F5) en la primera línea del evento, y examinar el stack de llamadas (View|Debug Windows|Call Stack) para intentar ver desde dónde se está llamando al evento.

// Saludos

jhonny
07-03-2007, 19:27:14
Seguramente no necesariamente tienes que llamarlo tu para que se dispare, osea no necesariamente tienes que hacer algo como:
ATDetailSalidaProductoBeforePost(ATDetailSalidaProducto);
Podría ser que al hacer por ejemplo un:
ATDetailSalidaProducto.Next; //O cualquiera similar, llamese Last, Prior, etc...

O quizá también lo tienes en alguna Grid y ella se encargaría de hacer pos .Post al mover el cursor y bueno pues alguna cosa por el estilo debe estar haciendo que este evento se ejecute dos veces.

Chogo
07-03-2007, 20:22:31
eh notado que pasa en todos los eventos beforepost de mis adotable:confused:, no si sera algo en el delphi, alguno configuracion o se habra instalado mal.
sospecho de un grid que uso en mi proyecto, smdbgrid que pertenece a los smcomponets.:confused:

luisgutierrezb
07-03-2007, 23:53:13
Pues los Ado no creo, yo eh usado los ado con access y SQL server en delphi 5 y 7 y nunca eh tenido el problema que mencionas, a menos que sea otra version de delphi... o con otra version del mdac, uso la 2.8

source_code
08-03-2007, 00:55:07
ojito con los grids,
a veces para renderizarse mueven el dataset y si detectan algún cambio intentan hacer el post,
como bien dijo mi amigo roman, prueba a ver si pasa por el afterscroll para ver si se mueve el dataset,
un saludo.

Chogo
08-03-2007, 22:31:02
Toda via no resuelvo este problema tengo dos dias y no se que pasa:(.
le pase a un amigo que programa en delphi, usamos la misma version con los mismo controles, la misma version de windows y el mismo proyecto y a el le funciona todo bien :confused:.

algunas luz por favor, esta estoy pensando en formatear mi maquina por ya no se que hacer.

Chogo
09-03-2007, 18:21:57
Ayer formate mi maquina no tube resultados, probe de depurar viendo el call stack. y veo que el abort llama al evento beforepost.