【问题标题】:Making DBX recognize booleans with Firebird使用 Firebird 让 DBX 识别布尔值
【发布时间】:2009-12-28 17:36:30
【问题描述】:

Firebird 常见问题解答解释了how to create a BOOLEAN domain。可能最有趣的部分在最后,它说:

如果您使用连接库,例如 .Net下的OleDB,可以覆盖 OleDB 提供者的 GetSchema 方法,所以 您从查询中获得的数据表 拥有原生 .Net 布尔值。

DB Express 有没有办法做到这一点?我正在使用来自http://sites.google.com/site/dbxfirebird/ 的 DBX 驱动程序,如果能够在我的数据集中取回 TBoleanField 实例而不是 TSmallintField 肯定会很好。

【问题讨论】:

  • 您可以手动执行此操作。够好吗?
  • 如果我知道怎么做就好了。但如果我这样做了,我就不必在这里问了......
  • 右键字段编辑器,“新建字段”,填写控件。我不确定您是在问如何执行此操作,还是在添加所有字段时如何使其自动发生。
  • 哦,我明白了。不,当我检索任意查询结果时,我试图让它自动发生。
  • 我不知道该怎么做,但是 IBX 做到了(对于字符串字段;它替代了TIBStringField),你有它的来源......

标签: delphi data-binding firebird dbexpress


【解决方案1】:

每个TDataSet后代都可以覆盖这两个方法来处理:

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

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

--杰罗恩

【讨论】:

  • 这与 Craig 建议的基本相同。这仅适用于 DBX 驱动程序已经识别的数据类型。我需要的是教它一种新类型,所以它首先会生成数据类型为布尔值的 TFieldDef 对象。
  • 我认为您可以检查 TFieldDef 以查看它包含哪些基础元信息(BOOLEAN 是仅包含值 0 和 1 的域,或者可以为 NULL)。我还没有时间尝试这个,因为我让家人过来了;第一次机会将在假期之后。
猜你喜欢
  • 2022-10-19
  • 1970-01-01
  • 1970-01-01
  • 2021-12-12
  • 2021-12-01
  • 2014-03-14
  • 1970-01-01
  • 2017-03-30
  • 2019-07-10
相关资源
最近更新 更多