MS Access - как я могу объединить два запроса в одном наборе записей? - PullRequest
0 голосов
/ 10 мая 2019

Мой запрос работает в коде VBA, но у меня будет много запросов такого рода, поэтому я не хочу каждый раз создавать новый «первый» раздел.(Записи).

Код, который я создал ниже:

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

Я не хочу каждый раз открывать «первый», можно ли изменить такой запрос таким образом, чтобы он выиграл »t создать много переменных в десяти запросах.

Ответы [ 2 ]

1 голос
/ 10 мая 2019

Я не знаю, правильно ли я вас понимаю.

Используя следующий код, вы сможете сделать то же самое, просто используя одну переменную для каждой вещи:

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
0 голосов
/ 10 мая 2019

Использование неанглийских имен делает невозможным выяснить, о чем ваши данные, но вы можете попробовать что-то вроде этого:

"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) & "'"

Он объединяет два ваших запроса в один.Вероятно, это можно немного упростить, если я пойму, что это такое и какие имена полей уникальны в двух связанных таблицах, и здесь или там может отсутствовать кавычка, которую вам, возможно, придется устранить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...