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 37: | Linia 39: | ||
* przedmioty (id, nazwa) | * przedmioty (id, nazwa) | ||
**Tabela pośrednia: | **Tabela pośrednia: | ||
+ | |||
**Zastosowanie: | **Zastosowanie: | ||
Linia 100: | 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.1743967325.txt.gz · ostatnio zmienione: przez sindap