płeć i forma męska/żeńska w formularzu

Użytkowanie programu bazodanowego
AdamN
Posty: 1
Rejestracja: śr lut 19, 2014 12:06 pm

płeć i forma męska/żeńska w formularzu

Post autor: AdamN »

Witam!
Chciałbym przygotować bazę danych na podstawie których będą potem wystawiane zaświadczenia. Owe zaświadczenia chciałbym drukować z odpowiednio przygotowanych formularzy.
Jak to zrobić, żeby przy wprowadzaniu danych wybierać płeć osoby a potem w zależności od tego wyboru odpowiednie wyrażenia w formularzu automatycznie przyjmowały formę męską lub żeńską?
Z góry dziękuję za pomoc.
OpenOffice 4.0.1 / Windows 7
belstar
Posty: 654
Rejestracja: czw mar 17, 2011 9:08 am

Re: płeć i forma męska/żeńska w formularzu

Post autor: belstar »

AdamN pisze:Jak to zrobić, żeby przy wprowadzaniu danych wybierać płeć osoby a potem w zależności od tego wyboru odpowiednie wyrażenia w formularzu automatycznie przyjmowały formę męską lub żeńską?
Ad. Pole w tabeli (druga cześć odpowiedzi)

Załóżmy że masz prostą bazę z jedną tabelą o nazwie Znajomi, jej struktura przedstawia się następująco:

Kod: Zaznacz cały

ID 		autopole
Imie		tekst
Nazwisko	tekst
W tabeli posiadasz ileś tam rekordów, i rozróżnienie kobiet od mężczyzn w tym przypadku można zrealizować za pomocą kwerendy która wykorzysta właściwość j.polskiego. Zagadka: podaj trzy imiona męskie kończące się na A. Takich imion jest 3 z małym kawałkiem (wyjątkiem - JAN MARIA ROKITA).
Przykład:

Kod: Zaznacz cały

SELECT "Imie", "Nazwisko", CASEWHEN( ASCII( RIGHT( "Znajomi"."Imie", 1 ) ) = 97, 'PANI', 'PAN' ) As "Zwrot" FROM "Znajomi"
Wykorzystano trzy funkcje SQL:
1. RIGHT - pobiera ona ostatnią literę imienia
2. ASCII - Zwraca ona kod Ascii litery pobranej przez funkcję RIGHT
3. CASEWHEN - Zwraca wyrażenie (PAN lub PANI) w zależności od porównania (czy kod ascii jest liczbą 97 - litera a.

W dzisiejszych czasach gdy przepływ ludności jest duży (emigranci i imigranci) powyższe rozwiązanie może być niewystarczające (przykład - trafi się klientka o imieniu Kathryn i całe rozwiązanie o kant stołu...). Dlatego trzeba wprowadzić nowe pole do tabeli:

Kod: Zaznacz cały

Kobieta 	TAK/NIE
w którym będziesz rejestrował czy rekord reprezentuje kobietę lub nie. Następnie tworzymy nową kwerendę:

Kod: Zaznacz cały

SELECT "Imie", "Nazwisko", "Kobieta", CASEWHEN( "Znajomi"."Kobieta", 'Pani', 'Pan' ) AS "Zwrot" FROM "Znajomi"
Wykorzystano funkcje SQL CASEWHEN która sprawdza zawartość pola Kobieta i wyświetla odpowiedni wynik (PAN lub PANI). Oczywiści zwracany zwrot możesz zmienić na co tylko chcesz.

Teraz wystarczy zbudować odpowiedni formularz (polecam wykorzystanie filtra) z polem pobierające dane z wyniku kwerendy i zaświadczenia gotowe. Na temat filtrowania danych w formularzu, poszukaj na forum, gdzieś wstawiłem przykład.

Rozwiązanie zagadki: arutnewanoB, abanraB, amsoK.
Załączniki
test_pan_pani.odb
(4.15 KiB) Pobrany 296 razy
LibreOffice 5.1.2.2 Ubuntu 16 LTS
Jan_J
Posty: 4557
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: płeć i forma męska/żeńska w formularzu

Post autor: Jan_J »

belstar pisze:trzeba wprowadzić nowe pole do tabeli:

Kod: Zaznacz cały

Kobieta 	TAK/NIE
Z punktu widzenie tzw. poprawności politycznej bezpieczniejsze chyba byłoby pole

Kod: Zaznacz cały

Plec varchar(1) M/F
Nie do końca poważnie ...
JJ
LO (7.6) ∙ AOO (4.1) ∙ Python (3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
ODPOWIEDZ