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 :

[FireDAC] TFDIBInfo.GetConfig comment ça marche ?


Sujet :

Bases de données Delphi

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 174
    Points : 38
    Points
    38
    Par défaut [FireDAC] TFDIBInfo.GetConfig comment ça marche ?
    Bonjour,

    J'essaie toujours de récupérer des infos sur la config d'une base de données en utilisant le composant FireADC TFDIBInfo :
    - SweepInterval
    - PageSize
    - CurrentMemory
    - MaxMemory
    - ForcedWrites
    - BaseLevel
    - Allocation
    A priori la méthode GetConfig est censée me remonter la config de la base en cours mais pour autant la propriété FConfig du paramètre TIBInfo.TConfig est toujours vide.
    Je me dis que si on peut positionner certains paramètres de config via le composant TFDIBConfig, il doit bien être possible de récupérer les valeurs de cette config.
    Ci-dessous un bout de code de test qui ne donne rien.

    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
     
    var
      rConf :  TIBInfo.TConfig;
    begin
      FDIBInfo1.DriverLink := FDPhysFBDriverLink1;
      FDIBInfo1.Host := '127.0.0.1';
      FDIBInfo1.UserName := 'sysdba';
      FDIBInfo1.Password := 'masterkey';
      FDIBInfo1.GetConfig(rConf);
     
      FDIBConfig1.DriverLink := FDPhysFBDriverLink1;
      FDIBConfig1.Host := '127.0.0.1';
      FDIBConfig1.UserName := 'sysdba';
      FDIBConfig1.Password := 'masterkey';
      FDIBConfig1.Database := 'C:\Program Files (x86)\ARO Controls\Studio 2011\databases\aronet2011.fdb';
      FDIBConfig1.SetSweepInterval(4096);

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 029
    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 029
    Points : 40 928
    Points
    40 928
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    j'ai essayé (sans créé au runtime) TFDIBInfo (Seattle/serveur Firebird 2.5)
    avec ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure TFormEditFacture.Button1Click(Sender: TObject);
    var Usage : TIBINfo.TUsage;
        DBName : String;
    begin
    memo1.Clear;
    FDIBINfo1.GetUsage(Usage);  
    Memo1.Lines.Add(Usage.FDatabases.ToString); // nombre de bases connectées
    for DBName in Usage.FDBNames do                 // bases connectées et uniquement celles-ci
         memo1.Lines.add(DBName);
     
    end;
    cette partie fonctionne très bien

    le getconfig de FDIBInfo ne permet pas d'obtenir d'informations supplémentaire sur les bases de données mais sur le serveur
    liste des Fichiers conf
    Répertoire d'installation
    Répertoire du fichier de verrou(s)
    Répertoire des messages
    Répertoire de la base de données de sécurité

    sur le même principe j'ai donc testé avec un peu moins de succès puisque la partie sur les fichiers conf ,du moins espérée telle, ne fonctionne pas ! de toute façon il n'y a aucune information concernant TEntry ne contenant que deux entiers ID et Value c'est loin d'être clair

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
       Config : TIBInfo.TConfig;
        uneConfig : TIBInfo.TConfig.TEntry;
    ...
    begin
    ....
    FDIBInfo1.GetConfig(Config);
    Memo1.Lines.Add(Config.FServerPath);
    Memo1.Lines.Add(Config.FLockPath);
    Memo1.Lines.Add(Config.FMessagePath);
    Memo1.Lines.Add(Config.FSecurityDBFile);
    // la partie ci-dessous ne renvoi rien AMHA c'est uniquement pour Interbase
    for uneConfig in Config.FConfig do
          Memo1.Lines.Add(UneConfig.FID.ToString+' '+UneConfig.FValue.ToString);
    Une remarque à ce stade le passage à FB3 risque de bouleverser la donne puisque le fichier sécurité n'est plus forcément unique

    Pour répondre, enfin, à la question : Je pense qu'il y a confusion entre le Config récupéré par FDIBinfo qui concerne la configuration serveur et le FDIBConfig qui concerne lui une base de données précise.
    [EDIT]Toujours à mon avis, si récupérer les informations de configuration d'une base peuvent se faire (dans la boucle bases connectées du premier code)
    en utilisant un composant TFDIBConfig ce ne peut être valable que pour Firebird 2.5 et moins toujours pour les mêmes raisons : la sécurité FB3 a changé SYSDBA n'est plus un utilisateur privilégié. Enfin si on peut récupérer les informations de configuration d'une base de cette manière on peut aussi les récupérer via SQL (de toute façon dans les deux cas il faut une connexion à la base)

    [EDIT] On ne peut pas récupérer d'information de configuration d'une base de données via TFDIBConfig juste modifier certains paramètres (Setxxx) éteindre (shutdown) ou remettre en ligne la base en question (en bref quelques opérations de Gfix). Récupérer les informations de configuration ne peuvent donc se faire que via SQL
    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

Discussions similaires

  1. ToAsciiEx, comment cela marche ?
    Par mikyfpc dans le forum C++Builder
    Réponses: 2
    Dernier message: 17/02/2004, 21h39
  2. [MFC] list box : comment ça marche
    Par runn2 dans le forum MFC
    Réponses: 4
    Dernier message: 28/01/2004, 12h36
  3. [SYNEDIT] -> Comment ça marche ?
    Par MaTHieU_ dans le forum C++Builder
    Réponses: 2
    Dernier message: 18/01/2004, 19h11
  4. [TP][Turbo Vision] comment ça marche ??
    Par Costello dans le forum Turbo Pascal
    Réponses: 7
    Dernier message: 05/08/2003, 00h24
  5. [update][req. imbriquee] Comment ca marche ??
    Par terziann dans le forum Langage SQL
    Réponses: 3
    Dernier message: 11/07/2003, 12h51

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