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 �clair�

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

    Informations forums :
    Inscription : Juillet 2004
    Messages : 502
    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 �clair�

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

    Informations forums :
    Inscription : Juillet 2004
    Messages : 502
    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 �clair�

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

    Informations forums :
    Inscription : Juillet 2004
    Messages : 502
    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. 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