我想以编程方式在MS Access表中创建一个新列。我试过的ALTER TABLE MyTable Add MyField DECIMAL (9,4) NULL;
许多排列,并得到:如何使用Alter Table在Access中创建小数字段?
语法错误字段定义
我可以轻松地创建进入一个Double
类型的数场,但我想decimal
。我强烈希望在单个ALTER TABLE
声明中执行此操作,而不必创建一个字段然后对其进行更改。
我使用Access 2003中
我想以编程方式在MS Access表中创建一个新列。我试过的ALTER TABLE MyTable Add MyField DECIMAL (9,4) NULL;
许多排列,并得到:如何使用Alter Table在Access中创建小数字段?
语法错误字段定义
我可以轻松地创建进入一个Double
类型的数场,但我想decimal
。我强烈希望在单个ALTER TABLE
声明中执行此操作,而不必创建一个字段然后对其进行更改。
我使用Access 2003中
如果你想在一个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
的ALTER TABLE语法仅在喷气4.0/ACE,而在 ANSI-92查询模式的支持。尝试使用ADO连接,例如
CurrentProject.Connection.Execute “ALTER TABLE MYTBL ADD COLUMN myColumn DECIMAL(9,4)”
小数数据类型不是在默认的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