Database MS Access-如何在一个记录集中聚合两个查询?

Database MS Access-如何在一个记录集中聚合两个查询?,database,vba,ms-access,Database,Vba,Ms Access,我的查询在VBA代码中工作,但是我会有很多此类查询,所以我不想每次都创建一个新的“rst”部分。(记录集) 下面是我创建的代码 Private Sub wpr_krotkaNazwaProjektu_AfterUpdate() Dim rst4 As DAO.Recordset Dim rst5 As DAO.Recordset Dim strSql4 As String Dim strSql5 As String Dim krotkaNazwaProjektu4 As String Dim k

我的查询在VBA代码中工作,但是我会有很多此类查询,所以我不想每次都创建一个新的“rst”部分。(记录集)

下面是我创建的代码

Private Sub wpr_krotkaNazwaProjektu_AfterUpdate()
Dim rst4 As DAO.Recordset
Dim rst5 As DAO.Recordset
Dim strSql4 As String
Dim strSql5 As String
Dim krotkaNazwaProjektu4 As String
Dim krotkaNazwaProjektu5 As String


krotkaNazwaProjektu4 = wpr_krotkaNazwaProjektu.Text
krotkaNazwaProjektu5 = wpr_krotkaNazwaProjektu.Text

strSql4 = "SELECT Ewidencje.E_dataRozpoczeciaProjektu from Ewidencje INNER JOIN KP_KartyProjektow on Ewidencje.ID_kartyProjektu = KP_KartyProjektow.ID_kartyProjektu WHERE KP_KartyProjektow.KP_krotkaNazwaProjektu = '" & (krotkaNazwaProjektu4) & "' "
strSql5 = "SELECT Ewidencje.E_dataPlanowaneZakonczenieProjektu from Ewidencje INNER JOIN KP_KartyProjektow on Ewidencje.ID_kartyProjektu = KP_KartyProjektow.ID_kartyProjektu WHERE KP_KartyProjektow.KP_krotkaNazwaProjektu = '" & (krotkaNazwaProjektu5) & "' "

Set rst4 = CurrentDb.OpenRecordset(strSql4)
Set rst5 = CurrentDb.OpenRecordset(strSql5)

przypisanie4 = rst4!E_dataRozpoczeciaProjektu
przypisanie5 = rst5!E_dataPlanowaneZakonczenieProjektu

rst4.Close
Set rst4 = Nothing
rst5.Close
Set rst5 = Nothing

wpr_planowanaDS.Value = przypisanie4
wpr_planowanaDZ.Value = przypisanie5
End Sub

我不想每次都打开“rst”,是否可以修改这样一个查询,使其不会在十个查询中创建许多变量。

我不知道我是否正确理解您的意思

使用下一个代码,您应该能够对每件事使用一个变量来执行相同的操作:

Private Sub wpr_krotkaNazwaProjektu_AfterUpdate()

    Dim rst As DAO.Recordset
    Dim strSql As String
    Dim krotkaNazwaProjektu As String

    krotkaNazwaProjektu = wpr_krotkaNazwaProjektu.Text

    strSql = "SELECT Ewidencje.E_dataRozpoczeciaProjektu from Ewidencje INNER JOIN KP_KartyProjektow on Ewidencje.ID_kartyProjektu = KP_KartyProjektow.ID_kartyProjektu WHERE KP_KartyProjektow.KP_krotkaNazwaProjektu = '" & krotkaNazwaProjektu & "' "
    Set rst = CurrentDb.OpenRecordset(strSql)
    przypisanie = rst!E_dataRozpoczeciaProjektu
    rst.Close
    wpr_planowanaDS.Value = przypisanie

    strSql = "SELECT Ewidencje.E_dataPlanowaneZakonczenieProjektu from Ewidencje INNER JOIN KP_KartyProjektow on Ewidencje.ID_kartyProjektu = KP_KartyProjektow.ID_kartyProjektu WHERE KP_KartyProjektow.KP_krotkaNazwaProjektu = '" & krotkaNazwaProjektu & "' "
    Set rst = CurrentDb.OpenRecordset(strSql)
    przypisanie = rst!E_dataPlanowaneZakonczenieProjektu
    rst.Close
    wpr_planowanaDZ.Value = przypisanie

    Set rst = Nothing    

End Sub

使用非英语名称使您无法了解您的数据是关于什么的,但您可以尝试以下方法:

"SELECT IIF(KP_KartyProjektow.KP_krotkaNazwaProjektu = '" & (krotkaNazwaProjektu4) & "',Ewidencje.E_dataRozpoczeciaProjektu,NULL) AS KP_krotkaNazwaProjektu
    IIF(KP_KartyProjektow.KP_krotkaNazwaProjektu = '" & (krotkaNazwaProjektu5) & "',Ewidencje.E_dataPlanowaneZakonczenieProjektu,NULL) AS E_dataPlanowaneZakonczenieProjektu
FROM Ewidencje
    INNER JOIN KP_KartyProjektow on Ewidencje.ID_kartyProjektu = KP_KartyProjektow.ID_kartyProjektu
WHERE KP_KartyProjektow.KP_krotkaNazwaProjektu = '" & (krotkaNazwaProjektu4) & "' OR KP_KartyProjektow.KP_krotkaNazwaProjektu = '" & (krotkaNazwaProjektu5) & "'"
它将两个查询合并为一个查询。如果我理解了它的含义以及两个链接表之间哪些字段名是唯一的,并且这里或那里可能缺少一个引号,您可能需要进行故障排除,那么它可能会简化很多