2016-06-20 11 views
0

クエリを使用してAccess 2007または2010に既に存在するテーブルに、いくつかの新しい列を追加しようとしています。今私のコードは、この(はい、私はこれまでひどく新たなんだ)のようになります。ACCESS SQL複数の列が存在しない場合の追加

ALTER TABLE AC_PROPERTY

は、ダブル、ダブルダブル

JAB_3を

JAB_2をJAB_1を追加します。

この3つの列が存在しない場合は正しく追加されますが、存在する場合はエラーメッセージが表示され、クエリが実行されません。存在しない場合にのみ各列を追加する必要があります。誰もが私のコードは、各列がそれを追加しようとする前に存在するかどうかをチェックするように見えるように助けてもらえますか?

注:各列に対して3つのクエリを実行しますが、実際には20個以上の列を追加する必要があります。これは私の実際の使用の単純な例です。

ありがとうございました!各追加 - ここで

+0

ラン3つのクエリを閉じる/むしろ開口部よりも、同じサブルーチン内のすべてのフィールドをチェックする方が良いだろう1つのフィールド。そうすれば、もし存在すれば、それは次の2つを追加しようとします。 vbaコードが存在するかどうかを確認するには、教えてください。 –

+0

これは私の実際の使用の単純な例です。存在しない場合は、20個以上の列を追加する必要があります。 VBAコードは本当に役に立ちます。どのように使用するのか分かりませんが、実際の例を変更することができます!本当にありがとう! @ WayneG.Dunn – Obsolescence

答えて

0

は、いくつかの古いコードです....それだけなどDB、TDF、

Option Compare Database 
Option Explicit 

Function Check_If_Exists() 
Dim strStatus As String 
    ' Add calls for the fields you want to append 
    strStatus = Add_Field("MyFLd2", "Double") 
    If strStatus = "Exists" Then 
     Debug.Print "field present" 
    ElseIf strStatus = "Added" Then 
     Debug.Print "field added" 
    End If 
End Function 

Function Add_Field(strFN, strType) As String 

Dim db As DAO.Database 
Dim td As DAO.TableDef 
Dim fd As DAO.Field 
Dim strSQL As String 

    On Error GoTo Error_Trap 
    Set db = CurrentDb 
    Set td = db.TableDefs("Table1") 


'  ' List all field names 
'  For Each fd In td.Fields 
'   Debug.Print fd.Name 
'  Next fd 

    If IsNull(td.Fields(strFN)) Then 
     Add_Field = "Exists" 
    End If 

    Set fd = Nothing 
    Set td = Nothing 
    Set db = Nothing 
    Exit Function 
Error_Trap: 
    Debug.Print Err.Number & vbTab & Err.Description 
    If Err.Number = 3265 Then 
     Add_Field = "Added" 
     strSQL = "alter table Table1 ADD " & strFN & " " & strType & ";" 
     db.Execute strSQL 
     db.TableDefs.Refresh 
    End If 
    Exit Function 
    Resume 
End Function 
関連する問題