VB Excel循环动态查询

时间:2015-08-10 03:54:52

标签: vb.net excel access-vba

我想问一下Vb Excel,

这里是代码

Sub connectDatabase()
Dim conn As New Connection
Dim rs As New Recordset
Dim rangeA As Variant
Dim i As Integer
Dim kodeKabupaten As String, deskripsiKecamatan As String, deskripsiKelurahan As String
rangeA = Application.ActiveSheet.UsedRange

    strcon = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
    "Data Source=D:\Kepemerintahan.accdb;"
    conn.Open (strcon)



    For i = LBound(rangeA, 1) + 1 To UBound(rangeA, 1)
        qry = "SELECT * FROM Kepemerintahan where kode_kabupaten = '" & Cells(i, 5).Value & "' and deskripsi_kecamatan = '" & Cells(i, 7).Value & "' and deskripsi_kelurahan = '" & Cells(i, 9).Value & "'"
        rs.Open qry, conn, adOpenKeyset
        If IsNull(qry) Then
            markError (i)
        End If
    Next i
    rs.Close
    conn.Close
End Sub

Function markError(ByVal i As Integer)
    Cells(i, 5).Font.Color = vbRed
    Cells(i, 7).Font.Color = vbRed
    Cells(i, 9).Font.Color = vbRed
End Function

问题是它只允许我进行一次迭代。 错误说"当对象打开时不允许操作"

我知道这是因为迭代中有开启,这意味着我一直打开一个打开的连接。

任何建议?

任何帮助将不胜感激! 谢谢!

1 个答案:

答案 0 :(得分:0)

您需要将rs.close放在next i之前,因为每次迭代都是一个单独的记录集。

你可能还需要在循环中移动连接(conn.open和conn.close),我知道我过去一直在使用它,但我不确定它是否是必需的,或者我当时做了什么