【问题标题】:ACCESS SQL Adding Multiple Columns If They Don't ExistACCESS SQL 添加多个列(如果它们不存在)
【发布时间】:2016-06-21 07:25:05
【问题描述】:

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

ALTER TABLE AC_PROPERTY

添加 JAB_1 双倍,

JAB_2 双倍,

JAB_3 双倍;

当三列都不存在时,这会正确添加三列,但如果其中任何一列存在,我会收到一条错误消息并且查询无法运行。只有当它不存在时,我才需要它来添加每列。谁能帮助我的代码在尝试添加之前检查每列是否存在?

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

感谢十亿!

【问题讨论】:

  • 运行三个查询 - 每个查询添加一个字段。这样,如果存在一个,它仍然会尝试添加接下来的两个。如果您希望 vba 代码检查它们是否存在,请告诉我。
  • 这只是我实际使用的一个简单例子。如果它们不存在,我需要添加 20 多列。 VBA 代码真的很有帮助。我不知道如何使用它,但我可以修改一个工作示例!非常感谢! @WayneG.Dunn

标签: sql ms-access


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-08
    • 1970-01-01
    • 1970-01-01
    • 2010-11-01
    • 2016-03-19
    • 2019-03-14
    • 2018-02-02
    • 2019-03-12
    相关资源
    最近更新 更多