Access - Slanje parametara izveštajima korišćenjem programskog koda (I deo)
08.04.2002
Svi Access programeri pre ili kasnije dođu do situacije kada su im potrebni izveštaji koji filtriraju podatke ili koriste parametarske upite kao osnovu. U ovakvim situacijam mnogo je bolje, i brže, sve parametre koje zahteva izveštaj poslati putem programskog koda, pre nego korišćenjem opcije Query by form. Većina naprednijih Access korisnika zna kako podesiti parametre kod otvaranja recordset-a, korišćenjem osobine parameters DAO objekta QueryDef. Postoje dva jednostavnija načina za podešavanje parametara kada radite sa objektom izveštaja (Report) u odnosu na rad sa standardnim recordset objektom: 1. Kod izveštaja koji se zasnivaju na nekom upitu, nemojte dodavati nikakve parametre upitu. A zatim, svaki put kada pregledate ili štampate izveštaj, pošaljite SQL upit kao sastavni deo metode OpenReport. 2. Za korišćenje prve metode biće potrebno da kreirate SQL string svaki put kada se izveštaj poziva iz koda, što može dovesti do neželjenih grešaka. Pošto ne možete uvek koristiti metodu OpenReport za štampanje (pogotovo kada želite višestruke kopije, gde treba koristiti Print Action), druga opcija predstavlja kreiranje i podešavanje vrednosti niza parametara koji će biti pozvani upitom vašeg Report-a. Kako to odraditi, prikazaćemo u sledećem prilogu.
Access - Slanje parametara izveštajima korišćenjem programskog koda (II deo)
09.04.2002
Za podešavanje niza parametara koji će biti prosleđeni prilikom formiranja izveštaja uradite sledeće: •
Kreirajte novi programski modul opšteg tipa, i unutar sekcije deklaracija definišite niz tipa variant. Mi ćemo u primeru koristiti niz od 10 elemenata, ali on može biti bilo koje veličine. Manji nizovi efikasnije koriste memoriju. Koristićemo variant tip niza, pošto nam je potrebno da čuvamo bilo koji tip podataka.
• •
Dim nizParametri(10) Kreirajte novu Sub proceduru koja će vam omogućiti da podesite vrednosti elemenata niza:
• • • • •
Public Sub SetParam(ByVal InputVal, ByVal ParamID)
•
Kreirajte sličnu funkciju za vraćanje vrednosti parametara iz niza:
nizParametri(ParamID) = InputVal End Sub Ovde InputVal predstavlja vrednost parametra, a ID je broj parametra koji će biti podešen.
• • • • • •
Public Function GetParam(ByVal ParamID)
•
=GetParam(X) gde X = 1 ili 2 ili 3 i tako dalje predstavlja redni broj parametra u upitu.
•
Zatim u VBA kodu, pre otvaranja izveštaja, jednostavno pozovite SetParam potproceduru za svaki parametar izveštaja sa vrednostima parametara koje želite da koristite u izveštaju. Kao na primer:
• • • • • • • • •
GetParam = nizParametri(ParamID) End Function Potom, unutar upita vezanog za izveštaj, gde inače podešavate parametre unutar sekcije kriterijuma (Criteria), jednostavno dodajte poziv funkcije kojom dobijate unete parametre:
Public Sub Stampaj_Registracija (PocDatum, KrajnjiDatum) Call SetParam(PocDatum, 1) Call SetParam(KrajnjiDatum, 2) DoCmd.OpenReport "Registracija", A_Normal End Sub