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

Lazarus Pascal Discussion :

Comment récupérer la version ODS de Firebird sous Lazarus et quelle est votre solution ? [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Membre habitué Avatar de Patrick25300
    Homme Profil pro
    Retraité en technicien de maintenance et méthodes
    Inscrit en
    Février 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Retraité en technicien de maintenance et méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 153
    Points : 134
    Points
    134
    Par défaut Comment récupérer la version ODS de Firebird sous Lazarus et quelle est votre solution ?
    Pour une mise à jour de mon application, avec une nouvelle version de FireBird de 2.5 à 3.0. Je cherche le moyen de récupérer la version ODS (On-Disk-Structure) de Firebird dans mon application. L’utilisateur déplacera sa base de données version 2.5 pour la nouvelle application et l’application contrôle la version ODS, afin d’utiliser une méthode pour modifier l’ODS et d’autres particularités de la base de données.
    Pour les deux possibilités ci-dessous, il faut que la base soit connectée, j’ai donc le message d’erreur avant de pouvoir lire ODS.
    • IBConnection1.ODSMajorVersion
    • select MON$ODS_MAJOR from MON$DATABASE;
    Je pourrais aussi utiliser ceci :
    Mais je ne sais pas récupérer le retour de gStat.exe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ShellExecute (0,nil,PChar (ExtractFilepath(ParamStr(0))+'gStat.exe'),
                        PChar('-h '+_DataSource),
                        nil,
                        SW_HIDE )
    Demander à l’utilisateur de manipuler les fichiers de la base de données et d’utiliser ces procédures suivant ce lien pour modifier l’ODS me paraît difficile pour l’utilisateur.
    https://github.com/jaclas/Firebird-O...o-12-converter
    Merci de vos réponses.

  2. #2
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 730
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 730
    Points : 15 132
    Points
    15 132
    Par défaut
    Bonsoir,

    Citation Envoyé par Patrick25300 Voir le message
    Mais je ne sais pas récupérer le retour de gStat.exe
    lecture puis suivre le 1er lien de la section Exemple, et commencer doucement par faire des essais pour se familiariser avec le composant.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 245
    Points : 534
    Points
    534
    Par défaut
    Bonjour,

    Voilà une discussion qui aurait peut-être plus sa place sur le forum Firebird.
    Une base FB2.5 n'est pas lisible sur une installation FB3 et réciproquement.
    Pour passer une base de la version FB2.5 à la version FB3, il peut d'abord être nécessaire de corriger le code de certaines procédures stockées et triggers. En général ce ne sont que certaines "facilités" qui ne sont plus autorisées en FB3, donc peu de problèmes à ce niveau.
    Mais le plus important, c'est qu'il faut effectuer un backup de la base avec FB2.5, qu'on devra restaurer avec FB3.
    Si vous voulez que l'opération soit faite automatiquement par l'utilisateur sur son PC, il faut donc que les 2 versions de Firebird soient accessibles depuis le PC de cet utilisateur, chacune sur un port différent, ou une embarquée l'autre comme service. Si la connexion en FB3 n'est pas possible, c'est que la base est en FB2.5 donc effectuer son backup et le restaurer avec FB3
    Je ne sais pas qui sont vos utilisateurs, mais pensez-vous possible de leur demander cette préparation? Si oui n'est-il pas plus simple de leur demander d'effectuer le backup de leur base avant de muter l'installation en FB3?
    Dans un cas similaire c'est ce que j'ai fait, avec en option de secours, la possibilité d'installer une petite application de backup s'installant avec FB2.5 embedded.

    André

  4. #4
    Membre habitué Avatar de Patrick25300
    Homme Profil pro
    Retraité en technicien de maintenance et méthodes
    Inscrit en
    Février 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Retraité en technicien de maintenance et méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 153
    Points : 134
    Points
    134
    Par défaut
    Bonjour

    Merci Jipété de m'informer de TProcess, j'ai vu les exemples, ça me paraît pas très compliqué, je vais creuser pour voir.

    Merci alanglet, j'ai mis cette discussion sur Lazarus, car le problème est pour moi, plus du coté de Lazarus que de Firebird. Du coté de Firebird j'ai bien compris la différence entre les versions. Je diffuse mes applications en shareware, donc mes utilisateurs peut-être n'importent qui, c'est là la plus grande difficulté.
    Vous avez raison, Je pense utiliser une petite application de backup et de mise à jour de la base de données dans le principe de ce lien https://github.com/jaclas/Firebird-O...o-12-converter

    Donc deux installations de Firebird la 2.5 et la 3.0 et d'utiliser un nom différent de la base de données à chaque modification de celle-ci, un code pour l'ODS et un pour mes versions par exemple: "BaseToto_ODS110_V40.FDB", je n'avais pas eu ce problème jusqu'à maintenant, j'ai toujours utilisé la version firebird 2.5.
    La base de données de Firebird 2.5 fonctionne très bien avec la version 3.0, bien sur en ayant utilisé "gStat.exe" pour le changement de l'ODS.
    Je vous remercie vous deux de m'avoir guidé dans mes choix.
    Bonne journée

  5. #5
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 730
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 730
    Points : 15 132
    Points
    15 132
    Par défaut
    Citation Envoyé par Patrick25300 Voir le message
    Merci Jipété de m'informer de TProcess, j'ai vu les exemples, ça me paraît pas très compliqué, je vais creuser pour voir.
    Ben oui,

    Et moi qui ne connais rien aux bases de données et autre gStat.exe qui doit tourner sous Windows, comme je suis sous Linux, j'aimerais bien voir la sortie de cet outil dans la console, à l'occasion, que tu pourras poster ici par copier/coller, si ce n'est pas indiscret.
    Merci,
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  6. #6
    Membre habitué Avatar de Patrick25300
    Homme Profil pro
    Retraité en technicien de maintenance et méthodes
    Inscrit en
    Février 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Retraité en technicien de maintenance et méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 153
    Points : 134
    Points
    134
    Par défaut
    Voici la sortie console de gStat.exe
    Ci-dessous gStat lit une base de données qui n'est pas compatible avec sa version, c'est une base de données de Firebird 2.5 alors que gStat c'est la version de FireBird 3.0
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    d:\Bases\fb30>gStat.exe -h base.fdb
    Wrong ODS version, expected 12, encountered 11
     
    d:\Bases\fb30>pause
    Appuyez sur une touche pour continuer...
    Ci-dessous avec la même base de données mais avec l'ODS qui est de la version 3.0 de Firebird qui a été modifiées en faisant un gBack en utilisant la sauvegarde avec la version 2.5 de Firebird et une restauration avec la version 3.0 de Firebird qui du coup change l'ODS.

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    d:\Bases\fb30>gStat.exe -h new.fdb
     
    Database "D:\BASES\FB30\NEW.FDB"
    Gstat execution time Thu Feb 23 09:59:01 2023
     
    Database header page information:
            Flags                   0
            Generation              39
            System Change Number    0
            Page size               16384
            ODS version             12.0
            Oldest transaction      29
            Oldest active           30
            Oldest snapshot         30
            Next transaction        30
            Sequence number         0
            Next attachment ID      6
            Implementation          HW=Intel/i386 little-endian OS=Windows CC=MSVC
            Shadow count            0
            Page buffers            0
            Next header page        0
            Database dialect        3
            Creation date           Feb 23, 2023 9:56:42
            Attributes              force write
     
        Variable header data:
            Sweep interval:         20000
            *END*
    Gstat completion time Thu Feb 23 09:59:01 2023
     
     
    d:\Bases\fb30>pause
    Appuyez sur une touche pour continuer...
    J'espère avoir répondu à ta question.

  7. #7
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 730
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 730
    Points : 15 132
    Points
    15 132
    Par défaut
    Citation Envoyé par Patrick25300 Voir le message
    J'espère avoir répondu à ta question.
    Oui, merci, parfait.


    Mais je ne sais pas si ceci ne va pas poser de problème avec le TProcess :
    Citation Envoyé par Patrick25300 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    d:\Bases\fb30>pause
    Appuyez sur une touche pour continuer...
    Pour un test rapide, il suffira de commenter la ligne en question, et la sortie devrait pouvoir se retrouver dans une stringlist, qu'il suffira d'analyser ensuite.
    Pour savoir si la stringlist est bien chargée, il suffira de la recopier dans un memo posé temporairement sur la fiche.

    À toi de jouer, et à ton service en cas de pb avec TProcess.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  8. #8
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 730
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 730
    Points : 15 132
    Points
    15 132
    Par défaut
    Bonsoir,

    Tiens, d'un coup l'idée lumineuse du soir :

    Si j'étais toi, pour démarrer l'apprentissage avec TProcess et éviter de trafiquer dans le système de base de données, je me bricolerais un exécutable Windows à partir de Lazarus et dont le seul boulot serait d'afficher dans la console les lignes que tu nous as données recopiées dans un TMemo, une version ou l'autre, à charge pour ton programme principal basé sur TProcess d'appeler cet exécutable puis de récupérer les lignes et les afficher.

    Quand tu en seras là, tu auras fait les 99 % du boulot, et sans risque pour tes BdD's.

    C'est en gros une simulation de la vraie vie.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  9. #9
    Membre habitué Avatar de Patrick25300
    Homme Profil pro
    Retraité en technicien de maintenance et méthodes
    Inscrit en
    Février 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Retraité en technicien de maintenance et méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 153
    Points : 134
    Points
    134
    Par défaut
    Je pense qu'il faut enlever "Pause", c'est juste pour voir l'affichage de l'écran. sans "pause" on ne peut pas lire le résultat.

  10. #10
    Membre habitué Avatar de Patrick25300
    Homme Profil pro
    Retraité en technicien de maintenance et méthodes
    Inscrit en
    Février 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Retraité en technicien de maintenance et méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 153
    Points : 134
    Points
    134
    Par défaut
    Merci Jipété, effectivement avec TProcess et un mémo il serait possible de lire l'ODS.
    Mais comme mon application, depuis 2014 utilise FireBird 2.5, le nom de la base de données à toujours été le même, j'ai plus qu'a changer le nom de la base afin que je sache la version de l'ODS et la version perso, comme l'exemple dans le message ci-dessus. En fait, c'est une idée basique qui est très simple mais très sûre ; comme on dit, pourquoi faire compliqué, quand on peut faire simple.
    Bonne soirée.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. comment récupérer la version du système sous linux?
    Par ase707 dans le forum Administration système
    Réponses: 9
    Dernier message: 18/04/2008, 18h07
  2. Réponses: 12
    Dernier message: 10/06/2006, 19h07
  3. [C#]Comment récupérer la version du FrameWork?
    Par fantomchris dans le forum C#
    Réponses: 6
    Dernier message: 24/03/2006, 14h39
  4. Comment récupérer la version d'un exécutable ?
    Par bib34690 dans le forum Langage
    Réponses: 2
    Dernier message: 19/09/2005, 18h20

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