在VBA中是否有针对sql查询的解决方法而没有结果?

时间:2015-02-04 13:20:41

标签: sql vba excel-vba dao adodb

我有一个VBA程序,其中一部分查询我们的SQL服务器并返回特定数据。问题是数据不一定总是存在,这是预期的。我需要查询数据库以询问特定数据,如果它不存在,那么我希望程序忽略它并继续前进。不幸的是,当我点击没有数据的记录时,我收到以下错误:

  

运行时错误' 3021':
  BOF或EOF为True,或者当前记录已被删除。

a.k.a。没有记录。有没有办法,不使用错误,

  1. 确定数据存在,或
  2. 只是让它返回一个空字符串/记录集/ 除错误之外的任何

2 个答案:

答案 0 :(得分:4)

这需要测试RecordCount / EOF以确保在导航到打开的记录集之前记录集中有记录。

Public Sub TestRS()
    Dim rsObj As DAO.Recordset

    Set rsObj = CurrentDB.OpenRecordset("SELECT FieldName1, FieldName2 FROM tableName WHERE someID = 10")

    If rsObj.RecordCount < 1 Then
        MsgBox "No Records."
        'You can also test using one of the following.
        'If Not (rsObj.BOF And rsObj.EOF) Then
    Else
        MsgBox "There are more than one Record."
    End If
    Set rsObj = Nothing
End Sub

答案 1 :(得分:1)

在访问结果记录集中的任何字段值之前,您必须检查,记录集是否为.EOF或询问记录计数。只是打开空记录集不会给你错误,访问它的记录给出。

如果没有看到你的代码(从记录集开始开始),就很难写出更具体的建议。