我尝试使用查询向Access 2007或2010中已存在的表添加几个新列。现在我的代码看起来像这样(是的,我对此非常陌生):
ALTER TABLE AC_PROPERTY
添加JAB_1加倍,
JAB_2加倍,
JAB_3 double;
如果三列都不存在,则会正确添加三列,但如果存在任何列,则会收到错误消息并且查询无法运行。我需要它添加每个列只有它不存在。任何人都可以帮助我的代码应该是什么样的,以便在尝试添加之前检查每个列是否存在?
注意:我只会对每列进行3次查询,但实际上我需要添加20多列。这只是我实际使用的一个简单例子。
感谢十亿!
答案 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