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 :

Firebird - erreur au changement de base de données


Sujet :

Bases de données Delphi

  1. #1
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut Firebird - erreur au changement de base de données
    Bonjour à tous,

    J'ai une application delphi qui ouvre une base de données firebird sans aucun problème.
    J'en possède une copie plus ancienne à un autre emplacement.

    Dans mon appli, je déconnecte la base initiale pour établir une connexion sur cette autre base et la mon application plante.
    En test, je constate que le recordcount de certaines tables est à 0 alors que pour d'autres, la valeur de la table dans la db initiale m'est renvoyée.

    Pourtant la connexion se fait sans erreur.

    Une idée ?

    Merci d'avance

  2. #2
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 310
    Points
    2 310
    Par défaut
    Salut

    et en essayant de te connecter sur l'ancienne BD en premier est-ce que tu auras le même effet ? fais un test et vois ce que ça donne.

  3. #3
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    L'application ouvre par défaut la bd initiale.
    Puis, un écran me permet d'ouvrir une ancienne version de la bd et c'est là que ça coince.

  4. #4
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 310
    Points
    2 310
    Par défaut
    as-tu songé à fermer la transaction et la réouvrir ?
    peux-tu, stp, poster le bout de code en question ?

  5. #5
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    Voici le code qui ouvre la DB avec le composant Zeos TZConnection.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Try
      If FileExists(DbDir + 'CadaCom.Fdb') then
      begin
        CadaDataModule.ZConnection.DataBase := '172.19.3.4' + ':' + DbDir + 'CadaCom.Fdb';
        CadaDataModule.ZConnection.User := 'SYSDBA';
        CadaDataModule.ZConnection.Password := 'masterkey';
        CadaDataModule.ZConnection.Connect;
    A l'ouverture de l'application, la DB qui se trouve dans le dossier par défaut s'ouvre.

    Pour changer de DB, une boite de dialogue permet de choisir un autre dossier (DbDir) contenant une autre version de CadaCom.Fdb et la même séquence d'instructions est exécutée.

  6. #6
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 107
    Points : 41 221
    Points
    41 221
    Billets dans le blog
    63
    Par défaut
    si tu utilises zeos , je pense qu'il y a un Hic

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
       CadaDataModule.Disconnect;  // par précaution
       CadaDataModule.ZConnection.HostName:='172.19.3.4';
       CadaDataModule.ZConnection.port:=3050;
       CadaDataModule.ZConnection.DataBase :=IncludeTrailingPathDelimiter(DbDir) + 'CadaCom.Fdb';
     
       ......

  7. #7
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    Et c'est quoi, le hic : Zeos interdirait de changer de base de données ?

  8. #8
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 107
    Points : 41 221
    Points
    41 221
    Billets dans le blog
    63
    Par défaut
    non, c'est ta manière de mettre le nom de la database qui me questionne .
    Je pense que le split
    CadaDataModule.ZConnection.DataBase := '172.19.3.4' + ':' + DbDir + 'CadaCom.Fdb';
    pourrait mal fonctionner, il manque le 3050 .
    La méthode que je te proposes est celle que j'utilise et , elle , ne m'a jamais fait défaut

  9. #9
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    Delphi 4 (ouais, je sais, c'est vieux mais ça marche encore) ne reconnait pas
    IncludeTrailingPathDelimiter

  10. #10
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Sous D4 tu as peut-être IncludeTrailingBackSlash qui est l'équivalent (mais aujourd'hui déprécié).

    Sinon IncludeTrailingPathDelimiter s'assure simplement que le chemin d'accès se termine par un "\". Donc facile à vérifier.

    @+ Claudius

  11. #11
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    Je m'en doutais et mon application fait ce test et ajoute le backslash en cas de de manque.

  12. #12
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 107
    Points : 41 221
    Points
    41 221
    Billets dans le blog
    63
    Par défaut
    Citation Envoyé par defluc Voir le message
    Delphi 4 (ouais, je sais, c'est vieux mais ça marche encore) ne reconnait pas
    je jeterais pas la pierre , j'utilise encore D3 (pour la maintenance des vielles applis uniquement et la migration est longue)

  13. #13
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    A mes débuts c'était Fortran et PL/1. Y a peu de monde qui doit connaître.

    Pour revenir revenir au sujet
    si tu utilises zeos , je pense qu'il y a un Hic
    Mon problème serait-il plus facile à résoudre si les fichiers Fdb étaient sur le poste de de travail de l'utilisateur de l'application ?

  14. #14
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 107
    Points : 41 221
    Points
    41 221
    Billets dans le blog
    63
    Par défaut
    Fortran , que de souvenirs , les cartes programmes+données qui tombent et pas de trieuse

    J'utilise régulièrement zeos et paramètre non moins régulièrement les connexions comme indiqué dans le post 'je pense qu'il y a un Hic'

    si la base était sur le poste utilisateur , tu n'aurais qu'a changé le HostName en Localhost ou 127.0.0.1 et bien sur si besoin le chemin . Cependant il faudra dans ce cas que le poste ait fbServer ou un fbembedded
    et donc un paramètre supplémentaire : ZConnection.protocol

  15. #15
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    Il fallait de bons élastiques pour tenir ses cartes ensemble quand on se promenait mais on avait un sentiment de matérialité de son programme et je me souvient avoir été un peu mal à l'aise quand on a remplacé les cartes par un écran.

    Pour ce qui est de mon appli, même problème en local.

    Voici le test que j'ai fait.

    Je connais le contenu de mes 2 DB.

    Après la connexion, je teste le nombre d'enregistrements des tables.

    Correct pour les 2 premières mais à la troisième, le résultat est faux.
    Elle devrait contenir 1 record et RecordCount = 0.
    Comme dans ce cas j'y mets des données par défaut, le programme plante pour doublon sur la clé primaire. Autrement l'enregistrement par défaut y est bien trouvé mais RecordCount = 0. QU'est-ce qui peut bien bugger ?

  16. #16
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 107
    Points : 41 221
    Points
    41 221
    Billets dans le blog
    63
    Par défaut
    à la volée le type de transaction de la connexion

  17. #17
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    Ton laconisme me laisse perplexe.
    Qu'est-ce que tu veux dire par
    à la volée le type de transaction de la connexion

  18. #18
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 107
    Points : 41 221
    Points
    41 221
    Billets dans le blog
    63
    Par défaut
    une partie du message est partie dans les oubliettes (faute a trop de fenêtres ouvertes je pense)
    Je voulais dire/demandé : quelle est le type de transaction que tu as indiqué dans ta Zconnection ? cette même connexion est-elle autocommit ou non ?

    au fait ? Quel version de ZEOS et Delphi est utilisée , utilises tu l'unicode ?
    (ceci pour mon post et mes ennuis UTF8)

  19. #19
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    Delphi 4 (ouais, je sais, c'est vieux mais ça marche encore)
    version Zeos 6.1.5-Stable
    Autocommit : True
    Protocol : Firebird 1.5
    TransactIsolationLevel : TiNone

    La base de données travaille avec le Character set WIN1252

  20. #20
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 107
    Points : 41 221
    Points
    41 221
    Billets dans le blog
    63
    Par défaut
    Correct pour les 2 premières mais à la troisième, le résultat est faux.
    Elle devrait contenir 1 record et RecordCount = 0.
    Comme dans ce cas j'y mets des données par défaut, le programme plante pour doublon sur la clé primaire. Autrement l'enregistrement par défaut y est bien trouvé mais RecordCount = 0. Qu'est-ce qui peut bien bugger ?
    Bon , il faudrait voir le code mais :
    - l'utilisation de recordcount n'est pas très indiquée
    il serait préférable d'utiliser un
    Code Query : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT COUNT(*) FROM TABLE
    en cas de ZTable je crois qu'il y a un FetchAll (apres le recordcount devrait être correct, la Query est cependant préférable) , vérifies également la valeur de la propriété FetchRow

Discussions similaires

  1. Réponses: 4
    Dernier message: 14/02/2007, 17h53
  2. erreur de pilote pour base de donnée
    Par sandytarit dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 19/12/2006, 14h59
  3. changement de base de donnée
    Par Pitou5464 dans le forum Access
    Réponses: 3
    Dernier message: 08/08/2006, 14h37
  4. Réponses: 6
    Dernier message: 09/06/2006, 12h17
  5. ERREUR DE CONNEXION à une base de donnée ACCESS protégée
    Par unionriton dans le forum Bases de données
    Réponses: 4
    Dernier message: 09/05/2005, 09h35

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