Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) ,D11 (Alexandria)
SGBD : Firebird 2.5, 3, SQLite
générateurs Etats : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, 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èrementje 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;
Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) ,D11 (Alexandria)
SGBD : Firebird 2.5, 3, SQLite
générateurs Etats : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, 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