Tworzenie gui/formularza - otrzymany wynik zależny od wyboru

Użytkowanie programu bazodanowego
VoldiPL
Posty: 2
Rejestracja: ndz kwie 25, 2021 8:57 am

Tworzenie gui/formularza - otrzymany wynik zależny od wyboru

Post autor: VoldiPL »

Witam,

Otóż mam sprawę tego typu, że chcę stworzyć gui/ formularz, w którym będę mógł spośród narzuconej listy rozwijanej wybrać jakąś opcję, powiedzmy z listy_A wybiorę coś_A i z listy_B coś_B. A otrzymany wynik będzie wynik_AB. I analogicznie, jeśli Wybrać z listy A i C, to otrzymam wynik_AC.

I tu moje pytania:

1. Jak stworzyć takie gui / formularz
2. Jak dać opcję wyboru spośród narzuconej odgórnie listy, a samodzielnego wpisywania.

Nie wiem czy będę dobrze zrozumiany, więc zamieszczam formę graficzną pytania.

Obrazek
OpenOffice 4.1.1 na Win 10
Awatar użytkownika
Rafkus
Posty: 513
Rejestracja: czw kwie 12, 2018 10:26 pm

Re: Tworzenie gui/formularza - otrzymany wynik zależny od wy

Post autor: Rafkus »

Jak dla mnie Trochę zbyt ogólnikowo. Z list wybierzesz: coś_A i coś_B i otrzymasz wynik_AB - nie rozumiem właśnie tego wyniku.

Moje domysły (również ogólnikowo):
Z listy A wybierasz markę samochodu, np: Ford;
Z listy B wybierasz kolor, np: Czarny;
Do tabeli Wynik ma zostać wpisana wartość: FordCzarny.
Coś takiego byłoby dość łatwe do rozwiązania przy pomocy makr, jednakże zalecałbym powstrzymywanie się od ich używania, jeśli nie potrafisz ich tworzyć oraz jesteś początkującym użytkownikiem Base.

Zamiast makra proponuję aby wybrane elementy z list zapisywać w tabeli Wynik (a więc tabela ta ma przynajmniej 2 pola Marka i Kolor), natomiast efekt połączonych danych z tych pól uzyskasz przy pomocy Kwerendy. W dziale Kwerendy kliknij Utwórz kwerendę SQL... i wklej tam poniższy kod:

Kod: Zaznacz cały

SELECT 
	"Wynik".*, 
	"Marka" || "Kolor" as "Wybor"
FROM "Wynik"
Oczywiście zamiast Wynik, Marka , Kolor musisz podać swoje nazwy. Zapisz, zamknij i uruchom.
Przy pomocy tego polecenia zostanie wyświetlona nowa "tabela" zawierająca wszystkie pola z tabeli Wynik ponadto będzie nowe pole Wybor. Będzie ono zawierało połączony tekst z pola Marka i Kolor ale tylko wtedy, gdy żadne z nich nie będzie puste.

Na podstawie tej kwerendy utwórz formularz...

Pierwsze kroki w Base? Zachęcam do zapoznania się:
https://www.mimuw.edu.pl/~czarnik/zajecia/ti/bazy.html
http://www.lomilowka.pl/upload/file/kolkoI/oo_base.pdf
LibreOffice 7.4.6 (preferowany) oraz OpenOffice 4.1.6. Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
VoldiPL
Posty: 2
Rejestracja: ndz kwie 25, 2021 8:57 am

Re: Tworzenie gui/formularza - otrzymany wynik zależny od wy

Post autor: VoldiPL »

O, to może inaczej. Powiedzmy, że mam do wyboru dwa kolory, np. Kolor1: czarny ikolor2: biały. Wynik to uzyskany po zmieszaniu tych farb nowy kolor, czyli szary. Inny przykład, czarny + czerwony da mi brązowy
OpenOffice 4.1.1 na Win 10
Awatar użytkownika
Rafkus
Posty: 513
Rejestracja: czw kwie 12, 2018 10:26 pm

Re: Tworzenie gui/formularza - otrzymany wynik zależny od wy

Post autor: Rafkus »

Zatem chcesz tylko wyłuskać z pewnych istniejących danych interesujący cię rekord. Robi się to przy pomocy Kwerend - wybierasz tabelę z której ma powstać, wybierasz pola które mają być wyświetlane lub wpływają na wynik i określasz kryteria. Twoimi będzie kolor1 = 'czarny' i kolor2 = 'biały'. Uruchamiając, otrzymasz tabelę z wszystkimi rekordami spełniającymi ten warunek. Jako że są tu dwie kolumny z kolorem, może się zdarzyć, że poszukiwane barwy będą zamienione miejscami. Dlatego warto dodać poniżej jeszcze jedną parę kryterium: kolor1 = 'biały' i kolor2 = 'czarny'.
Aby uniknąć edytowania warunków do znalezienia następnych innych wartości zamiast wpisanego konkretnego koloru zamiast niego można wpisać parametr w postaci :kol1 (dwukropek nazwa parametru), :kol2 w ten sposób przy każdym uruchomieniu bądź odświeżeniu kwerendy pojawi się okno z prośbą o wpisanie odpowiednich wartości. W SQL zapytanie takie wygląda tak:

Kod: Zaznacz cały

SELECT "Id", "barwa" 
FROM "Tabela1" 
WHERE ( "kolor1" = :kol1 AND "kolor2" = :kol2) OR ("kolor1" = :kol2 AND "kolor2" = :kol1 )
Jak utworzyć formularz.
Wyszukiwanie pewnych danych można zrealizować przy pomocy formularzy z podformularzami. Najpierw trzeba się zastanowić gdzie będą wpisywane i przechowywane dane, które mają być znalezione. Ja zazwyczaj do tego celu tworzę tabelę Filtr, którego polem kluczem jest wartość typu Boolean( tak/nie; 0 i 1) - tabela ta nie służy do gromadzenia danych, więc dwa wiersze to aż nad to co potrzeba. Tak więc tabela Filtr będzie zawierała 3 pola: ID, KolorA, KolorB. Podformularzem będzie utworzona wcześniej kwerenda.
Utworz formularz przy pomocy kreatora. W tym przypadku można pominąć krok wybrania sposobu połączenia między formularzami, nieco później podczas edycji formularza i tak zostanie to zmienione, gdyż kreator nie pozwala na wpisanie tam czegoś innego niż istniejącego na liście.
Gdy już jest utworzony formularz, otwórz go w trybie edycji.
Kliknij jakiś wybrany element podformularza, a następnie kliknij go jeszcze raz ale Lewym Klawiszem Myszki. W wywołanym oknie wybierz Formularz. Powinno się pojawić okno dialogowe Właściwości Formularza. Przejdź w nim na kartę Dane. kliknij przycisk ... przy Połącz pola nadrzędne lub Połącz pola podrzędne. Wybierz które pola z tabeli Filtr będą połączone z podformularzem (to będzie: KolorA, KolorB). W pola podformularza wpisz nazwy paramerów bez : (czyli kol1, kol2) i kliknij OK.
Ponieważ "Jeden obraz jest wart więcej niż tysiąc słów" dołączam przykładową bazę danych.
Załączniki
kolory.odb
(35.22 KiB) Pobrany 154 razy
LibreOffice 7.4.6 (preferowany) oraz OpenOffice 4.1.6. Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
ODPOWIEDZ