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
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 SET TERM ^ ; ALTER PROCEDURE MSG_MISEAJOUR (NOMDUMESSAGE VARCHAR(127) ) AS BEGIN POST_EVENT NomDuMessage; END ^ SET TERM ;
Si vous avez des explications, des exemples, des liens, je suis preneur.
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;
Merci de vos réponses.
Partager