我的查询在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”,这样的查询是否可以以不会在十个查询中创建很多变量的方式修改。
答案 0 :(得分:1)
我不知道我是否正确理解你。
使用下一个代码,您应该只需为每件事使用一个变量即可完成相同的操作:
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
答案 1 :(得分:0)
使用非英文名称使您无法弄清楚数据的含义,但是您可以尝试执行以下操作:
"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) & "'"
它将两个查询合并为一个。如果我了解它的含义,并且两个链接表之间的字段名称是唯一的,并且可能在这里或那里您可能需要进行故障排除的引号,则可以将其简化很多。