IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bases de données Delphi Discussion :

Récupérer le transaction ID avec le TFDTransaction


Sujet :

Bases de données Delphi

  1. #21
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 036
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par DOliv Voir le message
    Remets-toi Sergio, bien sûr qu'il y a des try finally
    Autant alors que ce soit bien écrit
    Quant à la légende des with qui créeraient des bugs, j'attends toujours qu'on me montre un cas concret ...
    J'en ai eu plusieurs durant ma carrière donc non, ce n'est pas une légende
    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

  2. #22
    Membre du Club
    Homme Profil pro
    Développeur Delphi
    Inscrit en
    Avril 2023
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Delphi

    Informations forums :
    Inscription : Avril 2023
    Messages : 212
    Points : 68
    Points
    68
    Par défaut
    Non mais c'est carrément bon.
    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));
    Ca me ramène bien le numéro de transaction de chacune des instances de l'appli en cours d'exécution.
    Sergio je t'aime tellement très fort.

  3. #23
    Membre du Club
    Homme Profil pro
    Développeur Delphi
    Inscrit en
    Avril 2023
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Delphi

    Informations forums :
    Inscription : Avril 2023
    Messages : 212
    Points : 68
    Points
    68
    Par défaut
    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".

  4. #24
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 452
    Points : 24 863
    Points
    24 863
    Par défaut
    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

  5. #25
    Membre du Club
    Homme Profil pro
    Développeur Delphi
    Inscrit en
    Avril 2023
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Delphi

    Informations forums :
    Inscription : Avril 2023
    Messages : 212
    Points : 68
    Points
    68
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Finalement la solution était bien CURRENT_TRANSACTION comme je l'avais proposé et dire que j'ai jamais fait de FireDAC ni de FireBird.
    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 )

  6. #26
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 036
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par DOliv Voir le message
    Non mais c'est carrément bon.
    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

  7. #27
    Membre expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 611
    Points
    3 611
    Par défaut
    Citation Envoyé par DOliv Voir le message
    Quant à la légende des with qui créeraient des bugs, j'attends toujours qu'on me montre un cas concret ...
    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)

  8. #28
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 688
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 688
    Points : 13 117
    Points
    13 117
    Par défaut
    Citation Envoyé par pprem Voir le message
    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 ?
    Ca c'est plus par méconnaissance de ce qu'est Self : un argument de la méthode courante et non une méthode\propriété d'objet.

  9. #29
    Membre du Club
    Homme Profil pro
    Développeur Delphi
    Inscrit en
    Avril 2023
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Delphi

    Informations forums :
    Inscription : Avril 2023
    Messages : 212
    Points : 68
    Points
    68
    Par défaut
    Citation Envoyé par pprem Voir le message
    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)
    Ah ben oui, si on imbrique les width, c'est qu'on cherche les emm.

  10. #30
    Membre du Club
    Homme Profil pro
    Développeur Delphi
    Inscrit en
    Avril 2023
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Delphi

    Informations forums :
    Inscription : Avril 2023
    Messages : 212
    Points : 68
    Points
    68
    Par défaut
    Citation Envoyé par Andnotor Voir le message
    Ca c'est plus par méconnaissance de ce qu'est Self : un argument de la méthode courante et non une méthode\propriété d'objet.
    Ben oui.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [FTP] Récupérer un ficher distant avec ftp_get
    Par boteha dans le forum Langage
    Réponses: 6
    Dernier message: 25/03/2010, 09h41
  2. Réponses: 6
    Dernier message: 27/12/2005, 13h48
  3. Récupérer tous les champs avec un DISTINCT
    Par Le Mérovingien dans le forum Requêtes
    Réponses: 3
    Dernier message: 04/11/2005, 23h58
  4. Récupérer 10 nb différents avec un calcul aléatoire
    Par BXDSPORT dans le forum Langage
    Réponses: 3
    Dernier message: 04/08/2002, 02h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo