fedora:aplikacje:libreoffice:base
Różnice
Różnice między wybraną wersją a wersją aktualną.
| Poprzednia rewizja po obu stronachPoprzednia wersjaNowa wersja | Poprzednia wersja | ||
| fedora:aplikacje:libreoffice:base [2025/04/06 21:22] – [Relacja M:N (wiele do wielu)] sindap | fedora:aplikacje:libreoffice:base [2025/05/08 21:08] (aktualna) – [Makro otwierania i zamykania formularza] sindap | ||
|---|---|---|---|
| Linia 2: | Linia 2: | ||
| ===== Relacje ===== | ===== 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. | + | 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) ==== | ==== Relacja 1:1 (jeden do jednego) ==== | ||
| Linia 101: | Linia 103: | ||
| Tworzenie nowej grupy w oparciu o unikalne pole (np. ID rekordu) i korzystanie z opcji " | Tworzenie nowej grupy w oparciu o unikalne pole (np. ID rekordu) i korzystanie z opcji " | ||
| - | + | ||
| + | ===== 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 '' | ||
| + | |||
| + | Działanie to jest przydane przy wypełnianiu danych tabel z relacją wiele do wielu. | ||
| + | |||
| + | Jeżeli chcemy pozostawić otwarty formularz '' | ||
| + | |||
| + | Poniższe makro działa uniwersalnie na wszystkie formularze. | ||
| + | |||
| + | <code sub> | ||
| + | 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 = "" | ||
| + | MsgBox "Nie podano nazw formularzy w polu ' | ||
| + | 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 ' | ||
| + | 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 = "" | ||
| + | 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 <> "" | ||
| + | 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 | ||
| + | </ | ||
fedora/aplikacje/libreoffice/base.1743967340.txt.gz · ostatnio zmienione: przez sindap
