Bonjour
En préambule, il s'agit d'une application format BDE qui passe en Firedac.
J'ai fait un un utilitaire qui modifie les dfm du projet. Le but est d'ajouter une clé primaire à chaque composant TTable en se basant sur le nom de la table et du composant, sachant que la clé existe dans les tables (même si ça n'entre pas en ligne de compte avec le problème que j'ai).
Tout fonctionne bien et le code compile sans problème.
Une fois fait, je passe l'utilitaire Refind.exe pour migrer le code vers les composants Firedac.
Nouvelle compilation et après quelques réglages et ajustements, ça compile sans problème.
Je lance le programme et sur quelques fenêtres, je reçois un message m'indiquant que le type TFDAutoIncField est inconnu.
Ce type a bien été mis par refind pour les composants champs clé ajoutés par mon programme et le "uses" correspondant FireDAC.Comp.DataSet est bien présent.
Je regarde dans l'inspecteur d'objet, ma clé primaire est bien là, avec le bon type TFDAutoIncField.
Donc, à la compilation, tout fonctionne, mais à l'exécution, il ne trouve pas le type.
Pour être sûr de moi, je supprime l'objet dans l'éditeur de champ, puis avec le menu "ajouter des champs", je choisis le champ que je viens d'enlever (donc le même champ) et je relance le programme. Et là, ça fonctionne. Du coup je me dis que j'ai du oublier quelque chose dans mon utilitaire alors je compare la version originale du DFM et DU PAS avec la version modifiée, mais il n'y a rien de plus que ce que j'y ai mis. C'est comme si le fait d'avoir ajouter le champ au composant table dans l'EDI avait fait un truc caché.
Je sais que c'est un peu tordu mais si je comprenais le pourquoi du comment ça m'éviterait sans doute de tester les innombrables écrans du programme pour faire cette manip' fastidieuse.
Partager