是否可以使用vba中的变量来标识MS-Access报告字段?

时间:2019-05-15 17:08:50

标签: access-vba ms-access-2007

我不是程序员,但是无论如何,我一直受命做这件事!我们正在开展一个涉及测试不同样品特性的研究项目。我正在尝试创建一个表单,该表单将根据用户的选择生成自定义报告。因此,我有多个文本框和复选框,以允许用户定义查询参数(例如,样品的成分必须包含至少5%的成分A),并选择他们希望在报告中查看的数据(例如,显示pH) ,颜色,但没有熔点)。我已经成功创建了代码来生成查询,然后基于该查询生成报告,但是该报告默认使用的列宽通常太大(例如,pH列宽为3英寸,只需要大约1英寸即可) )。我希望能够解决此问题,但无法弄清楚如何解决。同时,这些字段中的某些字段包含的数字是多个测试结果的平均值,因此我想限制显示的位数,并在适当的地方将它们显示为%。我从解决列宽问题开始:

我试图对所包含的字段进行收集,然后遍历该收集并设置列宽,但是无法弄清楚如何使用变量标识字段:

如果我知道字段名称,我可以这样做:

Reports("ReportName")!FieldID.Width = 200

但是,如果我有一个名称,FieldNames或字符串VariableName的集合,那么这些都不起作用,给我一个错误,指出FieldNames或VariableName在报告中不是有效字段:

Reports("ReportName")!FieldNames(1).Width = 200
Reports("ReportName")![FieldNames(1)].Width = 200
Reports("ReportName")![VariableName].Width = 200

是否可以使用变量引用字段名称?

或者,我认为可能存在一种遍历所有字段并设置宽度的方法-这涉及到为每个字段查找列宽,我认为可以通过在列宽集合中添加键来实现。但是我找不到解决办法,就像这样:

For each Field in Reports("Report")
  Field.Width = ColumnWidthCollection(Field)
Next

这挂在Field.Width行上,带有“无效的过程调用或参数”,这使我回到如何使用变量引用字段名称的方式。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

尝试:

Reports("ReportName")(VariableName).Width = 200