访问SQL查询 - 从输入中更改多个查询中的FROM表

时间:2014-08-07 14:25:59

标签: sql ms-access-2007

我有一系列几乎相同的查询,我在Access中的SQL视图中构建如下(每个不同查询中的条件更改)

SELECT t.SUBSECTION_VALUES, t.SECTION_CODE, t.SECTION_TYPE_NAME, t.CROSS_SECTIONAL_POSITION, t.START_METRES, t.END_METRES, t.RUT_RAW, t.[3M], t.[10M], t.CRACKING, t.LHS_TEXTURE, t.UKPMS_RCI_RURAL_OR_URBAN_UID, t.UKPMS_RCI_DOT_CLASSIFICATION_UID
FROM [Renfrewshire Raw Data] AS t
WHERE (((t.UKPMS_RCI_RURAL_OR_URBAN_UID)=1) AND ((t.UKPMS_RCI_DOT_CLASSIFICATION_UID)=4))
ORDER BY t.SUBSECTION_VALUES DESC;

我正在寻找一种方法来同时更改所有查询中的FROM [tablename]位,可能来自某种输入框?

我希望这是可能的!

1 个答案:

答案 0 :(得分:0)

假设您很乐意使用VBA,您可以使用以下子例程:

Public Sub ChangeTable(strQueryName As String, strNewTable As String)

    Dim db As DAO.Database
    Dim qdf As DAO.QueryDef
    Dim sqlString As String

    Set db = CurrentDb() 'Sets the database'
    Set qdf = db.QueryDefs("" & strQueryName & "") 'Tells the sub which query to look at'

    sqlString = Replace(qdf.SQL, "[Renfrewshire Raw Data]", "" & strNewTable & "", 1) 'Grabs the sql from your query and replaces the table name'
    qdf.SQL = sqlString 'Puts your new sql back into the query'

End Sub

这将从您的查询中获取sql并将表名替换为您的新表名。如果需要,可以创建一个表单,并从那里获取子所需的两个变量。