在MS Access 64位下,Alter Table不起作用。为什么?

时间:2011-09-14 02:18:45

标签: ms-access vba 64-bit access-vba ms-access-2010

我正在尝试编写一个简单的函数来调整Windows 7下MS Access 64位版本中的文本字段。它失败并显示错误3420,对象无效或不再设置。为什么是这样?你不能在MS Access 64bit版本下改变代码中的表吗?

以下是代码:

Private Function ResizeSingleTextField(sTableName As String, _
                                       sFieldName As String, _
                                       iLength As Integer)

    ResizeSingleTextField = False

    Dim sSQL As String

    sSQL = "ALTER TABLE " & sTableName & " " _
    & "ALTER COLUMN " & sFieldName & " " _
    & "TEXT (" & iLength & ")"

    CurrentDb.Execute (sSQL)

    ResizeSingleTextField = True
    Exit Function

End Function


Public Sub TestIt()

    Dim result As Boolean

    result = ResizeSingleTextField("GregTest", "MyTextField", 12)

    Debug.Print result

End Sub

1 个答案:

答案 0 :(得分:1)

这是该版本的Access中的一个已知错误。请参阅MS知识库Article 2516493

摘录于此:

  

此修补程序包修复的问题
  假设您尝试更改   使用数据定义语言(DDL)查询的表结构   和64位版本的Microsoft中的ALTER TABLE语句   Access 2010. ALTER TABLE语句包含ALTER COLUMN   参数。在这种情况下,您收到以下错误信息:   对象无效或不再设置。当您尝试执行DDL查询时   通过VBA代码,您收到以下错误消息:运行时   错误'3420':对象无效或不再设置。

4月份有一个hotfix来解决这个问题。 Access 2010 Runtime Service Pack 1于2011年8月发布,根据发行说明包含针对此问题的修复程序。

  

访问 - 尝试时出现“对象无效或不再设置”错误   使用ALTER TABLE查询来更改字段类型或大小。