ACCESS SQL添加多列如果它们不存在

时间:2016-06-20 21:41:54

标签: sql ms-access

我尝试使用查询向Access 2007或2010中已存在的表添加几个新列。现在我的代码看起来像这样(是的,我对此非常陌生):

ALTER TABLE AC_PROPERTY

添加JAB_1加倍,

JAB_2加倍,

JAB_3 double;

如果三列都不存在,则会正确添加三列,但如果存在任何列,则会收到错误消息并且查询无法运行。我需要它添加每个列只有它不存在。任何人都可以帮助我的代码应该是什么样的,以便在尝试添加之前检查每个列是否存在?

注意:我只会对每列进行3次查询,但实际上我需要添加20多列。这只是我实际使用的一个简单例子。

感谢十亿!

1 个答案:

答案 0 :(得分:0)

这是一些旧代码....最好只检查同一子程序中的所有字段,而不是打开/关闭数据库,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