2009-12-28 1 views
1

В FAQ Firebird разъясняется how to create a BOOLEAN domain. Вероятно, наиболее интересная часть находится в конце, где он говорит:Использование DBX для распознавания булевых элементов с помощью Firebird

Если вы используете библиотеку подключения как OleDB под .Net, вы можете переопределить метод GetSchema поставщика OLEDB, поэтому в DataTables вы получаете от запросы имеют собственные .Net booleans.

Есть ли способ сделать это с помощью DB Express? Я использую драйвер DBX от http://sites.google.com/site/dbxfirebird/, и было бы неплохо иметь возможность возвращать экземпляры TBooleanField в мои наборы данных вместо TSmallintField.

+0

Вы можете сделать это вручную. Это достаточно хорошо? –

+0

Было бы, если бы я знал, как это сделать. Но если бы я это сделал, мне бы не пришлось спрашивать здесь ... –

+0

Редактор полей правой кнопкой мыши, «Новое поле», заполните элементы управления. Я не был уверен, что вы спрашиваете, как это сделать или как это происходит автоматически, когда вы добавляете все поля. –

ответ

0

Он обрабатывается этими двумя способами, что каждый потомок TDataSet может переопределить:

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

Это в основном то же самое, что предложил Крейг. Это будет работать только с типами данных, которые драйвер DBX уже распознает. Мне нужно научить его новому типу, поэтому он будет генерировать объекты TFieldDef, тип данных которых является булевым в первую очередь. –

+0

Я думаю, вы можете изучить TFieldDef, чтобы увидеть, какая основная метаинформация содержит (BOOLEAN - это домен, содержащий только значения 0 и 1, или может быть NULL). У меня не было времени попробовать это, потому что я получил семью; первый шанс будет после праздничного сезона. –