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

Użytkowanie programu bazodanowego

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

Postprzez AdamN » Śr lut 19, 2014 1:42 pm

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
AdamN
 
Posty: 1
Dołączył(a): Śr lut 19, 2014 12:06 pm

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

Postprzez belstar » Cz lut 20, 2014 9:58 pm

AdamN napisał(a):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   Rozszerz widokZwiń widok
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   Rozszerz widokZwiń widok
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   Rozszerz widokZwiń widok
Kobieta    TAK/NIE

w którym będziesz rejestrował czy rekord reprezentuje kobietę lub nie. Następnie tworzymy nową kwerendę:
Kod: Zaznacz cały   Rozszerz widokZwiń widok
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) Pobrane 145 razy
LibreOffice 5.1.2.2 Ubuntu 16 LTS
belstar
 
Posty: 648
Dołączył(a): Cz mar 17, 2011 9:08 am

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

Postprzez Jan_J » So lut 22, 2014 3:24 pm

belstar napisał(a):trzeba wprowadzić nowe pole do tabeli:
Kod: Zaznacz cały   Rozszerz widokZwiń widok
Kobieta    TAK/NIE
Z punktu widzenie tzw. poprawności politycznej bezpieczniejsze chyba byłoby pole
Kod: Zaznacz cały   Rozszerz widokZwiń widok
Plec varchar(1) M/F
Nie do końca poważnie ...
JJ
LO 6.2 ∙ AOO 4.1.7 ∙ Python (3.8|2.7) ∙ Unicode 12 ∙ LATEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Fedora|CentOS|SUSE)
Jan_J
 
Posty: 4003
Dołączył(a): Pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław


Powrót do Base

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość