2011-09-14 6 views
2

Windows 7では、MS Access 64ビット版のテキストフィールドのサイズを変更する簡単な関数を作成しようとしています。エラー3420でオブジェクトが無効であるか、設定されなくなりました。どうしてこれなの? MS Access 64bit版のコードでテーブルを変更することはできませんか?ここで変更テーブルは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を使用すると返されるデータベースオブジェクトはその1行に存在することを意味します。それでもやります)。また、 'dbFailOnError'スイッチとエラーハンドラなしで、すべてのCurrentDB.Executeを実行するべきではありません。 –

答えて

1

それは、アクセスのバージョンでの既知のバグです。サポート技術情報Article 2516493を参照してください。

は、ここに抜粋:この修正プログラムパッケージが
は、あなたがデータ定義言語(DDL)クエリ とALTER TABLEを使用して、テーブルの 構造を変更しようとしていると修正

発行しますステートメントは、Microsoft Access 2010の64ビット版です。ALTER TABLEステートメントには、ALTER COLUMN パラメーターが含まれています。この場合、次のエラーメッセージが表示されます。 オブジェクトが無効であるか、設定されていません。実行時に VBAコードを実行しようとすると、次のエラーメッセージが表示されます。実行時 エラー '3420':無効なオブジェクトまたは設定されていません。

この問題を解決するために4月に公開されたhotfixがあります。 Access 2010 Runtime Service Pack 1は2011年8月にリリースされ、リリースノートによればこの問題の修正が含まれています。

フィールドタイプまたはサイズを変更するために、ALTER TABLEクエリを使用しようとすると、 "オブジェクトが無効であるか、設定されていません"というエラーが発生します。

+0

Johnに感謝します。それはそれだった。 –

関連する問題