在MSAccess

时间:2018-02-14 12:15:31

标签: ms-access access-vba ms-access-2010 ms-access-2007

我有一个包含列

的访问表

帐户ID,帐户描述,GL代码,年份,1月,2月,3月,4月,5月,6月,7月,8月,9月,10月,11月,12月。月份列保留金额。

我想如果用户在表单上选择Jan而不是帐户ID,则会显示帐户描述,G1代码,年份和Jan。类似地,如果用户选择2月而不是帐户ID帐户描述,则显示gl代码,年份和2月。同样适用于其他月份。

不知道如何做到这一点。据我所知,我们可以过滤行而不是列。

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

1 个答案:

答案 0 :(得分:1)

创建一个动态设置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