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)
-   -   Firedac: Conexión compartida en una dll (https://www.clubdelphi.com/foros/showthread.php?t=96693)

manelb 10-05-2024 00:06:35

Firedac: Conexión compartida en una dll
 
Saludos a todos.

En una aplicación, tengo algunos procesos desarrollados en módulos dll.
Los componentes de acceso a datos son Firedac y la base de datos Firebird 2.1

El cuerpo de la función de entrada en la dll, en un ejemplo rápido, es algo como esto:

Código Delphi [-]
function Inicio(Sender: TObject): Boolean; stdcall;
var
  qry: TFDQuery;
begin
  qry:= TFDQuery(sender);
  with Tdm.Create(nil) do
  try
    FDConnection.SharedCliHandle:= Qry.Connection.CliHandle;
    Ejecutar;
  finally
    free;
  end;
  result:= true;
end;

Donde FDConnection es un componente TFDConection situado en un módulo de datos y el parámetro sender de entrada es un FDQuery.
En el módulo de datos existe además otro FDQuery para realizar consultas y conectado a este FDConnection.

La manera de compartir la conexión de esta forma con la libreria, esta sacada de la siguiente ayuda de delphi
https://docwiki.embarcadero.com/Libr...haredCliHandle

El sistema lo utilizo desde hace tiempo con muy buenos resultados.
El problema que se me presenta en esta ocasión es que el sender(TFDQuery) que pasamos como parámetro tiene modificaciones aceptadas pero no confirmadas.
No se ha echo aún un commit.


El procedimiento Ejecutar debe leer de la base de datos algunos de estos cambios no confirmados, pero no es así y lee la versión antigua de los registros.
Según el enlace anterior,
Cita:

After setting Connected to True for this connection, it will use the same physical DBMS connection or session as the other connection, and it will share the same transaction state.
por lo que entiendo que no deberia sucederme esto.
Si utiliza la misma transacción deberia tener acceso a las modificaciones no confirmadas.

Alguien puede darme algun consejo?
Alguien utiliza algún sistema similar?

Sé que no és la manera idónea de utilizar librerias en delphi, pero de momento és lo que tengo.

Gracias por vuestra atención.
Cualquier comentario se agradece
Un saludo


La franja horaria es GMT +2. Ahora son las 11:25:22.

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