【问题标题】:Run VBA for each record in a form为表单中的每条记录运行 VBA
【发布时间】:2023-03-03 06:29:22
【问题描述】:

给定一个为表格的每条记录连续显示某些文本框的表单,我希望在每条记录的所有文本框(自动,而不是通过 VBA)填充了来自的数据之后执行 VBA 子当前记录。所以理想化的执行顺序是:

fetch next record from table
distribute values into text boxes and draw
execute VBA
fetch next record from table

我怎样才能做到这一点?

注意:形式是“连续的”(我不知道用访问术语怎么说),即。 e.一次显示所有记录,而不是一次显示一条记录,并带有前进/后退按钮。

注意 2: 我要做的是:我有一个表 F,其中包含另一个表 T 的字段名称。我的表单遍历F 的行。对于F 中列出的每个字段名称,我想打印出名称,并构建一个查询,该查询绘制一个直方图,显示来自T 的该列的数据。

【问题讨论】:

  • 不够清楚你的意思是“将值分配到文本框中”。手动填充值?在任何情况下,您都可以在基本查询中添加一个计算列,该查询使用文本框字段中的参数调用 VBA 函数,在更改文本框中的数据后,它将为每个字段调用。
  • 那是糟糕的数据库设计。字段名称不用于存储数据。如果您有一个表,其中包含另一个表中字段的字段名称,这清楚地表明您的数据未标准化并且您的设计需要调整。如果你不调整你的数据库设计,你就无法实现你想要的。相似的数据应该存储在同一个字段中,用另一个字段来区分数据的类型,而不是单独的字段。
  • @ErikvonAsmuth:一些可配置的数据库有表和字段的表,它是复杂信息环境中强大的数据管理工具。也不适合胆小的人!
  • @ErikvonAsmuth 数据库设计确实值得商榷,但不受我的影响。但是,我怀疑正确规范化的数据库是否能解决问题:给定一个带有附加列 attribute 的表,您仍然需要遍历 attribute 的所有不同值并相应地填充直方图。
  • @Bubaya 那么您不必遍历它。您可以只使用包含所有记录的所有数据的记录源的图表,并使用 link master fieldlink child field 属性来获取正确的数据正确的记录。

标签: forms ms-access vba


【解决方案1】:

你不能。在 Access 的连续表单中,控件只有一个实例。对控件的任何操作都会影响该控件的所有记录。

连续表格上的每条记录没有单独的事件。

您可以遍历记录,但只能在填充表单之前或之后。

【讨论】:

  • 这对我来说是个坏消息。请查看我的编辑以了解我正在尝试做的事情。在屏幕上一次查看一条记录很好;但是,当我想打印时,我总是以连续视图结束,而我的直方图在两条记录之间没有更新。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-26
  • 1970-01-01
相关资源
最近更新 更多