Kwerenda aktualizująca w kodzie SQL zaczyna się zawsze od słów UPDATE …. SET
Pełen kod SQL takiej kwerendy można podejrzeć w widoku SQL projektu kwerendy:
UPDATE TabelaKsiazki SET TabelaKsiazki.Cena = 0.9*[CENA];
Cała procedura uruchamiająca taką kwerendę dołączającą:
Public Sub MojaProcedura() Dim Kwera As String Kwera = „UPDATE TabelaKsiazki SET ” & _
„TabelaKsiazki.Cena = 0.9*[CENA];” DoCmd.SetWarnings False DoCmd.RunSQLKwera DoCmd.SetWarnings True End Sub
We wpisie na blogu może to różnie wyglądać, ale 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 & _ (w środku jest spacja).
Kwerenda aktualizująca to typ kwerendy funkcjonalnej. W wyniku jej działania można zmienić wartość pól wybranych rekordów.
Załóżmy, że chcemy obniżyć o 10% wszystkie ceny książek w tabeli.
W siatce kwerendy wybieramy potrzebne pola i na karcie zmieniamy typ kwerendy na Aktualizuj.
Automatycznie pojawi się nowa linia, gdzie wpisujemy nową wartość danej kolumny. Np. nowa cena ma wynieść 0,9 * [Cena] (w nawiasie kwadratowym, gdyż odnosimy się do kolumny o nazwie Cena) :
Chcąc w ten sposób zaktualizować rekordy – trzeba uruchomić kwerendę w widoku projektu lub otworzyć ją na pasku nawigacji. Każde kolejne jej uruchomienie – spowoduje kolejną aktualizację. Ponieważ to kwerenda funkcjonalna – pojawi się komunikat z ostrzeżeniem o uruchomieniu. można go ominąć np.makrem: Makro wyłączające ostrzeżenia
W okienku nawigacji kwerendy dołączające są oznaczone specjalnym symbolem:-
Kwerenda dołączająca w kodzie SQL zaczyna się zawsze od słów INSERT INTO ….
Pełen kod SQL takiej kwerendy można podejrzeć w widoku SQL projektu kwerendy:
Wygląda to np. tak:
INSERT INTO TabelaArchiwum ( NumerKatalogowy, Autor, Tytul, Cena, Dzial, Bestseller, DataArchiwizacji )
SELECT TabelaKsiazki.NumerKatalogowy, TabelaKsiazki.Autor, TabelaKsiazki.Tytul, TabelaKsiazki.Cena, TabelaKsiazki.Dzial, TabelaKsiazki.Bestseller, Date() AS DataArchiwum
FROM TabelaKsiazki;
Cała procedura uruchamiająca taką kwerendę dołączającą:
Public Sub MojaProcedura() Dim Kwera As String Kwera = „INSERT INTO TabelaArchiwum ( NumerKatalogowy, ” & _ „Autor, Tytul, Cena, Dzial, Bestseller, DataArchiwizacji ) ” & _ „SELECT TabelaKsiazki.NumerKatalogowy, TabelaKsiazki.Autor, ” & _ „TabelaKsiazki.Tytul, TabelaKsiazki.Cena, ” & _ „TabelaKsiazki.Dzial, TabelaKsiazki.Bestseller, Date() AS DataArchiwum ” & _ „FROM TabelaKsiazki;” DoCmd.SetWarnings False DoCmd.RunSQLKwera DoCmd.SetWarnings True End Sub
We wpisie na blogu może to różnie wyglądać, ale 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 & _ (w środku jest spacja).
Do uruchamiania kodów SQL w VBA służy metoda docmd – RunSQL
Metoda ta ma 2 argumenty:
SQLStatement – kod SQL, argument wymagany
USE Transaction – parametr decydujący o użyciu transakcji. Argument opcjonalny, wartość domyślna True
Metody docmd.RunSQL najczęściej używam do uruchamiania kodu SQL będącego zapisem kwerend funkcjonalnych.Metoda ta ma duże znaczenie w przypadkach, gdy sam kod SQL jest oparty na kwerendzie parametrycznej, więc trudno ją zdefiniować i zapisać na stałe jako obiekt kwerendy.
Kwerenda dołączająca to typ kwerendy funkcjonalnej. W wyniku jej działania wybrane rekordy z innej tabeli/kwerendy są dołączane do już istniejącej tabeli.
Wybieramy potrzebne pola tabeli/kwerendy, które mają być dołączone do innej tabeli, ustalamy kryteria, które rekordy mają tam trafić. Następnie naciskamy przycisk Dołącz.
Automatycznie pojawi się formularz, w którym wskazujemy tabelę docelową:
Na siatce kwerendy pojawi się od razu linia z nazwami pól docelowej tabeli, do której dołączamy rekordy.
Część nazw pól może być automatycznie wypełniona, brakujące trzeba ustawić ręcznie:
Chcąc w ten sposób dołączyć rekordy – trzeba uruchomić kwerendę w widoku projektu lub otworzyć ją na pasku nawigacji..Ponieważ to kwerenda funkcjonalna – pojawi się komunikat z ostrzeżeniem o uruchomieniu. można go ominąć np.makrem: Makro wyłączające ostrzeżenia
W okienku nawigacji kwerendy dołączające są oznaczone specjalnym symbolem:-
Przy definiowaniu kwerendy bardzo ważne jest dopasowanie typów danych w kolumnach. Jeżeli np. do pola typu liczba będziemy próbować dołączyć dane typu Tekst – pojawi się błąd. No i oczywiście do pola Autonumerowanie nic nie dodajemy.
Ponowne uruchomienie tej samej kwerendy – powoduje, że ponownie zostaną do niej dodane te same wiersze.
W praktyce ten typ kwerendy często wykorzystuję w projektach aplikacji, głównie do archiwizacji rekordów.