簡體   English   中英

SQL記錄計數VBA ADODB連接

[英]SQL Record Count VBA ADODB connection

嘗試使用ADODB記錄集在VBA中處理RecordSet計數,但似乎無法使該計數正常工作。

我在工作表中有50條具有唯一ID的記錄,其中一些已經在數據庫中,而有些則沒有,代碼本身就是循環遍歷每個單元格並獲取該單元格的值並通過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,然后將=符號弄亂,然后將其更改為<或>,則結果將更改為其中一個,這使我相信它不會將Recordcount重置為零因此它每次都會堆疊,因此它總是在每個循環中向上而不是返回0。

我試圖告訴它關閉並等於零,並四處移動各種代碼,但無濟於事。

所有幫助

您需要檢查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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM