簡體   English   中英

從Excel VBA查詢MS Access DB-如果找不到值,如何返回0?

[英]Query MS Access DB from Excel VBA - How to return 0 if no value found?

我正在從excel VBA中查詢MS Access數據庫。 如果數據庫中不存在記錄,我需要它在excel中返回0。 這是我的代碼:

Function CheckIfDateExistInDB(MyDate As Date) As Date
Dim strSql As String

strSql = "SELECT Date FROM AccessDB WHERE Date = #" & MyDate & "#"

Set AccessRS = AccessCN.Execute(strSql)
CheckIfDateExistInDB = AccessRS.Fields(0)
Set AccessRS = Nothing
End Function

請幫助-1)此代碼返回“ #VALUE!” 如果記錄在數據庫中不存在,則在excel中使用。 2)如果該記錄不存在,則此查詢將花費很長時間運行。 3)如果沒有記錄存在,我需要代碼返回0(並加快速度)。

考慮在字段檢索過程中按recordcount屬性有條件地包裝記錄集:

Dim AccessCN As Object, AccessRS As Object

Set AccessCN = CreateObject("ADODB.Connection")
Set AccessRS = CreateObject("ADODB.Recordset")

AccessCN.Open "DRIVER=Microsoft Access Driver (*.mdb, *.accdb);" _
                & "DBQ=C:\Path\To\Database\File.accdb;"
AccessRS.Open "SELECT Date FROM AccessDB WHERE Date = #" & MyDate & "#", AccessCN

If AccessRS.RecordCount > 0 Then
     CheckIfDateExistInDB = AccessRS.Fields(0)
Else
     CheckIfDateExistInDB = 0
End If

AccessRS.Close

Set AccessRS = Nothing
Set AccessCN = Nothing

暫無
暫無

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

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