首页 > 解决方案 > 将 MS Access 查询重写为更少的行数

问题描述

所以有一个数据库,我定期从中提取 200 个季度的数据。季度命名为列 Q0r、Q1r、Q2r、.....、Q200r。

所以我的查询是 Select Q0r, Q1r, Q2r, Q3r....., Q199r, Q200r from testdata where [condition];

我想知道是否有一种简单的方法可以重写这个查询,这样我就不必在 select 语句中从 0 数到 200 了。

标签: sqlms-access

解决方案


创建一个函数来构建 SQL 并将其写入查询:

Public Function CreateQuery()

    Dim Query           As DAO.QueryDef
    Dim SqlMaster       As String
    Dim Sql             As String
    Dim Id              As Integer
    Dim Names(0 To 200) As String

    Set Query = CurrentDb.QueryDefs("QueryQuarters")

    SqlMaster = "Select {0} From YourTable"

    For Id = LBound(Names) To UBound(Names)
        Names(Id) = "Q" & CStr(Id) & "r"
    Next

    Sql = Replace(SqlMaster, "{0}", Join(Names, ","))
    Query.Sql = Sql

    Debug.Print Sql

End Function

推荐阅读