2016-05-11 3 views
1

alter tableコマンドで行にエラーが発生しました。ループを使って毎月変数に基づいて毎月のフィールドを作成しようとしていますが、希望の結果が得られないので、それは進んでいません。コードはmonthlyという列を作成し、2回目の反復でエラーを返します。コードは以下の通りである:vbaを使用してアクセスする際に新しいフィールドをテーブルに追加する

Dim x As Integer 
Dim Months As Integer 
Dim monthly As String 

Months = Me.YearsBack * 12 

Set db = CurrentDb 
If Me.Period = "monthly" Then 
    For x = 1 To 2 
    'Months 
    monthly = "WP M" & x 
    db.Execute "ALTER TABLE tblEPdata ADD COLUMN [monthly] string;" 
    Next 
End If 

答えて

0

[monthly]は、それが自動的に同じ名前の変数から解決されていない、単にあなたが実行されている文字列の一部です。あなたは文字列の連結必要

Dim S As String 

S = "ALTER TABLE tblEPdata ADD COLUMN [" & monthly & "] string;" 
Debug.Print S 
db.Execute S 

Debug.Printは、デバッグに役立ちます、出力がイミディエイトウィンドウ(Ctrlキー+ G)に行きます。

上記のコードでは、構文の色付けに注意してください。

"ALTER TABLE tblEPdata ADD COLUMN [" 

は定数文字列です。

&は、文字列と変数を新しい文字列に連結します。

フィールド名にスペース(例:WP M2)が含まれているため、[大括弧]が必要です。

+0

お返事ありがとうございます。しかし、私はなぜ変数の前に記号を使用するのか理解していません。それぞれの内容を説明できますか? – zkhan

+1

@zkhan:編集を参照してください。その場でALTER TABLEステートメントを作成して実行する前に、VBAのチュートリアル/入門を探してください。 – Andre

関連する問題