SQL记录计数VBA ADODB连接

时间:2014-08-26 15:26:06

标签: sql excel vba excel-vba

尝试使用ADODB记录集在VBA中处理RecordSet计数,但它似乎不能让计数正常工作。

我在具有唯一ID的工作表中记录了50条记录,其中一些已经存在于数据库中,而另一些则不存在,代码本身就是遍历每个单元格并获取其值单元格并通过SQL select语句运行它,如果有一个命中,那么说发现如果没有那么说什么。

不幸的是,似乎所有内容都会返回相同的结果,即使我知道的id也不存在。

代码吼叫

Sub NO6_ChequeCheck()

Dim con As ADODB.Connection
Dim rec As ADODB.Recordset

Set con = New ADODB.Connection
Set rec = New ADODB.Recordset


Dim sql As String
Dim client As String

Dim myRange As Range
Dim myCell As Range

Set myRange = Range("A2:A52")

Dim i As Integer
i = 2

With con
    .Provider = "MSDASQL"
    .ConnectionString = "DSN=localhostTest"
    .Open
End With

For Each myCell In myRange

    client = myCell.text

    sql = "SELECT * FROM crm_client_cheques WHERE id = '" & client & "' "

    rec.Open sql, con

    If rec.RecordCount = 0 Then
        Cells(i, "H").Value = "Nothing"
    Else
        Cells(i, "H").Value = "Found"
    End If

    rec.Close

    i = i + 1

Next myCell

我遇到的主要问题是,如果我将该0切换为50并将其与=符号混淆并将其更改为<或者>然后结果将改变为任何一个,这导致我相信它不会重新记录记录,所以它只是每次堆叠所以它总是在每个循环中上升而不会回到0。

我试过告诉它关闭并且没有任何相同的东西,并且移动了各种代码,但没有任何帮助。

所有帮助appriciated

1 个答案:

答案 0 :(得分:3)

您需要检查sql查询是否返回任何记录。你可以通过

来做到这一点
 If Not (rec.BOF And rec.EOF) Then 'There are no records
      Cells(i, "H").Value = "Nothing"
 else
      Cells(i, "H").Value = "Found"
 End if