问题描述
我正在尝试设置一种方法来检查表中是否为表中的每个“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 & "'"))