Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 6 sur 6
  1. #1
    Membre habitué
    Inscrit en
    juillet 2004
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : juillet 2004
    Messages : 277
    Points : 104
    Points
    104

    Par défaut EDivByZero exception avec COLLATE FR_FR

    Bjr

    Je rencontre une difficulté avec la clause COLLATE FR_FR lorsque :

    1 celle ci est placée dans le DDL de construction d'un champ de table
    ou
    2 celle ci est placée dans la requête SQL select pour un champ de table

    A l'ouverture de la table (IBTable ou IBDataSet) une exception EDivByZero apparait.

    Le problème se manifeste sous Firebird 2.1 et Firebird 2.5 avec Rad Studio Codegear 2009 sous Delphi ou C++.

    Il disparait avec les versions antérieures Delphi 7 ou C++ Builder 6.

    Enfin si au lieu d'utiliser les IBX j'utilise les composants DBExpress le problème disparait.

    Je précise que la base est créée avec le Default Character Set ISO8859_1.

    (Sous Windows Seven)

    Ici une description détaillée en anglais

  2. #2
    Rédacteur/Modérateur
    Avatar de SergioMaster
    Homme Profil pro Serge Girard
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    5 510
    Détails du profil
    Informations personnelles :
    Nom : Homme Serge Girard
    Âge : 58
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : janvier 2007
    Messages : 5 510
    Points : 10 809
    Points
    10 809
    Billets dans le blog
    3

    Par défaut

    Quand on disait que les IBX n'était pas recommandé pour se connecter aux bases 2.1 ou 2.5
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein
    J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius
    Si votre seul outil est un marteau, vous aurez tendance a ne voir que des clous

  3. #3
    Membre habitué
    Inscrit en
    juillet 2004
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : juillet 2004
    Messages : 277
    Points : 104
    Points
    104

    Par défaut

    Je l'ignorais puisque cela fonctionnait parfaitement jusqu'à ce que je passe en Delphi / C++ 2009.

    Quelles sont les préconisations pour accéder à Firebird 2.x depuis Delphi ou C++ ?

  4. #4
    Rédacteur/Modérateur
    Avatar de SergioMaster
    Homme Profil pro Serge Girard
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    5 510
    Détails du profil
    Informations personnelles :
    Nom : Homme Serge Girard
    Âge : 58
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : janvier 2007
    Messages : 5 510
    Points : 10 809
    Points
    10 809
    Billets dans le blog
    3

    Par défaut

    Citation Envoyé par frantzgac Voir le message
    Je l'ignorais puisque cela fonctionnait parfaitement jusqu'à ce que je passe en Delphi / C++ 2009.
    et donc l'Unicode <- c'est ce qui fait la différence

    Quelles sont les préconisations pour accéder à Firebird 2.x depuis Delphi ou C++ ?
    Delphi et C++
    N'oublions pas bien sur les DBExpress des versions (Entreprise) récentes de XE , (beaucoup d'améliorations , fortement recommandé pour du DataSnap) pour D2009 je ne sais pas , pour D2010 j'ai pas pu tester (par méconnaissance j'avais pris la version Pro , je m'en mord encore les doigts )


    DELPHI , d'expérience
    Solutions free
    Le nec (bien qu'un peu limitée a mon gout car ReadOnly ) les UIB
    pour ceux habitués a BDE , un BDELike : les ZEOSDBO , un peu bugués mais la version SVN fonctionne a peu près (sauf pour BDD en UTF8 , a mon dernier pointage)
    Solutions Payantes :
    FibPlus (une rolls lorsque j'ai fait mes essais)
    IbObjects ? (jamais reussi une install correcte de la version essai)

    C++
    Aucune idée , mais je crois avoir vu des posts sur le sujet dans ce forum
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein
    J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius
    Si votre seul outil est un marteau, vous aurez tendance a ne voir que des clous

  5. #5
    Membre habitué
    Inscrit en
    juillet 2004
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : juillet 2004
    Messages : 277
    Points : 104
    Points
    104

    Par défaut

    Je suis un peu étonné. Après un peu de recherches :

    Sur le site d'embarcadero on parle d'Interbase (logique commerciale) mais on y trouve des tutoriels laissant entendre que les composants DBExpress peuvent servir à se connecter à "d'autres" bases depuis Delphi ou C++ Builder 2009 (Rad Studio 2009).

    Ici

    ou sur ce forum

    http://evaris-ngouzo.developpez.com/...ird-dbexpress/

    Cela dit la procédure semble un peu lourde...

    Car depuis plus de 12 ans je conçois des applications Delphi5 puis Delphi 7 ou C++ Builder 6 avec les composants IBX et des bases parfois très touffues sans aucun problème.

    Je suis donc surpris d'apprendre par plusieurs sources que ce que je fais "n'est pas possible".

    J'ai d'ailleurs contourné le problème occasionné par les champs comportant une clause COLLATE FR_FR qui causait le EDivByZero en siphonnant la base dans une autre base où la clause COLLATE est globalisée par un ALTER comme on le suggère ici. Du coup la base Firebird 2.5 (ODS 11.1) fonctionne sous C++ Builder 2009 ou Delphi 2009. Mais le portage n'est pas achevé (pour cause d'Unicode mais pas seulement) je ne peux encore garantir que tout fonctionne. Cependant j'accède indubitablement à la base en lecture/écriture sans difficultés apparentes.

  6. #6
    Rédacteur/Modérateur
    Avatar de SergioMaster
    Homme Profil pro Serge Girard
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    5 510
    Détails du profil
    Informations personnelles :
    Nom : Homme Serge Girard
    Âge : 58
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : janvier 2007
    Messages : 5 510
    Points : 10 809
    Points
    10 809
    Billets dans le blog
    3

    Par défaut

    Je suis donc surpris d'apprendre par plusieurs sources que ce que je fais "n'est pas possible".
    en quoi ?
    Il est très possible de se connecter avec des IBxxxxxxx sur Firebird .
    Les seules limitations des vieilles versions sont sur des connexions a Firebird 2.1 et plus (quelques rares bugs mais gênants , tu en as eu la preuve) . Je dois avouer ne pas voir essayé avec D2010 .
    Pourquoi ne le conseille t-on pas , tout simplement parce que plus les versions changent (depuis le tronc commun) entre Interbase et Firebird plus les dlls et donc plus les accès a ces dernières vont différer.

    quant à DBExpress il a été refondu en 2009 (ou pour D2009) et est beaucoup plus "performant" qu'avant , le seul hic , avoir la bonne version de Delphi c'est a dire Entreprise et +
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein
    J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius
    Si votre seul outil est un marteau, vous aurez tendance a ne voir que des clous

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •