Kwerendy modyfikujące – wprowadzenie

Kwerendy to zapytania pobierające dane z tabel lub innych kwerend baz danych. Pozwalają one w różny sposób przeglądać, modyfikować, tworzyć i analizować dane. Są również używane w raportach i formularzach jako źródła danych.

Kwerendy modyfikujące pozwalają na modyfikowanie tabel baz danych i ich zawartości, czyli rekordów. Umożliwiają wprowadzanie zmian w wielu rekordach jednocześnie.

Przykład 1

Dana jest baza danych restauracji oferującej dania z dowozem. Zamówienia klientów zapisywane są w tabeli jako rekordy składające się z pól:

  • imie_klienta,

  • nazwisko_klienta,

  • adres_dostawy,

  • data_zlozenia_zamowienia.

Jeśli w ciągu dnia przyjmowanych jest kilkadziesiąt zamówień, to ręczne dołączanie każdego rekordu byłoby czasochłonne. Lepiej stworzyć narzędzie, które będzie automatycznie dodawać do tabeli informacje o zamówieniach. W takiej sytuacji przydatne są właśnie kwerendy modyfikujące.

Rodzaje kwerend modyfikujących:

  • kwerendy tworzące tabele – służą do tworzenia nowych tabel, zawierających rekordy określone w zapytaniu;

  • kwerendy dołączające – umożliwiają dodanie do wybranej tabeli danych z innej tabeli;

  • kwerendy aktualizujące – pozwalają na dokonanie zmian w grupie rekordów w jednej lub w kilku istniejących tabelach;

  • kwerendy usuwające – usuwają rekordy z jednej lub z kilku tabel na podstawie zdefiniowanych warunków.

Ważne!

Kwerendy tworzące tabele, dołączające oraz aktualizujące mogą być wielokrotnie uruchamiane i za każdym uruchomieniem wykonują takie same operacje, tj. tworzą tabelę, dołączają dane lub aktualizują rekordy.

W tym e‑materiale omówimy kwerendy tworzące tabele oraz kwerendy dołączające, natomiast kwerendy aktualizujące i usuwające poznamy w e‑materiale Kwerendy modyfikujące, etap IIPtrE9QP2nKwerendy modyfikujące, etap II.

Omawiane przykłady będą wykorzystywać bazę danych Czytelnicy, której schemat wygląda następująco:

Rp8YFF89ymmAH1
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
Polecenie 1

Pobierz i zapisz na dysku bazę danych Czytelnicy dla aplikacji LibreOffice Base lub Microsoft Access:

RyLAO1fkcFqt6

Przycisk do pobrania pliku ODB.

Plik czytelnicy.odb – baza danych dla programu LibreOffice Base.
Plik ODB o rozmiarze 15.76 KB w języku polskim
RlkMDyrJkfO3c

Przycisk do pobrania pliku ACCDB.

Plik czytelnicy.accdb – baza danych dla programu Microsoft Access.
Plik ACCDB o rozmiarze 484.00 KB w języku polskim

Kwerendy tworzące tabele

Kwerend tworzących tabele używamy do zapisania w formie tabeli danych wybranych z bazy. Przydają się między innymi do tworzenia raportów zawierających dane podlegające określonym ograniczeniom, sporządzania kopii zapasowych tabel, poprawiania działania formularzy stworzonych na podstawie kwerend wykorzystujących dane z wielu tabel.

Źródłem kwerendy tworzącej tabelę może być jedna lub wiele tabel, a także inne kwerendy.

Kwerendy tworzące tabele można przygotowywać za pomocą aplikacji do obsługi baz danych, takich jak LibreOffice Base lub Microsoft Access. W tym e‑materiale omówimy używanie tych dwóch narzędzi.

Problem 1

Biblioteka, która korzysta z bazy danych Czytelnicy, co roku przygotowuje zestawienia czytelników, którzy wypożyczali najwięcej książek. Ponieważ dane dotyczące liczby wypożyczeń w ustalonym okresie nie zmieniają się, a odczytywanie ich za każdym razem z bazy może być nieefektywne, warto zapisać je w postaci osobnej tabeli. Przygotujemy więc kwerendę tworzącą tabelę, która będzie zawierała zestawienie imion i nazwisk czytelników oraz liczbę wypożyczonych przez nich książek w roku 2021.

LibreOffice Base

W programie LibreOffice Base nie znajdziemy osobnej kategorii kwerendy tworzącej tabelę. zamiast tego wykorzystamy możliwość zapisania wyników każdej kwerendy wybierającej jako tabeli za pomocą mechanizmu kopiowania i wklejania.

Zaczynamy od stworzenia zapytania wybierającego potrzebne dane. W widoku projektu tworzymy kwerendę opartą na tabelach czytelnicywypozyczenia. Do kwerendy dodajemy z tabeli wypozyczenia dwa razy pole id_czytelnika, z tabeli czytelnicy pola nazwisko, imie, a z tabeli wypozyczenia pole data_wypozyczenia.

Ważne!

Kolejność dodanych pól jest ważna dla późniejszego sortowania wyników.

Na pole data_wypozyczenia nakładamy kryterium ograniczające wypożyczenia do roku 2021:

Linia 1. BETWEEN kratka 2021 minus 01 minus 01 kratka AND kratka 2021 minus 12 minus 30 kratka.

Uruchamiamy kwerendę, w wynikach otrzymamy 78 rekordów.

W celu policzenia wypożyczeń przekształcimy kwerendę wybierającą na grupującąkwerenda grupującagrupującą. W widoku projektu dla pierwszego pola id_czytelnika w wierszu Funkcja wybieramy funkcję Liczba, aby zliczyć wystąpienia identyfikatorów czytelników w tabeli wypozyczenia. Dla drugiego pola id_czytelnika oraz pól nazwisko i imie wybieramy funkcję Grupuj. Odznaczamy widoczność pola data_wypozyczenia.

Dla czytelności wyników nadajemy polu id_czytelnika z funkcją Liczba alias liczba_wypozyczen. Na koniec ustawiamy sortowanie malejące według pola id_czytelnika oraz sortowanie rosnące według pola nazwisko. Projekt kwerendy i początkowe rekordy ze wszystkich 38 rekorów będą wyglądały następująco:

Rh1LoCkS3xbjt
Projekt kwerendy grupującej kw_nowe_tytuly w programie LibreOffice Base.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Kwerendę zapisujemy pod nazwą l_wypozyczen i zamykamy. Następnie zaznaczamy jej nazwę, kopiujemy (CTRL+C) i wklejamy (CTRL+V) w widoku listy tabel.

Ważne!

Jeżeli na liście tabel jest zaznaczona tabela, wklejana kwerenda zostanie potraktowana jako dołączająca dane. Jeżeli kwerenda ma utworzyć tabelę, żadna z pozycji nie może być zaznaczona. Zaznaczenie tabeli na liście można zlikwidować za pomocą kliknięcia jej nazwy z wciśniętym klawiszem CTRL.

Następnie:

  1. W oknie Kopiuj tabelę podajemy nazwę tabeli l_wypozyczen_2021. Powinna być zaznaczona opcja Definicja i dane. Klikamy przycisk Dalej.

    RPBJDUJpONO8d
    Okno Kopiuj tabelę.
    Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
  2. W oknie Zastosuj kolumny przenosimy wszystkie kolumny z lewej na prawą stronę. Klikamy przycisk Dalej.

    ROYb38Wqd7va4
    Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
  3. W oknie Formatowanie typu w polach liczba wypozyczen oraz id_czytelnika – czyli polach, które nie zawierają danych tekstowych – zmieniamy Typ pola na Integer. Klikamy przycisk Utwórz.

    R1XfvucH44ixe
    Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
  4. Na pytanie Czy utworzyć teraz klucz główny? odpowiadamy Nie.

    RvfaYMtjakBT4
    Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Jeżeli wklejana kwerenda wybiera dane, które mogą być przechowywane jako tekst, kroki 2 i 3 możemy pominąć, klikając przycisk Utwórz w oknie Kopiuj tabelę.

W opisany sposób w programie LibreOffice Base każdą kwerendę możemy zapisać w formie tabeli. Gotową tabelę możemy kliknąć dwa razy, aby zobaczyć zapisane w niej dane:

R198SmvEnKjVN
Nowa tabela lista_wypozyczen_2021 w programie LO Base.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Alternatywną metodą tworzenia tabel na podstawie kwerendy jest zapisanie jej jako widokuwidokwidoku. Aby to zrobić, klikamy nazwę kwerendy prawym klawiszem i z menu podręcznego wybieramy polecenie Utwórz jako widok. w oknie Zapisz jako podajemy nazwę tabeli, np. l_wypozyczen_2021 i klikamy OK.

R1f08etaTGEmR
Zapisywanie kwerendy jako widoku w programie LO Base.

Różnica między tabelą i widokiem polega na tym, że tabela zawiera dane zapisane na stałe, podczas gdy widok zwraca dane dynamiczne pobierane przez zapisaną w nim kwerendę, której kod możemy zobaczyć, jeżeli klikniemy widok prawym przyciskiem myszy i wybierzemy polecenie Edycja w widoku SQL. Jeżeli dane w tabelach lub kwerendach, na których oparty jest widok ulegną zmianie, zmienią się również w widoku.

Microsoft Access

W programie Microsoft Access zaczynamy od stworzenie zapytania wybierającego potrzebne dane. Z zakładki Tworzenie wybieramy opcję Projekt kwerendy znajdującą się w grupie Kwerendy. Następnie w oknie Pokazywanie tabeli dwa razy klikamy tabele czytelnicywypozyczenia, z których będziemy pobierać dane wykorzystane w kwerendzie.

Do kwerendy dodajemy z tabeli wypozyczenia dwa razy pole id_czytelnika, z tabeli czytelnicy pola nazwisko, imie, a z tabeli wypozyczenia pole data_wypozyczenia.

Ważne!

Kolejność dodanych pól jest ważna dla późniejszego sortowania wyników.

Na pole data_wypozyczenia nakładamy kryterium ograniczające wypożyczenia do roku 2021:

Linia 1. BETWEEN kratka 2021 minus 01 minus 01 kratka AND kratka 2021 minus 12 minus 30 kratka.

Uruchamiamy kwerendę, otrzymamy 78 rekordów.

W celu policzenia wypożyczeń rekordy musimy pogrupować, a następnie zliczyć. Przekształcamy kwerendę wybierającą w kwerendę grupującą. W zakładce Projektowanie klikamy Sumy. Dla pierwszego pola id_czytelnika w wierszu Suma wybieramy funkcję Policz, aby zliczyć wystąpienia identyfikatorów czytelników w tabeli wypozyczenia. Dla drugiego pola id_czytelnika oraz pól nazwisko i imie wybieramy funkcję Grupuj według. Odznaczamy widoczność pola data_wypozyczenia.

Dla czytelności wyników nazwę pierwszego pola id_czytelnika zamieniamy na alias liczba_wypozyczen: id_czytelnika. Na koniec ustawiamy sortowanie malejące według pola id_czytelnika oraz sortowanie rosnące według pola nazwisko.

Projekt kwerendy będzie wyglądał następująco:

R1NPP3L6gLfqy
Projekt kwerendy grupującej kw_nowe_tytuly w programie MS Access.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Po wykonaniu kwerendy zobaczymy początkowe rekordy ze wszystkich 38 rekordów:

Linia 1. liczba podkreślnik wypozyczen nazwisko imie. Linia 2. 4 Caudle Gaelan. Linia 3. 4 Custed Stefan. Linia 4. 4 Duce Chiquita. Linia 5. 4 Frunks Fanechka. Linia 6. 4 Rodriguez Abra.

Kolejnym krokiem jest przekształcenie kwerendy wybierającej na kwerendę tworzącą tabelę. W tym celu w widoku projektu w zakładce Projektowanie klikamy opcję Utwórz tabelę, w oknie Tworzenie tabeli jako nazwę tabeli wpisujemy liczba_wypozyczen_2021 i klikamy OK. Przygotowaną kwerendę uruchamiamy i potwierdzamy komunikat, że mamy zamiar wkleić 38 wierszy do nowej tabeli. Kwerendę zapisujemy pod nazwą l_wypozyczen i zamykamy.

Po wykonaniu tych czynności na liście tabel zobaczymy nową tabelę, zawierającą wynik kwerendy. Tabelę klikamy dwa razy, aby zobaczyć zapisane w niej dane:

R1Znnfm1yBA8j
Nowa tabela lista_wypozyczen_2021 w programie MS Access.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Kwerendy dołączające

Kwerendy dołączające pozwalają na dodanie rekordów z jednej lub z kilku tabel na końcu innej tabeli (lub tabel). Mogą one zostać użyte np. przy dołączaniu pól wybranych na podstawie określonych kryteriów lub gdy pola w jednej tabeli nie mają swoich odpowiedników w innej.

Biblioteka, która korzysta z bazy danych Czytelnicy, otrzymała nowe książki. Informacje o nowych pozycjach zostały zapisane w pliku nowe_tytuly.csv. Plik pobieramy i zapisujemy na dysku.

R1Gp0OueGwpsE

Przycisk do pobrania pliku CSV.

Plik nowe_tytuly.csv.
Plik CSV o rozmiarze 13.15 KB w języku polskim
Problem 2

Zadanie polega na dodaniu do bazy informacji o nowych tytułach. Danych nie możemy od razu dołączyć do tabel tytuly i egzemplarze, ponieważ plik zawiera więcej pól niż wspomniane tabele, a ponadto w przypadku niektórych pozycji dane są niekompletne. Żeby zrealizować zadanie, zaczniemy od zaimportowania danych do nowej tabeli w bazie.

LibreOffice Base

Plik nowe_tytuly.csv otwieramy w arkuszu kalkulacyjnym LibreOffice Calc, w oknie Importuj tekst w opcjach separatora zaznaczamy Rozdzielony i wybieramy Średnik.

R5OKX6rJUhtXZ
Import pliku CSV w programie LO Base.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Po otwarciu pliku w arkuszu naciskamy skrót klawiszowy CTRL+A, aby zaznaczyć wszystkie dane, a następnie CTRL+C, żeby skopiować je do schowka.

W otwartej bazie danych wyświetlamy listę tabel i naciskamy CTRL+V, aby wkleić skopiowane dane do nowej tabeli. W oknie Kopiuj tabelę podajemy nazwę tabeli nowe_tytuly i upewniamy się, że zaznaczone są opcje Definicja i dane oraz Użyj pierwszego wiersza jako nazw kolumn. Klikamy Utwórz. Na pytanie o utworzenie klucza głównego odpowiadamy Nie.

RHpK3T9LYsfJ9
Tworzenie nowej tabeli w programie LO Base.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Nową tabelę otwieramy w widoku danych. Widzimy, że w przypadku niektórych tytułów brakuje informacji o autorze oraz okładce. Do bazy dodamy tylko te pozycje, na temat których mamy wszystkie wymagane informacje.

R1cvmqIvjeQuc
Zawartość tabeli nowe_tytuly w programie LO Base.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Tworzymy kwerendę za pomocą polecenia Utwórz projekt kwerendy. Jako źródło dodajemy tabelę nowe_tytuly. Wybieramy pola tytul, imie, nazwisko oraz okladka. W wierszu Kryterium w polach imie_autora, nazwisko_autora oraz okladka wpisujemy warunek IS NOT EMPTY, który pozwala wyeliminować pola bez wartości. Widoczność pola okladka odznaczamy, ponieważ informacji o okładkach nie będziemy dodawać do tabeli tytuly.

Dodawane pozycje mogą różnić się okładką, a wtedy imię, nazwisko i tytuł będą takie same. Aby uzyskać niepowtarzające się tytuły, we właściwościach kwerendy wybieramy opcję Wartości bez powtórzeń.

RxqYP3dxEKo9v
Projekt kwerendy kw_nowe_tytuly w programie LO Base.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Zapisujemy kwerendę pod nazwą kw_nowe_tytuly i uruchamiamy. Powinniśmy zobaczyć 128 kompletnych rekordów.

Zamykamy kwerendę, klikamy na liście prawym klawiszem myszy i wybieramy polecenie Utwórz jako widokwidokwidok. Podajemy nazwę nowe_tytuly_widok i klikamy OK. Przechodzimy do listy tabel, zaznaczamy i kopiujemy utworzony widok (CTRL+C), zaznaczamy tabelę tytuly i wklejamy. W oknie Kopiuj tabelę powinna być zaznaczona opcja Dołącz dane.

W następnym oknie Przypisz kolumny zauważymy, że pola tabeli źródłowej i docelowej są niedopasowane. Używając przycisków ze strzałkami po prawej stronie, przenosimy pole id_tytulu na sam dół. Powinniśmy uzyskać następujący układ:

R1V4kJs3HNQV6
Przypisywanie kolumn podczas dołączania danych w programie LO Base.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Na koniec klikamy przycisk Utwórz. Niestety, zobaczymy komunikat o błędzie.

RNYLpU6qI5wEi

