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)
-   -   Dos aplicaciones una conexión (https://www.clubdelphi.com/foros/showthread.php?t=36193)

Ivano 04-10-2006 17:41:16

Dos aplicaciones una conexión
 
Buenas a tod@s

Tengo un problema que no se si alguién puede resolverme, a partir de una aplicación echa en delphi hago una llamada a una dll, las 2 acceden a la misma base de datos con BDE, hasta ahi no hay problema ya que cada una de ellas realiza una conexión independiente a la misma base de datos, lo que me piden es no realizar una conexión por aplicación sino que la primera aplicación (A) le pase a la segunda(B) que conexión utiliza y esta reutilizé la misma. Os preguntareis para que quiero eso, pos bién, para poder controlar desde el aplicatvo B una transacción iniciada desde el aplicativo A.

Atentamente.

ramiretor 04-10-2006 19:58:44

Hola
Como que no me quedó muy claro que es lo que quieres hacer, si la pregunta es "puedo pasarle parametros a una aplicacion Delphi desde otra aplicación Delphi", la respuesta es sí, Si la pregunta es "quiero hacer una conexión para correr dos aplicaciones pero que no inicien simultaneamente" la respuesta es, es probable.

Saludos

Ivano 05-10-2006 09:21:14

Si bién, la idea es hacer un "StartTransaction" en la primera aplicación, llamar a la segunda aplicación, que esta segunda realice las operaciones en base de datos que deba hacer(dentro de la transacción). Para poder realizar esto necesito mantener el mismo "conection" y ahi esta el tema, por ejemplo si el motor de base de datos al que accedes funciona por licencias en este caso yo querría realizar solo una conexión a base de datos(unal licencia):D ...

Neftali [Germán.Estévez] 05-10-2006 11:20:24

Busca acerca de "Connection Pool" en Delphi; No se si es exactamente lo que necesitas, pero va por ahí.
Échale un vistazo a este componente, aunque tal vez puedas encontrar algo similar Free.

Ivano 05-10-2006 11:32:01

Mushas gracias, he leído por encima las funcionalidades del componente y tiene buena pinta, seguiré investigando y si encuentro algo Free os lo dejo aquí.

Ivano 05-10-2006 17:44:23

Por fin conseguí que funcionase pese a que no utilicé el componente que aparentemente tenía buena pinta, pos bién lo que hice no fue más que pasarle el objeto TDatabase a la segunda aplicación via parametro como un pointer(la segunda aplicación es una DLL).

Definición Aplicación A:

TFuncionCall = function(P: Pointer) ;
funcCall: TFuncionCall;

Llamada de Aplicación A -> Aplicación B:

@funcCall := GetProcAddress(HandleDLL, 'FuncionCall');
result := funcCall(DataModule1.DB1);

al llegar a esta segunda aplicación (Aplicación B) realizo los siguientes pasos:

DataModule2.DB2 := P;
if DataModule2.DB2.InTransaction then
begin
-----
end;

El resultante son dos aplicaciones con un componente TDatabase cada uno apuntando a la misma conexión. De esta forma puedes consultar el estado de la conexión desde las dos aplicaciones y el numero de licencias conectadas al motor es solo uno.

Gracias y hasta otra.


La franja horaria es GMT +2. Ahora son las 09:17:57.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi