2009-12-28 6 views
1

La FAQ Firebird explique how to create a BOOLEAN domain. Probablement la partie la plus intéressante est à la fin, où il est dit:Rendre DBX reconnaître les booléens avec Firebird

Si vous utilisez une bibliothèque de connectivité comme OleDB sous .Net, vous pouvez remplacer la méthode GetSchema du fournisseur OleDb, donc les DataTables que vous obtenez de Les requêtes ont des booléens .Net natifs.

Existe-t-il un moyen de le faire avec DB Express? J'utilise le pilote DBX de http://sites.google.com/site/dbxfirebird/, et il serait bien de pouvoir récupérer des instances TBooleanField dans mes jeux de données au lieu de TSmallintField.

+0

Vous pouvez le faire manuellement. Est-ce suffisant? –

+0

Ce serait si je savais comment. Mais si je le faisais, je n'aurais pas à demander ici ... –

+0

L'éditeur de champs clic droit, "Nouveau champ", remplit les contrôles. Je n'étais pas sûr si vous demandiez comment faire ceci ou comment le faire se produire automatiquement quand vous ajoutez tous les champs. –

Répondre

0

Il est géré par ces deux méthodes que chaque descendant de TDataSet peut passer outre:

function TDataSet.GetFieldClass(FieldType: TFieldType): TFieldClass; 
begin 
    Result := DefaultFieldClasses[FieldType]; 
end; 

function TDataSet.GetFieldClass(FieldDef: TFieldDef): TFieldClass; 
begin 
    Result := GetFieldClass(FieldDef.DataType); 
end; 

--jeroen

+1

C'est fondamentalement la même chose que Craig l'a suggéré. Cela ne fonctionnera qu'avec les types de données que le pilote DBX reconnaît déjà. Ce dont j'ai besoin est de lui enseigner un nouveau type, donc il va générer des objets TFieldDef dont le type de données est booléen en premier lieu. –

+0

Je pense que vous pouvez examiner le TFieldDef pour voir quelles informations méta sous-jacentes il contient (BOOLEAN est un domaine contenant uniquement les valeurs 0 et 1, ou peut être NULL). Je n'ai pas encore eu le temps de l'essayer parce que j'ai eu de la famille; la première chance sera après la saison des vacances. –