Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo Hace 9 Horas
manelb manelb is offline
Miembro
 
Registrado: mar 2017
Posts: 281
Poder: 8
manelb Va por buen camino
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
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Error de conexión a Firebird con FireDAC socger Conexión con bases de datos 1 20-01-2019 15:04:46
Cadenas de Conexion ADO Vs Firedac oscarac OOP 2 06-09-2017 15:48:20
Error de conexion con FireDAC y Firebird 3 GustavoCruz Firebird e Interbase 7 09-02-2017 17:49:17
conexion compartida con limitaciones seara2005 Redes 3 26-04-2007 06:09:41
Conexion a unidad de red compartida maikeloh API de Windows 0 20-03-2007 19:54:25


La franja horaria es GMT +2. Ahora son las 09:19:35.


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
Copyright 1996-2007 Club Delphi