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 :

Interbase 2020 : EIBClient.error avec la constante DBP() inconnue


Sujet :

Bases de données Delphi

  1. #1
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2010
    Messages : 104
    Points : 85
    Points
    85
    Par défaut Interbase 2020 : EIBClient.error avec la constante DBP() inconnue
    Bonjour à tous,
    J'ai un programme fait avec Delphi XE2 et interbase de l'époque.
    J'ai voulu le migrer sur Delphi 10.4 community.

    En changeant les uses d'origine intitulés " IBxxx" en "IBX.IBxxx", je peux le compiler sans erreur.
    A l'exécution, la partie création de la base et des tables se passe sans erreur. Je peux le voir en ouvrant cette base avec IBconsole et en enregistrant des données depuis IbConsole.

    Par contre la partie "configuration " me provoque l'erreur suivante :
    Le projet "Monprojet.exe" a déclenché la classe d'exception EIBClientError avec le message 'la constante DPB() est inconnue'
    Voici la parte du code qui me pose problème :
    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
    procedure TForm3.Config_Connection(Nom_Base: TFilename); // Configuration de la connection
    begin
      // PREMIERE TABLE
      IBDataBase1.Params.Clear;
      with IBDatabase1 do begin
       DatabaseName:=Nom_Base;
       Params.Add('user_name=ABCDE'); 
       Params.Add('password=abcde');  
       Params.Add('PAGE_SIZE 4096');
       LoginPrompt:=False;               
       DefaultTransaction:=IBTransaction1;
      end;
    
     IBTransaction1.defaultDatabase:=IBDatabase1;
     IBDatabase1.connected:=True;         <== c'est cette ligne qui provoque le message d'erreur
     IBTransaction1.active:=True;
    
     with IBTable1 do begin
      database:=IBDatabase1;
      TableName:='DONNE';
     end;
     DataSource1.DataSet:=IBTable1;
    ..........................
    ..........................
    Merci de vos suggestions car je ne trouve rien nulle part sur ce sujet

    Jean-Louis

  2. #2
    Rédacteur/Modérateur

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

    Les IBX je ne connais pas leur préférant Firedac (normal puisque je n'utilise plus Interbase mais Firebird).

    La première question que je me pose est plus un problème d'installation d'Interbase si les deux versions XE2 et D10.4 existent.
    Je pense ensuite à des problèmes de DLL (gds32.dll, vérifier les versions dans les répertoires windows\syswow64 et windows\system) IBconsole fonctionnant correctement parce qu'utilisant la bonne dll soit parce que bien indiquée, soit parce que dans le même répertoire que l'exe)


    P.S.[MODE=mi-troll] je ne savais pas qu'une version 2022 existait une version futuriste qui aurait (enfin) des fonctions de fenêtrage et quelques autres lacunes aux standards SQL enfin remplies (constatées lors de mon dernier essai d'Interbase 2020 Update 1) ?[/MODE]
    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

  3. #3
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2010
    Messages : 104
    Points : 85
    Points
    85
    Par défaut
    @ Sergio : merci d'avoir relevé la coquille que j'ai corrigée depuis
    je ne savais pas qu'une version 2022 existait
    En ce qui concerne la suggestion concernant gds32.dll, ça ne marche pas, même en mettant gds32.dll dans le répertoire de l'appli.

    Jlouis

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    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 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    J'eusse préféré que ce fut la version futuriste
    Mes démêlés récents avec Interbase :
    - installation sur port différent de 3050
    - tests SQL sur l'existence de variables de contexte ou de fonction fenêtrage , quelque chose comme
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT  
     CUSTNO,
     ROW_NUMBER() OVER (partition by CUSTNO) LINENO,
     ITEM,
     PRICE 
    FROM TABLE_1
    ORDER BY CUSTNO
    je suis déçu, ceci fonctionnant parfaitement avec Firebird depuis la version 2.5 (a minima)
    J'ai alors lu, un peu tard, qu'enfin la version 2020 update 2 permettait les CTE récursives
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    WITH RECURSIVE
         R AS (SELECT CUSTNO,1 AS LNo,Item,Price FROM TABLE_1 
               UNION all
               SELECT r.CUSTNO,r.LNo+1,Item,Price FROM R WHERE r.LNo< (SELECT COUNT(*) LINES FROM TABLE_1 WHERE CUSTNO=r.CUSTNO) 
              )             
    SELECT CUSTNO,LNO,item,price FROM r
    ce n'est pas encore le résultat que je souhaitai mais augurait de la possibilité de réalisé ce qui était demandé. J'ai alors laissé le demandeur chercher la "bonne solution" à son problème (une CTE RECURSIVE par CUSTNO et l'UNION des résultats)
    => désinstallation dans la foulée


    Pour en revenir à tes moutons, il y a peut-être eu entre XE2 et la 10.4.2 des modifications dans la connexion.
    tu écris que
    A l'exécution, la partie création de la base et des tables se passe sans erreur.
    donc le problème se situe avec le Params.Clear qui en efface un peu trop
    à moins que l'un des paramètres fourni soit mal écrit A peine formulé cette hypothése je regarde dans la documentation et lit
    InterBase API Parameter est le paramètre DPB,
    Tiens donc, DPB !!!
    éméttrai-je l'idée que la ligne 9
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Params.Add('PAGE_SIZE 4096');
    est éronnée et que l'indication d'égalité manque à l'appel ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Params.Add('PAGE_SIZE=4096');
    Bon, je ne peux confirmer mes soupçons les composants interbase ne sont pas installés sur mes versions (pas besoin, donc décoché à l'install)

    J'attend confirmation mais cette page confirme mon soupçon
    Bête comme chou non
    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

  5. #5
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2010
    Messages : 104
    Points : 85
    Points
    85
    Par défaut
    Effectivement, si je mets :

    Params.Add('user_name="ABCDE"');
    Params.Add('password="abcde"');
    Params.Add('PAGE_SIZE=4096');
    je n'ai plus l'erreur :
    'la constante DPB() est inconnue'
    mais au même endroit, j'ai maintenant le message d'erreur suivant :

    Nom : Capture.JPG
Affichages : 201
Taille : 25,1 Ko

    J'ai pourtant déclaré l'utilisateur dans IBConsole

    JL

  6. #6
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2010
    Messages : 104
    Points : 85
    Points
    85
    Par défaut
    Bonjour à tous,
    J'ai résolu mon problème grâce à l'aide de sergio
    Je confirme que la bonne syntaxe est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      Params.Add('user_name=ABCDE'); 
      Params.Add('password=abcde');  
      Params.Add('PAGE_SIZE=4096');
    JL

  7. #7
    Rédacteur/Modérateur

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

    [Edit] doublé parce que j'ai trainé à l'écriture commencée à 9h10 mais non postée jusqu'à contrôle (programme et recherche dans source)

    Là nous ne somme plus sur le même problème (enfin pas complètement) et je commence à devenir

    Où va t-on si les params ne se déclarent pas de la même façon ! Je croyais que du coup la régle était parametre=valeur mais voilà je lit toujours sur une page de documentation et je regarde le code, je ne m'étais jusqu'àlors que concentré sur le PAGE_SIZE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
          IBDatabaseTest.Params.Clear;
          IBDatabaseTest.Params.Add('USER "SYSDBA"');
          IBDatabaseTest.Params.Add('PASSWORD "masterkey"');
          IBDatabaseTest.Params.Add('page_size=4096');
    et sur une autre page, spécifique à la propriété params
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    IBDatabaseInstance.Params.Clear; // Clear any previously-set parameter.
    IBDatabaseInstance.Params.Add('user_name=SYSDBA');
    IBDatabaseInstance.Params.Add('password=masterkey');
    IBDatabaseInstance.Params.Add('sql_role_name=finance');
    IBDatabaseInstance.Params.Add('lc_ctype=WIN1252');
    OK, il ne s'agit pas tout à fait de la même chose en haut d'un composant TIBDataBase et en bas d'IBDataBaseInstance donc d'une sorte de pool de connexion si j'ai bien compris.
    Il y a de quoi être confus

    Ma version 10.2 (seule à avoir les composants interbase d'installés) me montre pourtant bien une liste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    user_name=SYSDBA
    password=masterkey
    page_size=4096
    Il ne m'en fallait pas plus pour faire un test (bien que ce soit sur une base firebird, puisqu'interbase n'est pas installé)
    Nom : Capture.PNG
Affichages : 186
Taille : 4,3 Ko
    Tiens donc, un air connu si j'utilise le premier code (USER "SYSDBA")
    Du coup je suis allé directement à la source, non dans la documentation mais dans IBX.IBdatabase.pas pour avoir enfin une liste des paramètres possibles (pour la version Tokyo, situés à partir de la ligne 3003 la procedure BuildDPBConstants) aucun USER, la documentation sur le CreateDatabase aurait-elle un problème ?

    pour en revenir à ton problème, cette fois, à mon avis, les " " sont de trop
    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

  8. #8
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2010
    Messages : 104
    Points : 85
    Points
    85
    Par défaut
    @ Sergio :Merci de toutes tes explications
    Mais ça va être difficile si on trouve des explications différentes dans la notice pour une même chose.

    JL

  9. #9
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    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 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    On est d'accord, une remarque sur le portail qualité pourrait s'imposer. Toutefois, je botte en touche n'utilisant ni les IBX ni Interbase de façon assidue, j'aurai du mal à mettre un gros grain de sel
    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

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

Discussions similaires

  1. problème avec mes constantes
    Par salseropom dans le forum C
    Réponses: 6
    Dernier message: 10/05/2006, 17h37
  2. [Ole Excel]OLE Error avec numberformat
    Par ired dans le forum API, COM et SDKs
    Réponses: 5
    Dernier message: 13/03/2006, 20h55
  3. Réponses: 4
    Dernier message: 10/11/2005, 11h45
  4. creer champ avec valeur constante dans resultat de requete
    Par freejeje dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 20/05/2005, 10h52
  5. Runtime error avec UDF/DLL
    Par pram dans le forum SQL
    Réponses: 6
    Dernier message: 22/04/2005, 10h30

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