Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   BeginTrans con UpdateBatch (https://www.clubdelphi.com/foros/showthread.php?t=81506)

Cabanyaler 20-11-2012 17:52:57

BeginTrans con UpdateBatch
 
Hola a todos.
¿Es una burrada hacer esto?.


Código Delphi [-]
 
    try
       DModule.ADOConexion.BeginTrans;
       DModule.ADOSP_Lineas_UC.UpdateBatch();
       DModule.ADOSP_Lineas_MAT.UpdateBatch();
       DModule.ADOSP_Lineas_CCAA.UpdateBatch();
       DModule.ADOConexion.CommitTrans;
    except
         on E:Exception do
         begin
             DModule.ADOConexion.RollBackTrans;
             MessageDlg ('ERROR!!!.', mtError, [mbYes], 0);
         end; 
    end;

Trabajo contra SQL Server, y la aplicación (en ocasiones), al hacer unas modificaciones me dá error, en otras funciona correctamente :

Access violation at address 004BFFF5F in module 'Programa.exe'. Read of address 00000000

Los Dataset denominados ADOSP_Lineas...... en su propiedad LockType está como ltBatchOptimistic

Gracias.

Faust 20-11-2012 23:03:04

Al parecer el error de Access Violation te está indicando que en algún momento tratas de hacer referencia a un objeto que aún no está creado, depura línea por línea y dinos dónde te salta el error ^\||/

Cabanyaler 21-11-2012 08:49:58

Cita:

Empezado por Faust (Mensaje 450024)
Al parecer el error de Access Violation te está indicando que en algún momento tratas de hacer referencia a un objeto que aún no está creado, depura línea por línea y dinos dónde te salta el error ^\||/

Si, eso he podido averiguar leyendo varios hilos del foro, y sobre esa línea voy a investigar.
Lo malo es que como el error me indican es sólo en ocasiones no puedo hacer una depuración automática con el Debugger línea a línea. Debo hacer la traza del programa leyendo código.
A ver si encuentro algo y lo cuento.
Gracias.

Cabanyaler 21-11-2012 13:35:21

EFECTIVAMENTE!!!! El fallo de violation, se producía por hacer referencia a un objeto que no existe en el momento de la referencia al mismo.
Pillado y solucionado.

PEEERO, mi pregunta sigue en el aire:
¿Sirve de mucho, de poco o de algo poner UpdateBatch() entre try.. except?


Gracias.

Faust 21-11-2012 16:11:34

Cita:

Empezado por Cabanyaler (Mensaje 450059)
EFECTIVAMENTE!!!! El fallo de violation, se producía por hacer referencia a un objeto que no existe en el momento de la referencia al mismo.
Pillado y solucionado.

PEEERO, mi pregunta sigue en el aire:
¿Sirve de mucho, de poco o de algo poner UpdateBatch() entre try.. except?


Gracias.

Pues yo hasta ahora no he usado transacciones de esa manera... tan solo como lo indico en este hilo http://www.clubdelphi.com/foros/showthread.php?t=68031, el try... except evita que dejes la transacción abierta más bien creo que la pregunta debería ser ¿Sirve de mucho, de poco o de algo poner UpdateBatch() en una transacción abierta de ese modo? no sé la respuesta, pero esperemos si alguien la responde...

Saludos

Cabanyaler 22-11-2012 10:55:27

Cita:

Empezado por Faust (Mensaje 450071)
.... más bien creo que la pregunta debería ser ¿Sirve de mucho, de poco o de algo poner UpdateBatch() en una transacción abierta de ese modo? no sé la respuesta, pero esperemos si alguien la responde...

Saludos

Correcto, esa is the question.


La franja horaria es GMT +2. Ahora son las 18:14:09.

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