微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

VBA Access 表检查记录集中的范围是否有复选框

如何解决VBA Access 表检查记录集中的范围是否有复选框

我正在尝试设置一种方法来检查表中是否为表中的每个“PackNum”选中了一个复选框。 因此,例如,如果“PackNum”123456 至少有一个复选框,那就没问题了。但如果“PackNum”654321 没有任何复选框,我想抛出一条消息。

PackNum 报价 选择
123456 DA
123456 DD x
123456 DC x
645321 CC
645321 CD
645321 CF

我一直在修改以下代码,但运气不佳。

Private Sub Okay_Button_Click()
Dim db As DAO.Database
Dim rs2 As DAO.Recordset
Dim strPack As String


Checked = False
Set db = CurrentDb
Set rs2 = CurrentDb.OpenRecordset("tblMtemp")
strPack = rs2.Fields("PackNum").Value

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Data Validation check that there is at least one Box checks for each packnumber
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
If Not (rs2.EOF And rs2.BOF) Then
    rs2.MoveFirst
Do Until rs2.EOF = True

    If IsNull(DLookup("ID","tblMtemp",rs2.Fields("Select") = True And rs2.Fields("PackNum") = " & strPack & ")) Then
    MsgBox "Box is Checked"
    Else
    MsgBox "Box is not Checked"
    End If
rs2.MoveNext
Loop
End If

End Sub

这一直假设一切都错了。我认为这可能是因为我正在使用 Access?我不知道。我不太熟悉构建这样的东西的语法。

任何帮助将不胜感激。 谢谢!!

解决方法

假设你的表被命名为 MyTable 并且你表的主键字段是 TableID 那么:

IsNULL(DLookup("TableID","MyTable","Select=TRUE AND PackNum=123456"))

如果 FALSE 返回 "PackNum" 123456 has at least one checkbox

如果您想在 123456 是变量的循环中使用它:

IsNULL(DLookup("TableID","Select=TRUE AND PackNum=" & PackNumVariable ))

如果 PackNum 是文本而不是数字类型:

IsNULL(DLookup("TableID","Select=TRUE AND PackNum='" & PackNumVariable & "'"))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。