我正在处理的项目有问题,并且在启动循环时更新了数组中的字符串。
为了提供一些背景信息,该代码旨在修正用户在输入信息时可能犯的错误,并一次性更新所有相关表。
Option Compare Database
Dim Var1 As Variant, SQL_select As Variant, SQL_update As Variant, newVar1 As String
Dim j As Integer, rsField As Variant, n As Variant
Public Sub amendCust_control()
Dim db As Database, rs As Recordset, cntRec As Integer, i As Integer, SQL_s As String, SQL_u As String
For j = 0 To 3
Var1 = Forms!mm_amendcustomer_temp!Var1
newVar1 = Forms!mm_amendcustomer_temp!Text50
assSelArray
SQL_s = SQL_select(j)
Set db = CurrentDb
Set rs = db.OpenRecordset(SQL_s)
If rs.EOF Then
cntRec = 0
Else
rs.MoveLast
cntRec = rs.RecordCount
End If
If cntRec > 0 Then
ReDim n(0 To (cntRec - 1))
rs.MoveFirst
For i = 0 To (cntRec - 1)
n(i) = rs.Fields(rsField(j))
assignSQLuparray 'populates update field with current value of n(j)
SQL_u = SQL_update(j)
Set SQL_update = Nothing
rs.MoveNext
Next i
Else
Exit Sub
End If
Set rs = Nothing
Set db = Nothing
Next j
Set rs = Nothing
Set db = Nothing
End Sub
然后我将我的三个字符串数组拆分为两个子,如下所示。
Private Sub assSelArray()
SQL_select = Array(("SELECT [Var1] FROM [Customer] WHERE [Var1] = '" & Var1 & "'"), _
("SELECT [transNo] FROM [Transactions] WHERE [Var1] = '" & Var1 & "'"), _
("SELECT [VAR_O] FROM [Overpayment] WHERE [Var1] = '" & Var1 & "'"), _
("SELECT [Access ID] FROM [Audit History] WHERE [Var1] = '" & Var1 & "'"))
rsField = Array("Var1", "transNo", "VAR_O", "[Access ID]")
End Sub
这是我遇到的难题,因为 n(i)的值不会在代码的每次迭代中更新,即,当n(i)更改主子项中的值时,它在数组中不这样做。
Private Sub assignSQLuparray()
SQL_update = Array(("UPDATE [Customer] SET Var1 = '" & newVar1 & "' WHERE Var1 = '" & n(i) & "'"), _
("UPDATE [Transactions] SET Var1 = '" & newVar1 & "' WHERE transNo = '" & n(i) & "'"), _
("UPDATE [Overpayment] SET Var1 = '" & newVar1 & "' WHERE VAR_O = '" & n(i) & "'"), _
("UPDATE [Audit History] SET Var1 = '" & newVar1 & "' WHERE [Access ID] = '" & n(i) & "'"))
End Sub
我希望有人可以在调用它们之前从本质上“刷新”数组值。救命?
输出如下:
n(0) = 5
UPDATE [Audit History] SET Var = newVar1 WHERE [Access ID] = '5'
n(1) = 6
UPDATE [Audit History] SET Var = newVar1 WHERE [Access ID] = '5'
n(2) = 7
UPDATE [Audit History] SET Var = newVar1 WHERE [Access ID] = '5'
n(3) = 8
UPDATE [Audit History] SET Var = newVar1 WHERE [Access ID] = '5'
n(4) = 11
UPDATE [Audit History] SET Var = newVar1 WHERE [Access ID] = '5'
请注意,访问ID不会更改为n(0到4)。