DLookup 3075在新西兰周围失踪的运营商?

时间:2016-11-17 13:33:56

标签: access-vba runtime-error ms-access-2013

这是我的代码:

Private Sub Form_Current()

Set rs = CurrentDb.OpenRecordset("Sites", dbOpenDynaset, dbSeeChanges)
rs.Requery
rs.MoveFirst
   If Nz(Me.Site_ID.Value) > 0 Then
      Me.H2OBillingIDlbl.Caption = DLookup("H2OBillingIDNum", "Sites", "H2OBillingIDNum = " & Me.txtHotelID)
   Else
      Me.H2OBillingIDlbl.Caption = ""
   End If

End Sub

DLookup行正在抛出错误。

Me.txtHotelID框是表单上的文本输入框,仅用于输入数字。

记录集中的H2OBillingIDNum字段为Long。

我试过在H2OBillingIDNum附近放括号;在.ValueH2OBillingIDNum结束时Me.txtHotelID交替并合并;以字符串形式输入数据,在这种情况下,我得到数据不匹配错误。

我不相信我可以使用SQL查询,因为它是一个文本输入字段,但如果我错了,我会很乐意接受这些信息,因为我从来没有听说过像这样的SQL查询,它是一种更快,更准确的数据提取方法。

我没有想法。有什么建议?是新西兰吗?有没有更好的写作方式?这应该不包括在内吗?如果有帮助,这是一个DAO db。

3 个答案:

答案 0 :(得分:0)

您可以将其缩小为:

Private Sub Form_Current()

    Dim rs As DAO.Recordset
    Dim SQL As String
    Dim Caption As String

    If Nz(Me!Site_ID.Value, 0) > 0 Then
        SQL = "Select Top 1 H2OBillingIDNum From Sites Where H2OBillingIDNum = " & Nz(Me!txtHotelID.Value, 0) & ""
        Set rs = CurrentDb.OpenRecordset("SQL", dbOpenDynaset, dbSeeChanges)
        Caption = rs!Fields(0).Value
    End If
    Me!H2OBillingIDlbl.Caption = Caption

    Set rs = Nothing

End Sub

正如您所看到的那样,当您查找已经拥有H2OBillingIDNum的{​​{1}}时,它没有多大意义,所以它可能应该是:

Me!txtHotelID.Value

答案 1 :(得分:0)

错误必须是Me.txtHotelID为空,因此DLookup来电不完整

DLookup("foo", "bar", "myValue = ")

给出Runtime error 3075: Syntax error (missing operator) in 'myValue = '

以下是如何调试此类问题的指南。

将代码分开(每行一个命令),并使用中间变量。通过将鼠标悬停在变量名称或Watch窗口中,可以在中断模式下看到它们的值。

推荐阅读:Debugging VBA Code

如果您使用DLookup,则根本不需要记录集,因此我已将其删除。

运行(或逐步执行)此代码,错误将变得清晰:

Private Sub Form_Current()

    Dim SiteID As Long
    Dim HotelID As Long
    Dim strCaption As String

    SiteID = Nz(Me.Site_ID.Value, 0)
    If SiteID > 0 Then
        ' Intentionally without Nz(), will throw error
        HotelID = Me.txtHotelID
        ' Nz() will be needed here too!
        strCaption = DLookup("H2OBillingIDNum", "Sites", "H2OBillingIDNum = " & HotelID)
    Else
        strCaption = ""
    End If
    Me.H2OBillingIDlbl.Caption = strCaption

End Sub

答案 2 :(得分:-1)

抱歉误导了你 我没有真正看到目的,但有一件事是肯定的 - 如果你的Dlookup返回Null你会得到蚂蚁错误。您无法使用null加载标题。 需要一个围绕Dlookup的新西兰人。但我不知道Dlookup是否有可能找不到任何东西