Bonjour,
Je viens de débarquer sur Delphi CE (je n'avais que des starter edition) et je tente de porter une petite appli initialement conçue avec les composants UIB.
J'utilise donc FIREDAC et sa reconnaissance native de Firebird.
La connexion à la base est OK, et je récupère bien la liste des tables applicatives:
Ensuite, pour 1 table choisie dans la listbox1, je récupère ses colonnes ainsi que celles participant à la PK:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 FDConnection1.GetTableNames('', '', '', ListBox1.Items, [osMy], [tkTable, tkView]);
Tout ça est assez bien documenté
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 FDConnection1.GetFieldNames('','',TableTemp,'',ListeColonne); // acquisition des colonnes de la table FDConnection1.GetKeyFieldNames('','',TableTemp,'',ListePK); // acquisition des colonnes de la PK
L'étape suivante consiste à connaitre pour chaque colonne:
- son type SQL (y compris la longueur pour les char/varchar)
- les contraintes éventuelles (not null, éventuel default, est référence de FK, référence 1 FK, etc.
L'idée générale étant de proposer dynamiquement le composant qui va bien pour modifier la valeur d'une colonne, en contrôlant ce qu'on peut: taille (xCHAR), le bon format numérique, etc.
Et là je commence à butter sur le manque de documentation "appliquée"(y compris chez l'éditeur)
Je dégaine le FDMetaInfoQuery:
qui me sert ce message :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 FDMetaInfoQuery1.MetaInfoKind := mkTableTypeFields; FDMetaInfoQuery1.Open;dont je ne sais pas quoi faireLe projet FormulaireFB.exe a déclenché la classe d'exception EFDException avec le message '[FireDAC][Phys][FB]-339. Une valeur d'argument de méta-données [table type name] doit être spécifiée'.
Une idée ?
Partager