【发布时间】:2011-09-14 02:18:45
【问题描述】:
我正在尝试编写一个简单的函数来调整 Windows 7 下 MS Access 64 位版本中的文本字段的大小。它失败并出现错误 3420、对象无效或不再设置。为什么是这样?您不能在 MS Access 64 位版本下再更改代码中的表吗?
代码如下:
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
【问题讨论】:
-
它在哪一行抛出错误?
-
它在 CurrentDb.Execute(sSQL) 行上失败。请参阅下面的其他评论。
-
看起来这是一个实际的错误(因为它有一个修补程序),但你的代码让我很困扰。我不会使用 CurrentDB,而是将数据库对象分配给一个变量,并从中执行(这保证了持久性,而使用 CurrentDB 意味着返回的数据库对象存在于该单行上;在这里不应该相关,但我会仍然这样做)。此外,如果没有
dbFailOnError开关和错误处理程序,您永远都不应该使用所有 CurrentDB.Execute。 -
戴夫,感谢您的建议。
标签: ms-access 64-bit vba ms-access-2010