Bonjour,
Je développe des applications en Delphi 7. Celles-ci sont connectées à des bases de données en Firebird 2.1.
Certaines tables contiennent des champs calculé via une procédure stockée.
D'un point de vue base de données, ca a l'air OK: lorsque je consulte les table via un logiciel style EMS sql manager, je vois bien que des valeurs ont été calculées pour ces champs.
Par contre, il arrive que dans Delphi, un Select champ_calculé from ma table where id = 'xx' ne retourne plus rien alors que le champs calculé n'est pas vide à la ligne dont l'id = 'xx' et qu’auparavant, il n'y avait pas de problème pour récupérer la valeur de ce champs calculé.
En apparence, ce bug est apparu d'un plein coup dans un programme.
Celui-ci contient un composant TIBOQuery où j'ai un
select champs_1, champs_2, ... champs_n, champs_calc_1, champs_calc_2
FROM
MaTable
Where ID = arametre;
Dans delphi, lorsque j'utilise l'éditeur de query, où je prépare la query, puis lui passe les même paramètres que ceux passé lors de l'exécution du programme, et enfin affiche le résultat, je vois les valeurs calculées!
Dans le programme on a une DBGrid liée au résultat de la query. Pour l'instant, elle n'affiche plus la valeur de champs_calc_2 .. par contre pas de problème pour champs_calc_1 (remarque : ces 2 champs sont calculé via une même procédure stockée).
J'ai bien vérifié que la propriété Fieldname de la colonne du dbGrid a bien pour valeur "champs_calc_2", si je change en mettant "champs_calc_1" des valeurs apparaissent évidemment mais concernant "champs_calc2" ca a l'air vide (j'ai fais une boucle sur le resultat de la requete où j'affiche via un showMessage la valeur du champs, et il ne met rien valeur = '' ...).
Anciennement cela s'était déja produit pour le même programme mais cette fois là, cela concernait "champs_calc1" et "champs_calc2".
La solution d'urgence trouvée avait été de créer 2 champs data supplémentaire mis à jour lorsque la valeur du champs calculé était modifiée .. puis de modifier le select pour récupérer la valeur du champs data et non plus du champs calculé..
Dans notre service, on a une base de données par année, et lorsqu'une année se clôture, on recopie la base de données en la renommant en fonction de la nouvelle année, on vide des tables, (etc..) puis on re-compile les programmes sur cette nouvelle base de données pour fournir de nouveaux programmes aux utilisateur.
Suite à un nouveau programme, le bug "champs_calc1" et "champs_calc2" vide avait disparu ... et puis là, paf c'est revenu pour une raison que j'ignore, et cette fois pour "champs_calc2" uniquement.
De mon point de vue, le code du programme est ok et du coté de la base de données, il y a bien des valeurs dans ces champs calculé.
Se pose la question du pourquoi ca ne fonctionne pas ... plus.. (enfin à moitié cette fois!!)...
Remarque: le serveur Firebird était anciennement sur un serveur Windows 2003 server, et il est depuis cette année sur windows server 2008.
La version du serveur Firebird n'a pas changé (2.1.3.18185).
Avez-vous déjà rencontré ce type d'erreur?
Avez-vous des pistes à me suggérer??
Merci d'avance pour les pistes que vous pourrez me donner.
Sébastien
Partager