繁体   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