Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用vba自动将表中的数据字段添加到表单_Vba_Ms Access - Fatal编程技术网

使用vba自动将表中的数据字段添加到表单

使用vba自动将表中的数据字段添加到表单,vba,ms-access,Vba,Ms Access,在Access数据库中,我有一个拆分表单。数据表基于一个查询。 查询的表有时会在字段中增长 此字段位于查询中,但不在表单中,因为在访问表单时,必须将其从设计视图上的“可用字段”拖动到表单中 当按下表单上的按钮而不是用户进入设计视图时,是否有一些代码允许将字段添加到表单中 这比让每个用户在“设计”视图中打开和编辑(可能会破坏)数据库更方便。从评论中可以看出,也有人提出过类似的问题,因此默认答案是,即使使用VBA代码,表单也必须处于设计模式才能添加新控件-您无法在“表单”视图中执行此操作。但是,尽管

在Access数据库中,我有一个拆分表单。数据表基于一个查询。 查询的表有时会在字段中增长

此字段位于查询中,但不在表单中,因为在访问表单时,必须将其从设计视图上的“可用字段”拖动到表单中

当按下表单上的按钮而不是用户进入设计视图时,是否有一些代码允许将字段添加到表单中


这比让每个用户在“设计”视图中打开和编辑(可能会破坏)数据库更方便。

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

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

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.fields集合和表单的控件集合来匹配名称(例如).

您已经尝试过的代码在哪里?我还没有-我找不到方法。Application.CreateControl()(请参见链接问题)可能存在重复,但它也需要设计视图。--如果您的表定期更改,并且用户必须修复其表单,则很可能您的表设计已被破坏。同意@Andre-db结构,实现常规设计更改是不好的,可能未规范化。一旦部署了数据库,设计变更应该很少发生,并且需要满足新的需求,最终用户肯定无法完成。