是/否字段上的MS Access VBA Dlookup

时间:2014-09-18 12:15:46

标签: vba ms-access

我不能为我的生活解决这个问题,但我通常不是Access / VBA开发人员..

我有一个包含大约20个字段的数据库表,其中一个是Yes / No字段。我想使用DLookup提取Yes / No值,但是收到以下错误:

Run-time error '3075':
Syntax error (missing operator) in query expression 'Enabled'.

我正在使用它的代码:

MsgBox (DLookup("Enabled", "Numbers", "ID = " & Me.cbxNumber.Value & ""))

已启用是是/否字段 ID是一个String字段。

上面的DLookup对于返回其他字段的String值非常合适,所以带搜索查询的最后一个参数和表字段应该没问题。它只是抱怨返回字段('Enabled')认为它是一个查询。

MsgBox元素也是无关紧要的,因为我已经尝试将结果分配给一个Integer和一个布尔值,并且它不会抱怨类型不匹配,如果这是一个有问题的部分,我会期望它。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

您的代码适用于我:

表格

Example table

<强>形式:

Example form

<强>代码:

Private Sub Command30_Click()

    MsgBox (DLookup("Enabled", "Numbers", "ID = " & Me.cbxNumber.Value & ""))

End Sub

消息框根据需要显示0或-1。要检查的事项:

您的代码是否在表单模块中?否则Me.cbxNumber.Value将无法返回任何内容。

如果你跑

,你会得到什么?
debug.print Me.cbxNumber

来自表单上按钮的OnClick?

答案 1 :(得分:2)

您说ID是字符串字段。如果是这种情况,请尝试将DLookup更改为...

DLookup("[Enabled]", "Numbers", "ID = " & Chr(34) & Me.cbxNumber.Value & Chr(34))

如果ID为Long,则使用此字符串...

DLookup("[Enabled]", "Numbers", "ID = " & Me.cbxNumber.Value)