2008-10-08 131 views
6

我想以编程方式在MS Access表中创建一个新列。我试过的ALTER TABLE MyTable Add MyField DECIMAL (9,4) NULL;许多排列,并得到:如何使用Alter Table在Access中创建小数字段?

语法错误字段定义

我可以轻松地创建进入一个Double类型的数场,但我想decimal。我强烈希望在单个ALTER TABLE声明中执行此操作,而不必创建一个字段然后对其进行更改。

我使用Access 2003中

回答

3

如果你想在一个acces表中创建一个新的列,很容易使用DAO.tableDef对象:

Of cou rse你可以进一步删除它。

对于ADODB(或ADOX?)对象,您可能会这样做,但只要您正在处理mdb文件,DAO就会很直接且高效。

PS:检查一些论坛后,似乎有一个小数字段和DAO的错误。 http://allenbrowne.com/bug-08.html。建议是“去双倍”(这是我通常做的,以避免任何有关小数舍入的松散问题)或使用“含蓄”ADO来修改您的数据库

strSql = "ALTER TABLE MyTable ADD COLUMN MyField DECIMAL (28,3);" 
CurrentProject.Connection.Execute strSql 
3

的ALTER TABLE语法仅在喷气4.0/ACE,而在 ANSI-92查询模式的支持。尝试使用ADO连接,例如

CurrentProject.Connection.Execute “ALTER TABLE MYTBL ADD COLUMN myColumn DECIMAL(9,4)”

7

小数数据类型不是在默认的Jet 4.0 mdb文件支持。您必须使用SQL Server兼容性语法(ANSI 92)设置才能在SQL窗口中使用十进制数据类型。

点击菜单工具>选项。点击Tables/Query选项卡。在SQL Server兼容性语法(ANSI 92)部分标记“此数据库”的复选框。这个模式会影响整个数据库,包括带有通配符的查询,所以你可能想在你的数据库副本上试试这个。

粘贴到SQL窗口这样的:

ALTER TABLE MyTable 
    Add COLUMN MyField DECIMAL (9,4) NULL; 

如果你不想改变你的数据库的模式,你必须使用与ADODB库VBA代码:

Dim conn As ADODB.Connection 

Set conn = CurrentProject.Connection 
conn.Execute "ALTER TABLE MyTable " _ 
    & "ADD COLUMN MyField DECIMAL (9,4) NULL;" 
conn.Close