在 MS Access 中根据用户条件选择要显示的列

Selecting columns for display based on user criterion in MSAccess

我可以访问 table 列

Account Id, account description, GL Code, year, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec. months栏包含金额。

如果用户在表单上选择 Jan 而不是帐户 ID、帐户描述、GL 代码、年份和 Jan,我想显示。同样,如果用户选择 Feb 而不是帐户 ID,则显示帐户描述、gl 代码、年份和 Feb。其他月份也是如此。

不知道该怎么做。据我所知,我们可以过滤行但不能过滤列。

如果有任何可能的解决方案,请提出建议。请注意,我无法更改数据库设计,因为数据是从 ERP 包下载的。

创建一个动态设置 SQL 的查询:

Dim qd As DAO.QueryDef
Dim SQL As String
Dim MonthName As String

MonthName = "Feb"  ' Month to search.

Set qd = CurrentDb.QueryDefs("YourQuery")
SQL = "Select [GL Code], [year], [" & MonthName & "] As Amount From YourTable"
qd.SQL = SQL    

现在,打开查询或使用查询作为源打开记录集。

SQL 仅:

Select 
    [GL Code], 
    [year], 
    IIf(MonthName = 'Jan', [Jan],
    IIf(MonthName = 'Feb', [Feb],
    IIf(MonthName = 'Mar', [Mar],
    IIf(MonthName = 'Apr', [Apr],
    IIf(MonthName = 'May', [May],
    IIf(MonthName = 'Jun', [Jun],
    IIf(MonthName = 'Jul', [Jul],
    IIf(MonthName = 'Aug', [Aug],
    IIf(MonthName = 'Sep', [Sep],
    IIf(MonthName = 'Oct', [Oct],
    IIf(MonthName = 'Nov', [Nov],
    IIf(MonthName = 'Dec', [Dec])))))))))))) As Amount
From 
    YourTable