To jest stara wersja strony!
Spis treści
LibreOffice Base
Relacje
Ogólnie w bazach relacyjnych występują cztery podstawowe typy relacji między tabelami. Znajomość sposobu działania tych relacji da możliwość użytkowania LO Base. Znając konstrukcje tych czterech typów relacji (1:1, 1:M, M:1, M:N), możesz stworzyć praktycznie każdą strukturę bazy danych!
Bazy relacyjne działają na tych fundamentalnych zasadach, a bardziej skomplikowane modele to po prostu kombinacje tych relacji.
Relacja 1:1 (jeden do jednego)
Każdy rekord w tabeli A ma dokładnie jeden odpowiadający rekord w tabeli B i odwrotnie.
Przykład:
- uzytkownicy (id, imie, nazwisko)
- profile (id, uzytkownik_id, adres, telefon)
Zastosowanie: gdy dodatkowe dane są opcjonalne i rzadko używane.
Relacja 1:M (jeden do wielu)
Jeden rekord w tabeli A może być powiązany z wieloma rekordami w tabeli B, ale każdy rekord w B odnosi się tylko do jednego rekordu w A.
Przykład:
- miejscowosci (id, nazwa)
- mieszkancy (id, imie, nazwisko, miejscowosc_id)
Zastosowanie: gdy wiele rekordów może być powiązanych z jednym nadrzędnym rekordem (np. mieszkańcy w miejscowości).
Relacja M:1 (wiele do jednego)
To właściwie to samo co 1:M, tylko patrzymy z drugiej strony. Każdy rekord w tabeli B należy do jednego rekordu w tabeli A.
Przykład:
- Jeden miejscowosc_id w mieszkancy może mieć wielu mieszkańców.
- To po prostu perspektywa tabeli mieszkancy w relacji 1:M.
Relacja M:N (wiele do wielu)
Jeden rekord w tabeli A może być powiązany z wieloma rekordami w tabeli B, a jeden rekord w tabeli B może być powiązany z wieloma rekordami w tabeli A.
Przykład:
- uczniowie (id, imie, nazwisko)
- przedmioty (id, nazwa)
Tabela pośrednia: uczniowie_przedmioty (uczen_id, przedmiot_id)
Zastosowanie: np. uczniowie zapisani na wiele przedmiotów.
Tworzenie raportu
Opcja "Trzymaj razem"
Opcja Trzymaj razem / Keep Together nie działa zgodnie z oczekiwaniami dla sekcji szczegóły i że utworzenie nowej grupy w oparciu o rekord rozwiązuje problem.
W takim przypadku możemy przejść przez kroki tworzenia nowej grupy w raporcie LibreOffice Base, która zagwarantuje, że sekcje szczegółów zostaną razem.
Kroki do utworzenia nowej grupy w raporcie
1. Otwórz raport w trybie edycji:
- Wybierz raport w sekcji „Raporty” i kliknij „Edytuj”.
2. Utwórz nową grupę:
- Wybierz zakładkę „Raport”.
- Kliknij na „Wstaw grupę”.
3. Wybierz pole do grupowania:
- Wybierz pole, które chcesz użyć do grupowania (np. ID rekordu, jeśli jest unikalny dla każdego rekordu).
- Upewnij się, że opcja
Trzymaj razemjest zaznaczona dla tej nowej grupy.
4. Przenieś sekcję szczegółów do nowej grupy:
- Upewnij się, że sekcja szczegółów jest częścią nowo utworzonej grupy.
- Sprawdź, czy wszystkie dane, które mają być utrzymywane razem, znajdują się w tej sekcji.
Przykład
Załóżmy, że masz raport, który wyświetla szczegóły transakcji. Chcesz, aby wszystkie szczegóły dotyczące pojedynczej transakcji były trzymane razem na jednej stronie.
Krok 1: Otwórz raport w trybie edycji
- Otwórz swój raport w trybie edycji.
Krok 2: Utwórz nową grupę
1. Wybierz zakładkę „Raport”:
- Przejdź do zakładki „Raport”.
2. Kliknij „Wstaw grupę”:
- Kliknij na przycisk „Wstaw grupę”.
3. Wybierz pole do grupowania:
- Wybierz pole, które identyfikuje unikalnie każdy rekord (np. ID rekordu).
- Upewnij się, że zaznaczona jest opcja „Trzymaj razem” dla tej grupy.
Krok 3: Przenieś sekcję szczegółów do nowej grupy
1. Przenieś sekcję szczegółów:
- Upewnij się, że wszystkie elementy, które mają być utrzymywane razem, znajdują się w sekcji szczegółów nowej grupy.
Krok 4: Sprawdź i wygeneruj raport
1. Zapisz zmiany:
- Zapisz zmiany w raporcie.
2. Wygeneruj raport:
- Sprawdź, czy sekcje szczegółów są trzymane razem na jednej stronie zgodnie z oczekiwaniami.
Podsumowanie
Tworzenie nowej grupy w oparciu o unikalne pole (np. ID rekordu) i korzystanie z opcji „Trzymaj razem” w tej grupie to skuteczny sposób na zapewnienie, że dane w sekcji szczegółów są trzymane razem na jednej stronie. Dzięki temu rozwiązaniu możesz skutecznie zarządzać układem raportu, unikając niepożądanych podziałów danych na różne strony.
Formularze
Makro otwierania i zamykania formularza
Przydatne jeżeli chcemy pod przyciskiem utworzyć akcje zamknięcie aktualnie otwartego formularza a jednocześnie otworzenie nowego. Po dodanie skryptu pod właściwościami formantu przycisku w polu dodatkowe informacje wpisujemy TBLAUTOR;TBLKSIAZKA. W tym przypadku zostanie zamknięty formularz TBLAUTOR a następnie otwarty formularz TBLKSIAZKA. W zakładce Wydarzenia i polu Wykonaj akcję wybieramy nasze makro Standard.Module1.OpenAndCloseForm_FromTag (document, Basic).
Działanie to jest przydane przy wypełnianiu danych tabel z relacją wiele do wielu.
Sub OpenAndCloseForm_FromTag(oEvent As Object)
Dim oButton As Object
Dim sTagContent As String
Dim sTargetFormName As String
Dim sFormToCloseName As String
Dim oFormToOpen As Object
Dim oFormToClose As Object
' Pobierz zawartość pola Etykieta danych (Tag)
oButton = oEvent.Source.Model
sTagContent = Trim(oButton.Tag)
If sTagContent = "" Then
MsgBox "Nie podano nazw formularzy w polu 'Etykieta danych'."
Exit Sub
End If
' Podziel dane z pola Tag wg średnika
Dim aParts() As String
aParts = Split(sTagContent, ";")
If UBound(aParts) < 0 Then
MsgBox "Brak poprawnych nazw formularzy w polu 'Etykieta danych'."
Exit Sub
End If
sTargetFormName = Trim(aParts(0)) ' formularz do otwarcia
If UBound(aParts) >= 1 Then
sFormToCloseName = Trim(aParts(1)) ' formularz do zamknięcia
Else
sFormToCloseName = "" ' brak drugiego formularza
End If
' Otwórz docelowy formularz
On Error GoTo OpenError
oFormToOpen = ThisDatabaseDocument.FormDocuments.getByName(sTargetFormName)
oFormToOpen.open
On Error GoTo 0
' Zamknij formularz, jeśli podano jego nazwę
If sFormToCloseName <> "" Then
On Error GoTo CloseError
oFormToClose = ThisDatabaseDocument.FormDocuments.getByName(sFormToCloseName)
oFormToClose.close(True)
On Error GoTo 0
End If
Exit Sub
OpenError:
MsgBox "Nie udało się otworzyć formularza: " & sTargetFormName
Resume Next
CloseError:
MsgBox "Nie udało się zamknąć formularza: " & sFormToCloseName
Resume Next
End Sub