Po naciśnięciu przycisku Więcej możemy zapoznać się ze szczegółami błędu. Wystąpił on, ponieważ w dodawanych informacjach nie mamy wartości dla pola id_tytulu. Zamykamy okno Szczegóły błędu, klikając OK, a następnie zamykamy okno komunikatu klikając Nie. Jeżeli pojawi się jeszcze jedno okno, zamykamy je, klikając OK.

Zmiana typu danych klucza głównego

Ręczne dodawanie identyfikatorów tytułów nie jest dobrym rozwiązaniem, ponieważ jest ono obarczone ryzykiem popełnienia pomyłek, np. zdublowaniem identyfikatorów. Zadanie powinno być realizowane przez bazę danych. W tym celu ustawimy opcję automatycznego tworzenia wartości dla pola klucza głównego w tabelach tytulyegzemplarze, do których również będziemy dołączać dane.

Wybieramy polecenie Narzędzia | Relacje, usuwamy relacje łączące tabele tytulyegzemplarze oraz egzemplarzewypozyczenia. Zmiany zapisujemy i zamykamy okno. W trybie edycji tabeli tytuly właściwość Wartość automatyczna pola id_tytulu zmieniamy na Tak. Zapisujemy zmiany i zamykamy okno. To samo robimy z polem id_egzemplarza w tabeli egzemplarze.

R3Ig2brpB3nrl
Zmiana właściwości Wartość automatyczna w projekcie tabeli w programie LO Base.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 2.0.

Pozostaje jeszcze odtworzenie relacji łączących tabele. W oknie Projekt relacji odtwarzamy usunięte relacje między tabelami tytulyegzemplarze oraz egzemplarzewypozyczenia. W oknie Relacje dostępnym po dwukrotnym kliknięciu utworzonej relacji zaznaczamy opcje kaskadowego aktualizowania i usuwania.

R17Lk1cEJNb98

Dołączanie danych

Powtarzamy operacje kopiowania i wklejania, czyli dołączania wyników widoku nowe_tytuly_widok do tabeli tytuly. Tym razem po kliknięciu przycisku Utwórz nie powinniśmy zobaczyć komunikatu o błędzie. Po otwarciu widoku danych tabeli tytuly zobaczymy, że identyfikatory dla nowych pozycji zostały utworzone automatycznie.

RA47Eocgi08tP
Rekordy dołączone do tabeli tytuly w programie LO Base.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Pozostaje dodanie informacji do tabeli egzemplarze, w której każdemu tytułowi oznaczonemu przez identyfikator przypisany jest odpowiedni rodzaj okładki. Na początku modyfikujemy kwerendę kw_nowe_tytuly, włączamy widoczność pola okladka, dzięki temu kwerenda wybierze również pozycje różniące się tylko okładką.

Następnie przygotowujemy kwerendę, której źródłem będzie tabela tytuly oraz kwerenda kw_nowe_tytuly. Dla każdego tytułu dodanego z kwerendy kw_nowe_tytuly chcemy odczytać wygenerowany identyfikator z tabeli tytuly. Tworzymy więc relację między tabelami, przeciągając pole tytul z tabeli tytuly na pole tytul w kwerendzie. Następnie do projektu kwerendy dodajemy pola id_tytuluokladka. Projekt kwerendy będzie wyglądał następująco:

Rrj54iDWfSURI
Projekt kwerendy kw_nowe_egzemplarze w programie LO Base.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Jeżeli uruchomimy kwerendę, zobaczymy identyfikatory dodanych tytułów oraz odpowiadające im okładki. Kwerendę zapisujemy pod nazwą kw_nowe_egzemplarze i zamykamy.

Danych z tak utworzonej kwerendy nie możemy dodać do tabeli za pomocą kopiowania i wklejania, ponieważ relacja między tabelami tytulynowe_tytuly obowiązuje tylko w obrębie samej kwerendy. Przekształcamy kwerendę na widok o nazwie nowe_egzemplarze_widok. Zapisany widok zaznaczamy na liście tabel i kopiujemy, następnie zaznaczamy tabelę egzemplarze i wklejamy. W oknie Kopiuj tabelę powinna być zaznaczona opcja Dołącz dane. W oknie Przypisz kolumny pole id_egzemplarza przenosimy na sam dół i klikamy przycisk Utwórz.

R8t0WPkScfRgS
Przypisanie kolumn podczas dołączania danych do tabeli egzemplarze w programie LO Base.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Po otwarciu tabeli egzemplarze w widoku danych i nałożeniu filtra standardowego id_egzemplarza > 99, zobaczymy dane 129 nowych egzemplarzy.

R1I2ZgGuBNs1J
Rekordy dodane do tabeli egzemplarze w programie LO Base.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Microsoft Access

Rozpoczynamy od zaimportowania danych z pliku nowe_tytuly.csv do nowej tabeli. Wybieramy zakładkę Dane zewnętrzne i klikamy polecenie Plik tekstowy. Wskazujemy położenie pliku z danymi. W kolejnych oknach kreatora nie zmieniamy niczego poza zaznaczeniem opcji Pierwszy wiersz zawiera nazwy pól oraz Bez klucza podstawowego.

Utworzoną tabelę Nowe_tytuly otwieramy w widoku danych. Zobaczymy, że w przypadku niektórych tytułów brakuje informacji o autorze lub okładce. Do bazy dodamy tylko te pozycje, na temat których mamy wszystkie wymagane informacje.

R1KOailCbpbd7
Zawartość tabeli nowe_tytuly w programie MS Access.
Źródło: licencja: CC BY-SA 3.0.

Tworzymy kwerendę, wybierając z zakładki Tworzenie polecenie Projekt kwerendy. W oknie Pokazywanie tabel jako źródło dodajemy tabelę Nowe_tytuly. Wybieramy pola tytul, imie_autora, nazwisko_autora oraz okladka.

W wierszu Kryteria w polach imie_autora, nazwisko_autora oraz okladka wpisujemy warunek IS NOT NULL, który pozwala wyeliminować pola bez wartości. Widoczność pola okladka odznaczamy, ponieważ informacji o okładkach nie będziemy dodawać do tabeli tytuly.

Dodawane pozycje mogą różnić się okładką, a wtedy imię, nazwisko i tytuł będą takie same. Aby uzyskać niepowtarzające się tytuły, we właściwościach kwerendy ustawiamy opcję Wartości unikatowe na Tak.

RXoQCyDMQ7X8U
Projekt kwerendy kw_nowe_tytuly w programie MS Access.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Zapisujemy kwerendę pod nazwą kw_nowe_tytuly i uruchamiamy. Powinniśmy zobaczyć 128 kompletnych rekordów.

Kwerendę wybierającą przekształcamy na dołączającą. W widoku projektu w zakładce Projektowanie wybieramy ikonę Dołącz. W oknie Dołączanie jako nazwę tabeli wybieramy tytuły.

R3ByNNkEuUghs
Wybór docelowej tabeli dla kwerendy dołączającej w programie MS Access.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Na koniec kwerendę uruchamiamy za pomocą polecenia Uruchom. Niestety, zobaczymy komunikat o błędzie, który został spowodowany tym, że w dodawanych informacjach nie mamy wartości dla pola id_tytulu.

RCrQTrnkVE0lW1

Okno komunikatu zamykamy przyciskiem Nie.

Zmiana typu danych klucza głównego

Ręczne dodawanie identyfikatorów tytułów nie jest dobrym rozwiązaniem, ponieważ jest ono obarczone ryzykiem popełnienia pomyłek, np. zdublowaniem identyfikatorów. Zadanie powinno być realizowane przez bazę danych. W tym celu pole klucza głównego w tabeli, do której dołączamy dane, powinno mieć typ nie Liczba, ale Autonumerowanie. Wybór tego typu powinien być dokonany na etapie projektowania tabel, zwłaszcza że w bazach MS Access po wprowadzeniu jakichkolwiek danych do tabeli nie można zmienić typu danych pola klucza głównego.

Ponieważ tego nie zrobiliśmy, musimy rozwiązać ten problem.

Utworzymy kopie tabel tytulyegzemplarze, do których będziemy dołączali dane, i zastąpimy nimi dotychczasowe tabele. W tym celu:

  • zaznaczamy i kopiujemy tabelę tytuly;

  • wybieramy polecenie Wklej i w oknie Wklejanie tabeli jako zaznaczany opcję Tylko struktura, klikamy OK;

  • otwieramy tabelę Kopia tytuly w widoku projektu i zmieniamy typ danych dla pola id_tytulu na Autonumerowanie.

Te same czynności wykonujemy dla tabeli egzemplarze i pole id_egzemplarza.

