Bonjour à tous

J’ai pratiquement le même post Forum Lazarus

Je suppose que ce n’était pas le bon forum, en fait, je ne sais pas si ça vient de Firebird ou de la programmation dans Lazarus (quasi-Delphi) que j’utilise pour mon codage ou même un problème de réseau.

J’ai simplement un souci avec l’ événement de FireBird, l’application qui envoie le message, le reçois également, ce qui n’est pas prévu à l’origine, vu les liens ci-dessous.

Lien concernant TFBEventMonitor:https://wiki.freepascal.org/TFBEventMonito

Lien sur la présentation des événements:https://firebirdsql.org/file/documen...ird_events.pdf

J’utilise Windows10 64 bits avec:
Lazarus 2.0.12, avec compilation en 32bits, FPC 3.2.0
FireBird-3.0.10.33601_0_Win32

Les composants utilisés pour l’application:
TIBConnection
TSQLTransaction
TFBEventMonitor
TSQLQuery
TDataSource

Je crée une application qui puisse fonctionner en réseau, pour mes essais, j’utilise un réseau créé avec VirtualBox avec Win XP ou Win10.

Dans le fichier «firebird.conf» de Firebird, j’ai mis ceci

RemoteAuxPort = 4050
ServerMode = Super

Dans l’application j’utilise une procédure stockée qui envoie l’évènement

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
SET TERM ^ ;
ALTER PROCEDURE MSG_MISEAJOUR (NOMDUMESSAGE VARCHAR(127) )
AS
BEGIN
  POST_EVENT NomDuMessage;
END
^
SET TERM ;
Dans l’application voici la procédure qui exécute la procédure stockée, il y a une autre connection afin de recevoir le message.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
procedure TData.EnvoieMsgFireBird(NomDuMessage:string);
begin
if not getBaseEmbedded_presente then // pas en réseau, pas besoin de message
begin
   try
      IBConnection1.Open;
      IBConnection1.ExecuteDirect('execute PROCEDURE Msg_MiseAJour '''+NomDuMessage+''';');
      IBConnection1.Transaction.Commit;
   except
      on E:Exception do
        begin
         erreur('L''information de mise à jour de FireBird à échouée.'+crlf+crlf+E.message);
         RollbackTransaction(SQLQueryScript);
        end;
     end;
end;
end;
Si vous avez des explications, des exemples, des liens, je suis preneur.
Merci de vos réponses.