To jest stara wersja strony!
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.
Każdy rekord w tabeli A ma dokładnie jeden odpowiadający rekord w tabeli B i odwrotnie.
Przykład:
Zastosowanie: gdy dodatkowe dane są opcjonalne i rzadko używane.
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.
Zastosowanie: gdy wiele rekordów może być powiązanych z jednym nadrzędnym rekordem (np. mieszkańcy w miejscowości).
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.
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.
Tabela pośrednia: uczniowie_przedmioty (uczen_id, przedmiot_id)
Zastosowanie: np. uczniowie zapisani na wiele przedmiotów.
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.
Trzymaj razem / Keep Together
szczegóły
W takim przypadku możemy przejść przez kroki tworzenia nowej grupy w raporcie LibreOffice Base, która zagwarantuje, że sekcje szczegółów zostaną razem.
1. Otwórz raport w trybie edycji:
2. Utwórz nową grupę:
3. Wybierz pole do grupowania:
Trzymaj razem
4. Przenieś sekcję szczegółów do nowej grupy:
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.
- Otwórz swój raport w trybie edycji.
1. Wybierz zakładkę „Raport”:
2. Kliknij „Wstaw grupę”:
1. Przenieś sekcję szczegółów:
1. Zapisz zmiany:
2. Wygeneruj raport:
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.
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).
właściwościami formantu
dodatkowe informacje
TBLAUTOR;TBLKSIAZKA
TBLAUTOR
TBLKSIAZKA
Wydarzenia
Wykonaj akcję
Standard.Module1.OpenAndCloseForm_FromTag (document, Basic)
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