[ Pobierz całość w formacie PDF ]
.Jest to informacja dlakwerendy, że ma akceptować parametr tekstowy nazwany ID klienta i użyć go w kwerendzie jako kryterium pola IDklienta.Ta kwerenda parametryczna przedstawiona jest na rysunku 4.19, a odpowiadające jej wyrażenie SQL na wydruku 4.15.Wydruk 4.15.Wyrażenie SQL dla kwerendy z rysunku 4.19PARAMETERS [ID Klienta] Text;SELECT Klienci.NazwaFirmy, Zamówienia.IDzamówienia, Zamówienia.DataZamówienia,Produkty.NazwaProduktu, [Opisy zamówień].CenaJednostkowa,[Opisy zamówień].Ilość, [Opisy zamówień].RabatFROM ProduktyINNER JOIN ((Klienci INNER JOIN ZamówieniaON Klienci.IDklienta = Zamówienia.IDklienta)Rysunek 4.19.Umieszczanieparametruw kwerendziew siatce QBE71Rozdział 4.f& Zaawansowane kwerendyINNER JOIN [Opisy zamówień] ON Zamówienia.IDzamówienia = [Opisy zamówień].IDzamówienia)ON Produkty.IDproduktu = [Opisy zamówień].IDproduktuWHERE (((Klienci.IDklienta)=[IDklienta]))ORDER BY Zamówienia.DataZamówienia DESC, Produkty.NazwaProduktu;Uruchom kwerendę i w odpowiedzi na pytanie o parametr wpisz Quick.W zestawie rezultatów znajdą się wszystkierekordy, w których IDklienta to Quick.Parametrem może być zdanie o maksymalnej długości 255 znaków.Umożliwia to zadawanie użytkownikom pytań okryteria w bardziej zrozumiały lub po prostu bardziej grzeczny sposób.Zmień parametr i sposób jego przedstawienia naProszę wprowadzić kod klienta.Teraz kwerenda, pytając klienta, użyje powyższego zdania.Tworzenie parametrów w kwerendach korzystających z programuKwerendy parametryczne mogą działać w aplikacjach w inny sposób poprzez program.Parametry tworzą w kwerendziezbiór, do którego możesz zwracać się podczas wykonywania kwerendy w kodzie VBA.Ma to swoje dobre strony.Winterfejsie użytkownika możesz pobrać wszystkie parametry poprzez formularz, jednocześnie kontrolując typ danych i ichpoprawność, a następnie umieścić je wszystkie w kwerendzie parametrycznej.Umożliwia to użytkownikowi całościoweprzeglądanie tego, co wpisuje, i dokonywaniezmian przed otrzymaniem zestawu rekordów.Podczas normalnego wykonywania kwerendy parametrycznej użytkownik niema możliwości powrotu do poprzednich parametrów.Po wpisaniu wartości może jedynie iść dalej lub anulować kwerendę.Tworzenie kwerend parametrycznych siatka QBE a programCzęsto programiści wykonują procedury SQL poprzez kod.W wielu przypadkach sposób ten sprawdza się doskonale,jednakże nie jest pozbawiony wad.Po pierwsze, procedury SQL mogą być niezrozumiałe lub niedostępne dla innych,mniej doświadczonych programistów, których zadaniem w przyszłości może być obsługa tej aplikacji.Może to doprowadzićdo błędów w jej działaniu.Użycie kwerendy parametrycznej umożliwia innym programistom, posiadającym oczywiścieodpowiednie uprawnienia, modyfikowanie kwerendy poprzez siatkę QBE, co może być uważane za wspólny mianownikużytkowników i programistów Accessa.Najważniejszy jest fakt, że w większości przypadków kwerenda parametrycznajest najszybszym i najbardziej wiarygodnym sposobem na wykonywanie kwerendy bez zmiany jej kryteriów lubwłaściwości.Dzieje się tak, ponieważ Access kompiluje kwerendy, więc Jet ma już gotowy ich profil wykonywania.Krótkomówiąc, ciąg SQL w kodzie nie jest zoptymalizowany, a kwerenda parametryczna może być optymalizowana.Kiedykwerenda parametryczna jest we właściwy sposób wykonywana poprzez program, użytkownik nie jest proszony o podawanieżadnych informacji.Wykonywanie kwerendy parametrycznejpoprzez programTeraz pokażemy, w jaki sposób kwerenda parametryczna może być wykonywana poprzez kod.Wydruk 4.16 akceptujenazwę kwerendy i jeden parametr, a następnie używa tych argumentów, aby otworzyć daną kwerendę i policzyć jej rekordy.Zwracana wartość to ilość rekordów w zestawie rekordów.Możesz uruchamiać tę funkcję z okna Analiza programu lubpoprzez zdarzenie na formularzu.Wydruk 4.16.Funkcja wykonująca kwerendę parametryczną poprzez kodFunction RunParameterQuery (QryName As String, CustID As String)'Funkcja ta uruchomi kwerendę parametryczną, która'pobiera ID klienta jako argument'Argumenty:' QryName Nazwa kwerendy parametrycznej' CustID Ciąg identyfikujący klienta'Z "Access 2000 Księga eksperta" (Helion)'Autorzy: Forte, Howe, RalstonDim db As DatabaseDim qrydef As QueryDefDim rs As RecordsetSet db = CurrentDb()Set qrydef = db.QueryDefs (QryName)'Tutaj parametrowi nadajemy nazwę.Qrydef ("ID klienta") = CustIDSet rs = qrydef.OpenRecordset()RunParamQuery = rs.RecordCountRs.Close72Część I f& Projektowanie bazy danychEnd FunctionWykonywanie kwerendy poprzez zbiór parametrówWydruk 4.17 wykorzystuje w kwerendzie zbiór parametrów.Umieszczając w argumentach funkcji słowo kluczoweParamArray, możesz używać jej z różnymi kwerendami parametrycznymi, niezależnie od ilości wymaganych przez nieparametrów.Funkcja wykonuje pętlę poprzez tablicę ParamArgs() i przyznaje parametry w kolejności ich podawania.Aby użyć tej funkcji, uruchom ją z okna Analiza programu.Otrzymany rezultat to ilość rekordów.Kilkukrotneuruchomienie tej funkcji zaowocuje przyspieszeniem pracy kwerend parametrycznych.Wydruk 4.17.Funkcja uruchamiająca kwerendy parametryczne ze zmienną ilością parametrówFunction OpenParamQuery (QryName, _ParamArray ParamArgs() As Variant) As Long'Z "Access 2000 Księga eksperta" (Helion)'Autorzy: Forte, Howe, Ralston'Argumenty' QryName Nazwa kwerendy prametrycznej' ParamArgs Zmienna lista wartości wprowadzanych do' parametrów kwerendy.Muszą być' ułożone w takiej kolejności, w jakiej spodziewa się ich kwerenda.Dim db As DatabaseDim qrydef As QueryDefDim i As IntegerDim rs As RecordsetDim rscount As LongOn Erro GoTo OpenParameterQuery_ErrorSetdb = CurrentDb()Set qry = db.QueryDefs(QueryName)'Przejdz przez wszystkie parametry I przyznawaj je według indeksówFor i = 0 To Ubound(ParamArgs())qry.Parameters(i) = ParamArgs(i)NextSet rs = qry.OpenRecordset(dbOpenSnapshot)OpenParameterQuery = rs.RecordCountOpenParamQuery_Exit:Set qry = Nothingrs [ Pobierz całość w formacie PDF ]