Dynamic Checkbox MS Access 2013

时间:2014-01-29 12:12:39

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

我想创建一个表单,其中复选框是根据另一个表的记录动态创建的。

示例:

Source Table content:
ID     Name
1      ABC
2      DEF
3      GHI
4      JKL

我希望表单在加载时生成4 checkboxes

如何实现这个目标?

1 个答案:

答案 0 :(得分:2)

实现此目的的一种方法是使用子表单。假设主窗体名为[frmTest]。使用以下字段创建名为[frmTest_CheckBoxItems]的表:

[Seq]: Long Integer, Primary Key  
[Description]: Text(255)  
[Selected]: Yes/No  

然后,您可以将[Continuous]子表单添加到[frmTest],其中包括[Selected](复选框)和[Description](文本框)字段。

在主窗体[frmTest]的Form Load事件中,您可以将[SourceTable]中的值加载到[frmTest_CheckBoxItems]表中,其代码如下:

Option Compare Database
Option Explicit

Private Sub Form_Load()
    ReloadCheckBoxItems
End Sub

Private Sub ReloadCheckBoxItems()
    Dim cdb As DAO.Database
    Set cdb = CurrentDb
    cdb.Execute _
            "DELETE FROM frmTest_CheckBoxItems", _
            dbFailOnError
    cdb.Execute _
            "INSERT INTO frmTest_CheckBoxItems (Seq, Description) " & _
            "SELECT ID, [Name] FROM SourceTable", _
            dbFailOnError
    Set cdb = Nothing
    Me.frmTest_CheckBoxItems_subform.Requery
End Sub

稍微调整子窗体的格式(隐藏记录选择器,导航按钮,边框,交替背景颜色等)你的布局......

DesignView.png

...结合[SourceTable]中的数据......

ID  Name
--  ----
 1  ABC
 2  DEF
 3  GHI
 4  JKL

看起来像这样:

FormView1.png

在[SourceTable]中添加另一行...

ID  Name
--  ----
 1  ABC
 2  DEF
 3  GHI
 4  JKL
 5  AAA

...下次打开[frmTest]时,你会得到

FormView2.png