2011-09-14 79 views
2

我正試圖編寫一個簡單的函數來調整Windows 7下MS Access 64位版本中的文本字段的大小。它失敗,錯誤3420,對象無效或不再設置。爲什麼是這樣?你不能在MS Access 64位版本中更改代碼表嗎?Alter Table在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 
+0

它會在哪一行發生錯誤? – JohnFx

+0

它在CurrentDb.Execute(sSQL)行失敗。請參閱下面的其他評論。 –

+0

看起來這是一個實際的錯誤(因爲它有一個修補程序),但是你的代碼困擾我。我不會使用CurrentDB,而是將數據庫對象分配給一個變量,並從中執行(保證持久性,而使用CurrentDB意味着返回的數據庫對象存在於這一行上;這裏不應該有關,但我會仍然這樣做)。此外,你不應該沒有'dbFailOnError'開關和錯誤處理程序的所有CurrentDB.Execute。 –

回答

1

它在該版本的Access的一個已知的bug。請參閱MS知識庫文章Article 2516493

這裏摘錄:

問題,這個程序包修復
假設您嘗試通過使用數據定義語言(DDL)查詢 和ALTER TABLE更改表的 結構語句在Microsoft Access的64位版本 Access 2010. ALTER TABLE語句包括ALTER COLUMN 參數。在這種情況下,您收到以下錯誤信息: 對象無效或不再設置。當您嘗試通過VBA代碼執行DDL查詢 時,您會收到以下錯誤消息:運行時 錯誤'3420':對象無效或不再設置。

有一個hotfix在4月出現,以解決問題。 Access 2010 Runtime Service Pack 1於2011年8月問世,並根據發佈說明包含此問題的解決方案。

訪問 - 「對象無效或不再設置」當您嘗試 使用ALTER TABLE查詢,更改字段類型或大小發生錯誤。

+0

謝謝約翰。就是這樣。 –