Bonjour, après avoir cherché un bon moment, je me tourne vers vous pour avoir une réponse à mon problème.
J'explique un peu le contexte: je suis à l'heure actuelle en train de migrer des applications de Delphi 7 à Delphi XE2 et donc, de les déminer au passage, vu que certaines fonctions n'ont plus le même comportement entre ces deux IDE (y'a 10 ans d'écart mine de rien...)
Et je suis tombé sur un os, un beau, un velu, un bourru...
J'ai ma DB qui tourne sur Firebird 2.5, et mon programme Delphi tape dedans avec des composants IBO (IboTable, IboSrc et IboQry), et sur une de mes tables, il me renvois une erreur -206 (colonne non trouvée). Bon, jusque-là rien de bien alarmant (il y a un comportement bizarre avec la propriétés AutoFetch, et bien souvent le fait de le passer à False résout le problème).
Donc, je fais ma manip' sur l'autofetch comme d'habitude et je relance ma compil', et Pof, erreur -206...
Je décide d'aller voir dans mon composant et ma DB, pour voir ce qui cloche:
et donc la liste de champs de ma table ECOLE_EPFC et la suivante:
- ID_ECOLE
- MATRICULE
- NOM
- ADR_RUE
- ADR_NO
- ADR_ID_LOCALITE
- NOM_DIRECTEUR
- PRENOM_DIRECTEUR
- SEXE
- NO_FASE
Et du côté de mon composant, j'ai la même liste de champ, donc à priori tout semble OK. Le champ qui est signalé comme non existant est le champ MATRICULE_ECOL qui est en fait, l'ancien nom du champ MATRICULE.
Si je drope la table, et que je la recrée le bug disparaît pendant un moment pour finalement revenir.
On a une autre table, nommée ECOLE qui contient elle un champ MATRICULE_ECOL. Est-ce que le SGBD ou le composant pourrait faire une confusion entre les deux? Est-ce une mauvaise mise à jour de la DB? Je dois avouer que je sèche dessus depuis bientôt une semaine.
J'ai bien entendu fait une recherche sur MATRICULE_ECOL dans mon code, pour voir s'il y avait un oubli de refactoring, mais que neni, il est absent de mon source.
Si quelqu'un pouvait me donner un début de piste ou creuser, ça serait bien, parce que drop et recréer la table toute les 3 heures, ça va pas le faire
Cordialement,
Simara
NB: le code fonctionne parfaitement sous delphi7
Partager