我正在使用VBA自动创建一列,并在Access DB中的多个表中更新该列。我已经使代码工作了,但是我想使用循环使其动态化。当我进入一个循环时,代码会给我一条错误消息。如何使代码动态化? 例如,此代码有效,它在表(1234_CompanyA)中添加了列(ID),并用1234-E填充了该列。
Dim strDdl As String
strDdl = "ALTER TABLE 1234_CompanyA ADD COLUMN ID TEXT(255)"
CurrentProject.Connection.Execute strDdl
Dim strDdl2 As String
strDdl2 = "UPDATE [1234_CompanyA] SET [1234_CompanyA].[ID]=""1234-E"""
CurrentProject.Connection.Execute strDdl2
但是我想通过使用代码将表定义为对象来使代码成循环:
Dim tbl(3) As Object
Dim strDdl As String
Dim strDdl2 As String
Dim id(3) as String
tbl(1) = [1234_CompanyA]
tbl(2) = [1234_CompanyB]
tbl(3) = [1234_CompanyC]
id(1)= "1234-E"
id(2)= "5678-C"
id(3)= "9012-G"
For i = 1 To 3
strDdl = "ALTER TABLE tbl(i) COLUMN ID TEXT(255)"
CurrentProject.Connection.Execute strDdl
strDdl2 = "UPDATE tbl(i) SET tbl(i).[ID]= id(1)"
CurrentProject.Connection.Execute strDdl2
Next i
我如何使代码循环工作?
谢谢:)
答案 0 :(得分:0)
您需要像这样创建命令:
Dim tbl(3) As Object
Dim strDdl As String
Dim strDdl2 As String
Dim id(3) As String
tbl(1) = "[1234_CompanyA]"
tbl(2) = "[1234_CompanyB]"
tbl(3) = "[1234_CompanyC]"
id(1) = "1234-E"
id(2) = "5678-C"
id(3) = "9012-G"
For i = 1 To 3
strDdl = "ALTER TABLE " & tbl(i) & " COLUMN ID TEXT(255)"
CurrentProject.Connection.Execute strDdl
strDdl2 = "UPDATE " & tbl(i) & " SET " & tbl(i) & ".[ID] = '" & id(1) & "'"
CurrentProject.Connection.Execute strDdl2
Next i
请注意,变量已被分解且未嵌入字符串中,并且引号已添加到tbl
变量中。