访问数组中的VBA更新值?

时间:2019-01-18 15:20:12

标签: arrays vba string loops

我正在处理的项目有问题,并且在启动循环时更新了数组中的字符串。

为了提供一些背景信息,该代码旨在修正用户在输入信息时可能犯的错误,并一次性更新所有相关表。

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)。

0 个答案:

没有答案