我对Access很新,并且很难搞清楚它的每一点。现在我想要一个网格,其中包含从查询中获取的行以及每行的复选框。这就是我想要的:
我有
我在这一点上陷入困境。请参考附图并帮我解决这个问题。请提供一些实用示例的好教程。非常感谢。
答案 0 :(得分:1)
使用SelectRecordsV2中的clsCCRecordSelect
课程。 download db中有样本,但评论是德语(如果需要我可以翻译)。如果您需要向表单show form.name实现此建议,请构建详细信息部分的记录源和控件名称(您需要一个具有唯一值的控件来确定记录的复选框,可以是不可见的)。
答案 1 :(得分:0)
我成功实现了BitAccesser建议的示例以满足我的要求。现在我遇到了一个愚蠢的小问题。类clsCCRecordSelect
有一个方法InitSelect
,它将所有ID存储到Collection中。它采用Access.Form
和Access.Control
类型的参数。问题是,与示例不同,我想从我的MainForm调用此函数,而不是从Subform调用。从SubForm调用时,这些参数设置为Me
和Me.controlOnSubForm
。
我无法弄清楚如何在从MainForm调用时设置这些参数。我尝试了Me!subform
和Me!subform.Form.controlOnSubForm
,但我收到类型不匹配错误。
请查看截图。当我点击MainForm中的提交按钮时,我希望使用SelectedIDs
类的clsCCRecordSelect
方法获取所有选定的ID并插入记录。 SelectedIDs
现在正在获取Null,因为我在MainForm中创建了一个新的类实例。
我的代码(JobID是记录的关键):
子表单代码 :
对于Continuous SubForm中的单个Checkbox,控制源为= fnGetSelection([JobID])
(i)将军
Private Function fnGetSelection(ID As Variant) As Boolean
On Error Resume Next
fnGetSelection = Me.objRecordSelect.GetSelection(ID)
End Function
(ii)表格加载
'Get IDs of all rows in the Form
Private Sub Form_Load()
Set objRecordSelect = New clsRecordSelect
objRecordSelect.InitSelect Me, Me.chkMultiSelect, "JobID", "qryPlan_Month", , enmCCRecordSelectionMode_Multiple
End Sub
(iii)SelectAll Checkbox
'Select/Clear All
Private Sub chkSelectAll_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Me.chkSelectAll.value = 0 Then
objRecordSelect.SetAllTo True
Else
objRecordSelect.SetAllTo False
End If
End Sub
MainForm代码:
(i)表格载入:
Private Sub Form_Load()
Set objRecordSelect = New clsRecordSelect
End Sub
(ii)提交按钮点击: `Private Sub btnSubmit_Click()
objRecordSelect.InitSelect Me.subfrmPlan.Form, Me.subfrmPlan.Form.chkMultiSelect, "JobID", "qryPlan_Month", , enmCCRecordSelectionMode_Multiple
MsgBox objRecordSelect.SelectedIDs`
End Sub
获取执行,我可以在调试时看到添加到新集合的ID,但MessageBox为空。而在SubForm中,如果ID
则显示值