首页 > 解决方案 > VBA访问表检查记录集中的范围是否有复选框

问题描述

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

包装号 提供 选择
123456
123456 DD X
123456 直流 X
645321 抄送
645321 光盘
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?我不确定。我对构建这样的东西的语法不太熟悉。

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

标签: vbams-access

解决方案


假设您的表已命名MyTable,并且您的表的主键字段为TableID

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

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

如果你想在一个循环中使用它,其中123456是一个变量:

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

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

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

推荐阅读