如何在连续子表单中使用未绑定的复选框 - MS Access 2013

时间:2016-06-27 21:36:14

标签: checkbox access-vba ms-access-2013

我对Access很新,并且很难搞清楚它的每一点。现在我想要一个网格,其中包含从查询中获取的行以及每行的复选框。这就是我想要的:

  1. 用户应该可以选择单独的复选框来选择行。
  2. “全选”复选框以选择所有行。
  3. 仅在点击按钮时才必须更新行
  4. 我有

    1. 创建了一个表单。
    2. 添加了一个连续子表单,Rowsource的复选框绑定到是/否字段。
    3. 我在这一点上陷入困​​境。请参考附图并帮我解决这个问题。请提供一些实用示例的好教程。非常感谢。enter image description here

2 个答案:

答案 0 :(得分:1)

使用SelectRecordsV2中的clsCCRecordSelect课程。 download db中有样本,但评论是德语(如果需要我可以翻译)。如果您需要向表单show form.name实现此建议,请构建详细信息部分的记录源和控件名称(您需要一个具有唯一值的控件来确定记录的复选框,可以是不可见的)。

答案 1 :(得分:0)

我成功实现了BitAccesser建议的示例以满足我的要求。现在我遇到了一个愚蠢的小问题。类clsCCRecordSelect有一个方法InitSelect,它将所有ID存储到Collection中。它采用Access.FormAccess.Control类型的参数。问题是,与示例不同,我想从我的MainForm调用此函数,而不是从Subform调用。从SubForm调用时,这些参数设置为MeMe.controlOnSubForm

我无法弄清楚如何在从MainForm调用时设置这些参数。我尝试了Me!subformMe!subform.Form.controlOnSubForm,但我收到类型不匹配错误。

请查看截图。当我点击MainForm中的提交按钮时,我希望使用SelectedIDs类的clsCCRecordSelect方法获取所有选定的ID并插入记录。 SelectedIDs现在正在获取Null,因为我在MainForm中创建了一个新的类实例。

enter image description here

我的代码(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

则显示值