Prostą kwerendę parametryczną opisałam tu:
Kwerenda parametryczna
Operator Like
Oczywiście to tylko proste przykłady i dla kwerend bezpośrednio w Accessie. A jak zrobić to w VBA?
Załóżmy, że mamy taki formularz ciągły:

Jego źródłem rekordów jest kwerenda
SELECT TabelaKsiazki.NumerKatalogowy, TabelaKsiazki.Autor, TabelaKsiazki.Tytul, TabelaKsiazki.Cena, TabelaKsiazki.Dzial, TabelaKsiazki.DataP FROM TabelaKsiazki LEFT JOIN TabelaDzial ON TabelaKsiazki.Dzial = TabelaDzial.IDKat; |
W nagłówku formularza jest też niezwiązane pole tekstowe TSzukaj oraz przycisk polecenia PolecenieSzukaj , pod którym jest procedura VBA. Załóżmy, że chcemy wyfiltrować rekordy, gdzie w tytule jest zawarty jest tekst wpisany do pola TSzukaj. Taka procedura mogłaby wyglądać tak:
Private Sub PolecenieSzukaj_Click() Dim MojaKwerenda As String Dim CoSzukam As String CoSzukam = Nz(Me.TSzukaj, „”) If CoSzukam = „” Then MojaKwerenda = „SELECT TabelaKsiazki.NumerKatalogowy, TabelaKsiazki.Autor, TabelaKsiazki.Tytul, TabelaKsiazki.Cena, TabelaKsiazki.Dzial, TabelaKsiazki.DataP ” & _ „FROM TabelaKsiazki LEFT JOIN TabelaDzial ON TabelaKsiazki.Dzial = TabelaDzial.IDKat;” Else MojaKwerenda = „SELECT TabelaKsiazki.NumerKatalogowy, TabelaKsiazki.Autor, TabelaKsiazki.Tytul, TabelaKsiazki.Cena, TabelaKsiazki.Dzial, TabelaKsiazki.DataP ” & _ „FROM TabelaKsiazki LEFT JOIN TabelaDzial ON TabelaKsiazki.Dzial = TabelaDzial.IDKat ” & _ „WHERE TabelaKsiazki.Tytul Like '*” & CoSzukam & „*’;” End If Me.RecordSource = MojaKwerenda Me.Requery End Sub |
We wpisie na blogu, w zależności od przeglądarki, może to różnie wyglądać, więc na wszelki wypadek zwracam uwagę na łamanie linii w zapisie kodu SQL w edytorze VBA – jest to ciąg tekstowy, więc koniec linii musi być zakończony znakami & _ (pomiędzy znakami jest spacja).
Sam parametr – w tym przypadku prezentowany przez zmienną CoSzukam, też ma swoje wymagania. Jest zapisany w linii kodu:
WHERE TabelaKsiazki.Tytul Like ’*” & CoSzukam & „*’;”
Na czerwono zaznaczyłam znaki apostrofu górnego – sa konieczne, jeśli będąca parametrem zmienna jest typu String czyli tekstowa. Natomiast te gwiazdki – to symbole zastępcze związane z operatorem Like. Oczywiście można użyć innych symboli z listy tam wymienionych. Gdyby na początku nie było gwiazdki – kwerenda zwróciłaby rekordy, gdzie powiązane pole zaczynałoby się dokładnie tym, co jest wpisane w TSzukaj.
Dla wartości wartości typu Data – zamiast apostrofów musi być natomiast znak #. Dla wartości liczbowych – nie ma w ogóle znaków, w które wstawiany jest parametr. Nie stosuje się też tu operatora Like.