Po zamknięciu widoków projektu:

  • zaznaczamy i kopiujemy tabelę tytuly;

  • zaznaczamy tabelę Kopia tytuly i wklejamy dane, wybierając w oknie Wklejanie tabeli jako opcję Dołącz dane do istniejącej tabeli.

Te same czynności powtarzamy dla tabel egzemplarzeKopia egzemplarze.

Dzięki tym operacjom dotychczasowe wartości kluczy głównych zostaną zachowane. Kolejnym krokiem będzie zastąpienie dotychczasowych tabel nowymi:

  • wybieramy Narzędzia baz danych / Relacje, usuwamy relację łączącą tabele tytulyegzemplarze oraz egzemplarzewypozyczenia;

  • usuwamy tabele tytulyegzemplarze;

  • zmieniamy nazwę tabel Kopia tytuly na tytulyKopia egzemplarze na egzemplarze;

  • w widoku projektu tabeli egzemplarze zmieniamy rozmiar pola id_tytulu na Liczba całk. długa;

  • w widoku projektu tabeli wypozyczenia zmieniamy rozmiar pola id_egzemplarza na Liczba całk. długa;

  • w zakładce Relacje odtwarzamy usunięte relacje między tabelami tytuly, egzemplarzewypozyczenia.

Rus5ngpQmDRgD
Zmiana rozmiaru pola tabeli w programie MS Access.
Źródło: licencja: CC BY-SA 3.0.
R1WT5EruRSTNA
Przykład tworzenia relacji między tabelami w programie MS Access.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Dołączanie danych

Po wykonaniu wskazanych operacji ponownie uruchamiamy kwerendę kw_nowe_tytuly. Tym razem nie powinniśmy zobaczyć komunikatu o błędzie. W widoku danych tabeli tytuly widzimy, że identyfikatory dla nowych pozycji zostały utworzone automatycznie.

R4tnsfhrtcOrl
Rekordy dołączone do tabeli tytuly w programie MS Access.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Kwerendę kw_nowe_tytuly w widoku projektu przekształcamy z powrotem na wybierającą, zaznaczamy widoczność pola okladka, aby wybrane zostały pozycje różniące się tylko okładką, zapisujemy i zamykamy.

Następnie przygotowujemy kwerendę, której źródłem będzie tabela tytuly oraz kwerenda kw_nowe_tytuly. Dla każdego tytułu dodanego z kwerendy kw_nowe_tytuly chcemy odczytać wygenerowany identyfikator z tabeli tytuly. Tworzymy więc relację między tabelami, przeciągając pole tytul z tabeli tytuly na pole tytul w kwerendzie. Następnie do projektu kwerendy dodajemy pola id_tytulu i okladka.

Projekt kwerendy będzie wyglądał następująco:

RfiXIU0Ee0Tdt
Projekt kwerendy kw_nowe_egzemplarze w programie MS Access.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Przekształcamy kwerendę na dołączającą, wybierając w zakładce Projektowanie polecenie Dołącz. Jako tabelę, do której zostaną dołączone dane, wybieramy tabelę egzemplarze. Kwerendę zapisujemy pod nazwą kw_nowe_egzemplarze, uruchamiamy i potwierdzamy chęć dołączenia 129 rekordów. Na koniec otwieramy tabelę egzemplarze, żeby sprawdzić, czy zostały dołączone do niej nowe dane:

R14WRp3Vbl0HT
Rekordy dodane do tabeli egzemplarze w programie MS Access.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Słownik

CSV
CSV

(ang. comma‑separated values, wartości rozdzielone przecinkiem) tekstowy format plików służący do przechowywania danych, które można zapisać w tabelach baz danych; każdy wiersz zawiera dane jednego rekordu, przy czym wartości poszczególnych pól oddzielane są znakiem separatora, np. przecinkiem lub średnikiem

kwerenda grupująca
kwerenda grupująca

kwerenda, która tworzy zbiór rekordów na podstawie takich samych wartości z podanej kolumny; grupowanie zazwyczaj poprzedza zastosowanie funkcji agregującej, która przeprowadza obliczenia na grupie rekordów

widok
widok

rodzaj tabeli zawierający dane będące wynikiem zapytania, widoki pozwalają wyodrębniać potrzebne w danej chwili dane, można je przekształcać na zwykłe tabele np. za pomocą mechanizmu kopiuj‑wklej