我想问一下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
问题是它只允许我进行一次迭代。 错误说"当对象打开时不允许操作"
我知道这是因为迭代中有开启,这意味着我一直打开一个打开的连接。
任何建议?
任何帮助将不胜感激! 谢谢!
答案 0 :(得分:0)
您需要将rs.close放在next i
之前,因为每次迭代都是一个单独的记录集。
你可能还需要在循环中移动连接(conn.open和conn.close),我知道我过去一直在使用它,但我不确定它是否是必需的,或者我当时做了什么