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
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 !
Partager