2017-06-28 43 views
0

我有一个带有TBooleanField的FDTable。 数据库是dBase IV。通过FDTable将生成的SQL脚本中的BOOLEAN更改为LOGICAL

我要与创建表:

<TFDTable>.CreateTable(False, [tpTable]); 

,如果我没有在表中的TBooleanField工作。

在CreateTable上生成的SQL脚本中,TBooleanField的类型为BOOLEAN。 FDConnection或FDTable属性中是否有将BOOLEAN更改为LOGICAL的内容。

SQL脚本:

CREATE TABLE ACT_01 (
    ISDOC BOOLEAN, 
    DOCTYPE VARCHAR(1)) 

必须更改:

CREATE TABLE ACT_01 (
    ISDOC LOGICAL, 
    DOCTYPE VARCHAR(1)) 

好吧,我可以执行SQL自己没有CREATETABLE但我想知道这是否是可能的布尔改变

FDConnection1.Params.Add('DriverID=ODBC'); 
    FDConnection1.Params.Add('ODBCDriver={Microsoft dBase Driver (*.dbf)}'); 
    FDConnection1.Params.Add('Database=C:\Projects\Test Projects\DBase table\Data'); 
0:从梅索德TFDTable.CreateTable

FDConnection逻辑

+0

如果您使用的是正确的驱动程序,它应该为您处理这些细节。例如,Advantage驱动程序会自动将TBooleanField映射到逻辑字段,并透明地执行所有值转换。 –

+0

@KenWhite:你是说我必须使用Advantage驱动程序? – Ravaut123

+0

不,我的意思是,如果您使用适当的驱动程序,驱动程序应自动为您处理这些类型的转换*,这正是我在我以前的评论的第一句中所说的。 –

回答

0

FireDAC使用硬编码的数据类型产生CREATE命令所有不支持 ODBC驱动程序(ODBC的命令产生的GetColumnType方法不会查询DBMS数据类型名司机)。

更重要的是,FireDAC does not recognize任何ftLogical数据类型,所以您不能创建一个自定义的数据类型映射,即使这是你应该在这里做什么。因此,你现在运气不佳。