MVP Embarcadero
Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
SGBD : Firebird 2.5, 3, SQLite
générateurs États : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd
Non mais c'est carrément bon.
Ca me ramène bien le numéro de transaction de chacune des instances de l'appli en cours d'exécution.
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
19 with QryNumTr, SQL do begin Connection := Qry.Connection; // Text := 'SELECT t.MON$TRANSACTION_ID ' + // 'FROM MON$TRANSACTIONS t JOIN MON$ATTACHMENTS a ON t.MON$ATTACHMENT_ID = a.MON$ATTACHMENT_ID ' + // 'WHERE a.MON$STATE = 1 AND a.MON$REMOTE_PROCESS = ' + QuotedStr(Application.ExeName) //a.MON$SYSTEM_FLAG = 0 AND // ; Text := 'SELECT CURRENT_TRANSACTION FROM RDB$DATABASE'; // SaveToFile(ExtractFilePath(Application.ExeName) + '\SQL.txt'); end; with Qry, SQL do begin try QryTr.StartTransaction; QryNumTr.Open; NumTransac := QryNumTr.Fields[0].AsInteger; ShowMessage(IntToStr(NumTransac));
Sergio je t'aime tellement très fort.
Du coup à ma grande honte, je dois reconnaître que ma question était mal posée et ne pouvait pas conduire à la réponse finale
Si j'arrêtais de me faire bannir régulièrement je prendrais la peine de m'enregistrer une jolie citation comme vous :
"Quand on sait poser une question parfaitement, c'est qu'on a déjà la réponse".
Finalement la solution était bien CURRENT_TRANSACTION comme je l'avais proposé et dire que j'ai jamais fait de FireDAC ni de FireBird.
En fait, tu dois TE poser la bonne question, et Google répondra !
Le forum ne donne des réponses qu'au question que l'on a pas su exprimer.
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
Attention Troll Méchant !
"Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
L'ignorance n'excuse pas la médiocrité !
L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
Il faut avoir le courage de se tromper et d'apprendre de ses erreurs
Oui mais en fait, carrément ShaiLeTroll. J'étais scotché à la fausse évidence, que la requête devait forcément être explicitement liée à l'application ou, au moins, à la transaction.
Je n'étais pas psychologiquement prêt à voir que ta solution était la bonne.
Je t'aime aussi
Pis, si ça se trouve, c'est même pas ça qui me fallait . Non, j'rigole (enfin j'espère que c'est ça )
Pas d'accord tel que le code est écrit il faut simplifier
en admettant que Qry soit bien lié à un FDtransaction nommé tr (transaction différente de celle par "défaut" de la fdConnexion, et bien sûr que le SQL soit indiqué dans qry
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Tr.StartTransaction; var nt : integer :=fdConnection1.ExecSQLScalar('Select CURRENT_TRANSACTION From RDB$DATABASE'); Qry.Close; Qry.ParamByName('transaction').asInteger:=QryNumTr.Fields[0].AsInteger; Qry.Open;
MVP Embarcadero
Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
SGBD : Firebird 2.5, 3, SQLite
générateurs États : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd
N'as-tu jamais été tenté d'utiliser un "self" dans un "with" pensant que c'était sur l'instance de l'objet que tu utilisais ?
N'as-tu jamais eu "besoin" d'imbriquer deux trucs en "with" et de vouloir utiliser un pointeur vers l'englobant dans le second, genre pour alimenter un ".parent" ?
Tu as de la chance. ;-)
(ou alors tu t'en sers correctement, j'hésite)
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager