我想创建一个表单,其中复选框是根据另一个表的记录动态创建的。
示例:
Source Table content:
ID Name
1 ABC
2 DEF
3 GHI
4 JKL
我希望表单在加载时生成4 checkboxes
。
如何实现这个目标?
答案 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
稍微调整子窗体的格式(隐藏记录选择器,导航按钮,边框,交替背景颜色等)你的布局......
...结合[SourceTable]中的数据......
ID Name
-- ----
1 ABC
2 DEF
3 GHI
4 JKL
看起来像这样:
在[SourceTable]中添加另一行...
ID Name
-- ----
1 ABC
2 DEF
3 GHI
4 JKL
5 AAA
...下次打开[frmTest]时,你会得到