MS ACCESS - 在报告中动态更改列名

时间:2014-05-29 09:43:48

标签: sql ms-access-2010

我有MS ACCESS报告(1个id列+ 6个数据列)。我想根据我在表中存储的内容动态更改标题的名称(1列,每行6行。每行告诉列的名称)注意:如果可以在主SQL查询本身中更改,那就太棒了。

1 个答案:

答案 0 :(得分:1)

通过“标题”,您是指报告中的标签吗?如果是这样,您提到的两种方式中更容易使用附加表解决方案。一个简单的方法是首先在列名表中添加一个唯一的ID(你怎么知道哪个列名转到哪个标签?)。从那里,您可以在报告加载时运行类似的内容:

Private Sub Report_Load()

    lblMyReportLabel_1.Caption = DLookup("[ColumnName]", "[ColumnNames]", "[ID] = 1")
    lblMyReportLabel_2.Caption = DLookup("[ColumnName]", "[ColumnNames]", "[ID] = 2")
    lblMyReportLabel_3.Caption = DLookup("[ColumnName]", "[ColumnNames]", "[ID] = 3")
    lblMyReportLabel_4.Caption = DLookup("[ColumnName]", "[ColumnNames]", "[ID] = 4")
    lblMyReportLabel_5.Caption = DLookup("[ColumnName]", "[ColumnNames]", "[ID] = 5")
    lblMyReportLabel_6.Caption = DLookup("[ColumnName]", "[ColumnNames]", "[ID] = 6")

End Sub

此代码假设您的标签名为lblMyReportLabel_ ?,您的列名表名为ColumnNames,实际保存列名称的列称为ColumnName,唯一标识符列称为ID。

一种更流畅的方法是对源查询中的列进行别名,在Report_Load上打开源QueryDef的Recordset,并从中更新标题,但这是一个更复杂的解决方案。如果源查询中的字段名称发生更改,则表示除了更新标签标题之外,还需要重新绑定代码中的每个数据控件。在第一个解决方案中,您只需在报表设计时将字段绑定到报表上的数据控件一次即可。