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

C++Builder Discussion :

EDivByZero TIBDataSet Open


Sujet :

C++Builder

  1. #1
    Membre actif

    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    479
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 479
    Points : 267
    Points
    267
    Par défaut EDivByZero TIBDataSet Open
    Bonjour

    En migrant un projet C++Builder 6 vers C++ Builder 2009 je rencontre le problème suivant :

    TIBDataSet dont la propriété SelectSQL contient une requête en apparence inoffensive (et fonctionnant en C++ B6)

    select * from T1
    left join T2 on T1.X = T2.X
    left join T3 on T3.Y = T2.Y
    where T1.Z=constante
    je reçois l'erreur EDivByZero sur la méthode Open en C++B2009

    Je ne comprends pas comment une requête peut produire cette exception ?

  2. #2
    Membre actif

    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    479
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 479
    Points : 267
    Points
    267
    Par défaut
    Poursuivant mes recherches :

    le problème ne vient pas de la requête mais de la table. Certaines tables (même vide) provoque l'erreur dès l'ouverture du dataset (quel qu’il soit IBTable ou IBDataset)

    Je cherche donc le type de champ qui disconvient à Rad Studio 9 car le comportement décrit est observable aussi bien sous Delphi que sous C++

    Je précise aussi que j'accède à une base Firebird 2.1 avec les composants IB. Est ce compatible sous Rad Studio 2009 ?

  3. #3
    Membre actif

    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    479
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 479
    Points : 267
    Points
    267
    Par défaut
    L'origine de l'exception EDivByZero semble être dans la clause COLLATE FR_FR qui altère les champs de certaines tables. ce sont celles qui déclenchent l'exception.

    Pour poursuivre les tests je teste désormais avec un TIBDataSet et place la phrase SQL dans SelectSQL. Je produis à volonté l'exception EDivByZero en ajoutant la clause COLLATE FR_FR dans la requête comme suit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select MOT_ID,MOT_MOT collate FR_FR from MOT
    El lisant la doc langage reference de Firebird 2.1 je vois qu'une nouvelle collation existe FR_FR_CI_AI compatible avec mon jeu de caractères ISO_8859_1. Cette collation déclenche le message
    COLLATION FR_FR_CI_AI for ISO_8859_1 is not defined
    J'ai testé le même code sous Delphi 7. Il fonctionne parfaitement dans le cas Collate FR_FR et produit le même message avec FR_FR_CI_AI.

    Les tests se déroulent sur le même PC (avec la même version de Firebird et la même DLL GDS32).

    A tout hasard, un test a été fait avec la dernière version de Firebird (2.5.1) (GDS32 6.3.1.26351) sans rien changer

    Ensuite j'ai essayé sous Delphi 9 COLLATE ES_ES_CI_AI qui fait bien partie de RDB$COLLATIONS et cela déclenche l'exception EDivByZero

    Le problème se précise mais la solution ...

    A noter que le problème se déplaçant au fil des recherches il aurait plutôt sa place dans Firebird->SQL désormais !

Discussions similaires

  1. Réponses: 16
    Dernier message: 27/05/2017, 10h14
  2. [Kylix] [Kylix 3] Installation version Open
    Par muadib dans le forum EDI
    Réponses: 1
    Dernier message: 14/03/2003, 16h37
  3. Réponses: 5
    Dernier message: 24/11/2002, 11h36
  4. [Kylix] Télécharger Kylix 3 Open Edition
    Par RDM dans le forum EDI
    Réponses: 2
    Dernier message: 27/08/2002, 11h28
  5. Choix d'un EDI pour la 3D (Open GL, Portable)
    Par Riko dans le forum OpenGL
    Réponses: 6
    Dernier message: 01/08/2002, 12h25

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