为VBA中的每个SQL记录创建唯一的ID

时间:2020-11-11 19:25:44

标签: excel vba

我有一个查询要从SQL的表中获取MAX recordId。然后,将值放在数组中,然后将1加到变量中。然后,我使用变量在SQL中创建recordId。如何为每个循环将recordId加1?

query3 = "SELECT MAX(tbl_eInvoice_Main.RecordID) AS RecordID, " & _
            "MAX(tbl_ImportDate.toolImportId) As toolImportId FROM tbl_eInvoice_Main " & _
            "INNER JOIN tbl_ImportDate ON tbl_eInvoice_Main.ToolImportID = tbl_ImportDate.ToolImportID;"
    rs.Open query3, con, adOpenStatic, adLockReadOnly, adCmdText
    arr = rs.GetRows(1)
    RecordID = arr(0, 0) + 1
    ToolImportId = arr(1, 0) + 1

Worksheets("DATA").Activate
    Dim rng As Range: Set rng = Application.Range("A2:IP1000")
    Dim row As Range
    For Each row In rng.Rows

query2 = "INSERT INTO tbl_eInvoice_Main (RecordID) values (" & RecordID & ")"

con.Execute query2
    Next row

1 个答案:

答案 0 :(得分:1)

您可以像这样在循环内移动RecordID逻辑:

For Each row In rng.Rows
   arr(0, 0) = arr(0, 0) + 1
   query2 = "INSERT INTO tbl_eInvoice_Main (RecordID) values (" & arr(0, 0) & ")"
   con.Execute query2
Next row

但是,如果您有多个用户,此方法将无法很好地工作。只是要记住一点。

相关问题