使用vba自动从表格添加数据字段

时间:2017-04-14 21:47:18

标签: vba ms-access access-vba

在Access数据库中,我有一个拆分表单。 数据表基于查询。 查询的表有时会在字段中增长。此字段位于查询中,但不在表单中,因为在访问表单时必须从设计视图中的“可用字段”拖动它。 是否有一些代码允许在按下表单上的按钮而不是用户进入设计视图时将字段添加到表单?这比让每个用户在设计视图中打开和编辑(可能破坏)数据库更方便。在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

从评论中可以看出,类似的问题已被提出,因此默认答案是,即使使用VBA代码,表单也必须处于设计模式才能添加新控件 - 您无法在表单视图中执行此操作。但是尽管Access存在局限性,但仍然需要一个非常合理的需求仍然需要一个有用的解决方案。

一个可能混乱且有限的解决方案是添加隐藏的未绑定控件(即ControlSource属性为空),然后可以在窗体视图期间绑定和显示。首先,在设计时将隐藏,未绑定的 TextBox和Label控件添加到表单中。以下是按钮单击事件处理程序中的一些模板代码。

Private Sub cmdAddFields_Click()
  Dim rs As Recordset2
  Set rs = Me.RecordsetClone
  Dim fld As Field2
  ...
  '* Determine which new fields need to be shown
  set fld = rs.Fields(missingFieldIndexOrName)
  ...
  Me.txtCustom1.ControlSource = fld.Name
  Me.lblCustom1.caption = fld.Name
  Me.txtCustom1.Visible = True
  Me.lblCustom1.Visible = True
  ...
End Sub

很明显,您将被限制为已添加的这些虚拟字段的数量,并且需要一些巧妙的方法来确定您丢失的字段是什么,但这可以通过循环rs来完成。字段集合和表单的Control集合以匹配名称(例如)。