Potrzebuję stworzyć raport, który będzie pobierał dane z recordset, a nie z kwerendy.
Napisałem taki oto kod:
W raporcie, na otwarciu:
Private Sub Report_Load() On Error GoTo PrzyBłędzie Dim mSQL As String mSQL = "TRANSFORM Count(tbl_Uwagi.TreśćUwagi) AS PoliczOfTreśćUwagi " _ & "SELECT tbl_Działanie.[Numer i nazwa działania] " _ & "FROM tbl_ListaBłędów INNER JOIN ((tbl_Działanie INNER JOIN kw_Działania ON tbl_Działanie.Identyfikator = kw_Działania.wyr) INNER JOIN (tbl_WNP INNER JOIN tbl_Uwagi ON tbl_WNP.Identyfikator = tbl_Uwagi.[WNP/KOR_ID]) ON kw_Działania.[WNP/KOR] = tbl_WNP.[WNP/KOR]) ON tbl_ListaBłędów.ID_Błędu = tbl_Uwagi.BłędyID " _ & "WHERE tbl_Działanie.[Instytucja Pośrednicząca]='" & Forms!frm_Raporty.Pole_Jednostka.Value _ & "' AND tbl_Działanie.Identyfikator=dopiszdziałania([tbl_wnp].[wnp/kor]) AND tbl_ListaBłędów." & Forms!frm_Raporty.Pole_Błąd_R8.Value & "=True " _ & "GROUP BY tbl_Działanie.[Numer i nazwa działania] " _ & "PIVOT zmiana_w_czasie_kwartały([datauwagi])" PobierzDane_Raport8 mSQL, Me KoniecPracy: Exit Sub PrzyBłędzie: MsgBox "Błąd! " & Err.Source & ". " & Err.Description & " Nr błędu: " & Err.Number & ".", vbCritical, WERSJA Resume KoniecPracy End Sub
I funkcję pobierającą dane:
Function PobierzDane_Raport8(mSQL As String, rep As Access.Report) As Boolean Dim rs As ADODB.Recordset Set rs = New ADODB.Recordset With rs .ActiveConnection = CurrentProject.Connection .CursorLocation = adUseClient .CursorType = adOpenKeyset .LockType = adLockPessimistic .Open mSQL End With Set rep.Recordset = rs If rs.EOF Then PobierzDane_Raport8 = False Else PobierzDane_Raport8 = True End If rs.Close Set rs = Nothing End Function
Po uruchomieniu pojawia mi się błąd:
Ta funkcja jest dostępna tylko w pliku ADP. Nr błędu: 32585.
Co to jest plik ADP?
Jak widać problem z kwerendą wynika z tego, że pole z tabeli jest zmienne, tzn., że w zależności od tego, co w formularzu wybierze użytkownik, tak będzie skonstruowany raport, chodzi o ten fragment:
tbl_ListaBłędów." & Forms!frm_Raporty.Pole_Błąd_R8.Value & "=True
Kwerenda powinna zliczyć ile razy jest w danej kolumnie wartość True.