Sql 使用access查询更改数据字段类型

Sql 使用access查询更改数据字段类型,sql,vba,ms-access,Sql,Vba,Ms Access,我需要将单个字段的数据类型从长整数类型更改为十进制,这只需使用属性或设计视图即可轻松完成 但是,我想知道是否可以使用查询或简短的VBA脚本来实现这一点?我无法添加新字段,它必须是现有字段。我们aso必须来回执行此操作,这取决于哪个程序正在读取数据库 问题是我们正处于两个项目之间的过渡期。我们有Microstation V8i,它带有一个附加组件,可以从.mdb(32位连接)数据库中读取数据,该数据库中的字段和表是预定义的,该特定字段是一个长整数。另一个程序是Microstation Connec

我需要将单个字段的数据类型从长整数类型更改为十进制,这只需使用属性或设计视图即可轻松完成

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

问题是我们正处于两个项目之间的过渡期。我们有Microstation V8i,它带有一个附加组件,可以从.mdb(32位连接)数据库中读取数据,该数据库中的字段和表是预定义的,该特定字段是一个长整数。另一个程序是Microstation ConnectEdition,它使用一个更新版本的外接程序,该外接程序连接到一个几乎相似的数据库(64位),但是该外接程序更新的开发人员已将该字段更改为十进制(除其他外)

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

编辑添加的VBA:

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连接执行
altertable
语句,可以在这些数据类型之间切换字段。(见艾伦·布朗的。)

strSQL=“ALTER TABLE MyTable ALTER COLUMN开关\u type LONG;”
CurrentProject.Connection.Execute strSQL
strSQL=“ALTER TABLE MyTable ALTER COLUMN switch_type DECIMAL(18,9);”
CurrentProject.Connection.Execute strSQL

我在Access Immediate窗口中测试了这些示例,因此,如果您愿意的话,应该可以很容易地将它们合并到VBA过程中。

使用视图(查询),它可以转换数据类型,尤其是在您只需要读取(至少从一个应用程序)的情况下。嗯,很难想象,为什么两个程序都不能读取整数或小数-格式问题?你能解释一下你遇到了什么问题,你觉得有必要这样做吗?我同意Arvo的观点,即使用视图是最好的选择,或者为我们提供更多信息,以便我们可以帮助您找到更好的解决方案。@Arvo感谢您的回复,我已尝试添加更多信息。根据外接程序的开发人员,数据类型更改是必要的。当您使用十进制而不是长整数时,Microstation旧的外接程序是否会出错?从技术上讲,这些数据应该是可读写的,没有问题;当然,插件可能会检查字段类型和错误。如果是这样,并且您需要在两个加载项中写入数据,那么视图可能不是解决方案,至少在MS Access中不是。啊,我忘了-如果您确实需要更改列类型,那么官方文档在这里: