关于sql:使用访问查询更改数据字段类型

Change data field type using access query

我需要将单个字段数据类型从Long Integer类型更改为Decimal,只需使用属性或设计视图即可轻松完成。

但是我想知道是否可以使用查询或简短的VBA脚本来实现?我无法添加新字段,它必须是现有字段。我们也必须来回执行此操作,具体取决于正在读取数据库的程序。

问题在于我们处于两个程序之间的过渡期。我们拥有带有附件的Microstation V8i,该附件可从.mdb(32位连接)数据库中读取数据,该数据库中的字段和表是预定义的,并且此特定字段是Long Integer。另一个程序是Microstation ConnectEdition,它使用附加组件的更新版本,该附加组件具有到几乎相似的数据库(64位)的连接,但是,附加组件的更新的开发人员已将该字段更改为Decimal(其中其他一些东西)。

由于我们当前同时使用这两个程序,并且需要能够互换使用这两个数据库,因此我正在创建一个组合的宏/查询,以更改必要的部分。为了使此数据类型更加自动化,我需要做的最后一件事是更改数据类型。

编辑添加的VBA:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Public FUNCTION changeDataType1()

Dim db AS DAO.Database
Dim TABLE AS DAO.TableDef

SET db = CurrentDb
strSql ="ALTER TABLE feature ALTER COLUMN mslink DECIMAL(18,0);"
CurrentProject.Connection.Execute strSql
strSQL1 ="ALTER TABLE ugfeature ALTER COLUMN feature DECIMAL(18,0);"
CurrentProject.Connection.Execute strSQL1

SET db = Nothing

END FUNCTION


您可以通过从ADO连接执行ALTER TABLE语句来在这些数据类型之间切换字段。 (请参阅Allen Browne关于DECIMAL支持的说明。)

1
2
3
4
5
strSQL ="ALTER TABLE MyTable ALTER COLUMN switch_type LONG;"
CurrentProject.Connection.Execute strSQL

strSQL ="ALTER TABLE MyTable ALTER COLUMN switch_type DECIMAL(18,9);"
CurrentProject.Connection.Execute strSQL

我在"立即访问"窗口中测试了这些示例,因此,如果您愿意的话,应该很容易将它们合并到VBA过程中。