Download: KnowhowKnoda
Transkrypt
Download: KnowhowKnoda
Warsztat - Knoda KNOWHOW Zarządzanie bazami danych w KDE DOBRZE UŁOŻONE Knoda to przyjazny użytkownikowi program sprawiający, że zarządzanie bazą danych staje się intuicyjnym doświadczeniem. W drugiej części naszego warsztatu podejmiemy się tworzenia formularzy i drukowania raportów w programie Knoda. MARCEL HILZINGER W poprzednim miesiącu nauczyłeś się formułować zapytania dla wielu tabel. Dziś się dowiesz, jak w programie Knoda tworzyć tabele, formularze i raporty. W warsztacie zakładamy, że pracujesz ze sterownikiem Sqlite2, lecz powinieneś móc śledzić przykłady na dowolnej bazie danych. W Ramce 1 znajdziesz przykładową konfigurację Knody, by współpracowała z MySQL. Użytkownicy Suse Linux 9.1 być może muszą dokonać pewnych napraw. Jeśli uaktualniałeś KDE do wersji 3.3.2, YaST mógł zainstalować jakieś starsze pakiety Knody. W takim przypadku przeinstaluj program. Tworzenie bazy danych Uruchom Knodę i w oknie wyboru sterownika wybierz Sqlite2. Wybierz File | New | Database i podaj nazwę bazy danych. Utworzona baza powinna się pojawić w polu Current database. Jeśli tak się nie stało, musisz wybrać nową bazę danych z listy rozwijanej. Tabelę w nowej bazie tworzymy, klikając prawym przyciskiem Tables i wybierając New. Jeżeli wolisz, możesz zamiast tego skorzystać z pozycji menu File | New | table. W zakładce Table – Unamed (Rysunek 1) kliknij na New Field, żeby dodać kolumny (pola) do tabeli. Opisywanie szczegółowo wszystkich typów pól wykracza poza temat tego warsztatu. Wystarczy rzec, że można zajść daleko z tekstem, liczbami całkowitymi i rzeczywistymi. Typ bool używany jest w polach opisujących wartości typu tak/nie albo PRAWDA/FAŁSZ. MySQL i Postgres obsługują trzy stany w takim polu (np. tak, nie, nie wiadomo). Rysunek 1: Wszystko działa: tworzenie nowej tabeli w programie Knoda. W tym warsztacie utworzymy bazę danych do zarządzania członkostwem w klubie kręglarskim. W tym celu dodajmy do pierwszej tabeli bazy pola wymienione w Tabeli 1, począwszy od ID. Ponieważ pole to ma licznik automatyczny, nie może mieć wartości zero. Będzie naszym głównym indeksem. Po dodaniu pól wybierz Other Table i zapisz tabelę jako Kręglarze. Zauważ, że Sqlite nie pozwala na późniejsze zmiany w strukturze tabeli, więc sprawdź dokładnie, czy pola są takie, jak zamierzone. Teraz dodaj kategorie (np. juniorzy, dorośli, seniorzy) do drugiej tabeli nazwanej Kategorie, a do trzeciej różne rodzaje kól do kręgli (LaneMasters, RotoGrip, Ebonite itp.). Zapisz tę tabelę jako Kule. Te dwie tabele WWW.LINUX-MAGAZINE.PL Tabela 1: Przykładowa tabela – Klub kręglarski. nazwa pola typ pola ID Auto Increment Nazwisko Text Imię Text Ulica Text Kod Small Integer Miasto Text Kategoria Small Integer Składka roczna Small Float Opłacił Bool Kula Small Integer NUMER 15 KWIECIEŃ 2005 59 KNOWHOW Warsztat - Knoda mają po dwie kolumny: identyfikator ID oraz drugą: Kategoria lub Kula. Formularze ułatwiają życie Jeśli czytałeś pierwszą część naszego warsztatu, pamiętasz, że w Knodzie do każdego elementu są dwa tryby. By wypełnić nową tabelę danymi, przełącz się na tryb widoku i wprowadź dane jak w normalnym arkuszu. Oczywiście, jeżeli dodajesz dane do głównej tabeli, dużo wygodniej będzie utworzyć formularz do wprowadzania danych. Dzięki formularzowi będzie też można połączyć trzy tabele, tj. nie trzeba znać identyfikatorów poszczególnych kategorii podczas określania wartości Kategoria. Zamiast tego wybierze się rekord z rozwijanej listy. Aby utworzyć nowy formularz, kliknij prawym przyciskiem na Forms, albo wybierz z menu głównego File | New | Form. Gdy otworzy się edytor formularzy (Rysunek 2), najpierw trzeba wybrać źródło danych – kliknij na ikonce z trzema kropkami po prawej od listy rozwijanej. Wybierz wcześniej utworzone trzy tabele i dodaj je jako źródła danych. Następnie wybierz z listy tabelę Kręglarze. Gdy uruchomisz edytor formularzy, Knoda automatycznie doda elementy konieczne do utworzenia formularzy. Jeśli nie wiesz, do czego służy dana ikona, przytrzymaj nad nią wskaźnik myszy, a pojawi się pożyteczna podpowiedź. Kliknij teraz na ikonie Lineeditfield, a potem na (pustym) formularzu. Spowoduje to dodanie pola do formularza. Trzeba poinformować program, jakiego rodzaju danych ma się spodziewać w tym polu, i jak mają one być formatowane – przyjrzyj się zakładkom Data, Format, Frame i Actions. Jako źródło danych w pierwszym polu wybierz tabelę Kręglarze. Powtórz te kroki, dodając po- Rysunek 2: Praca z edytorem formularzy Knody. zostałe pola, oprócz pól Kategoria, Kula i Opłacił. Przejdź teraz do trybu wyświetlania, by przetestować formularz. Pole Opłacił jest typu logicznego. Albo członek zapłacił roczną składkę, albo nie. Dla tego pola kliknij na ikonie Booleanfield z palety, i powiąż to pole z polem Opłacił w tabeli Kręglarze. Żeby było wiadomo, do czego służy ten znacznik, jako etykietę (Label) wpisz Opłacona składka roczna. Dla pól Kategoria i Kula wybierz Combobox. Musisz tu określić dwa źródła danych. Najpierw zaznacz pole Kategoria ze źródłem danych Kręglarze. Następnie jako Listdatasource wybierz pozycję Kategoria; wybierz ID jako Listcolumn i Kategoria jako kolumnę do wyświetlenia. Powtórz te kroki, by utworzyć rozwijane menu różnych typów kul do kręgli. Na końcu dodaj do formularza pasek nawigacyjny. Pasek ułatwia użytkownikowi przechodzenie do kolejnego rekordu i dodawanie nowych rekordów (Rysunek 3). Choć każdy formularz może mieć pasek nawigacyjny, nie da się zmienić domyślnego wyglądu. Raporty Jest zrozumiałe, że prezes klubu kręglarskiego chciałby wiedzieć, czy wszyscy opłacili roczną składkę członkowską. Możesz wykorzystać Knodę do wygenerowania raportu z tymi cennymi dla prezesa informacjami. W tym celu wybierz z głównego menu File | New | Report albo otwórz nowy raport przez menu kontekstowe pozycji Report. W naszym Ramka 1: Knoda a MySQL Oprócz Sqlite, Knoda obsługuje też bazy danych MySQL i Postgresql. Ponadto ogólny interfejs ODBC umożliwia dostęp do dowolnej bazy danych zgodnej z SQL. Aby program Knoda mógł rozpoznać te bazy, przed kompilacją hk_classes musisz doinstalować pakiety deweloperskie do bazy, do której chcesz uzyskać dostęp. Dzięki temu hk_classes będzie w stanie skompilować wymagane sterowniki bazy danych. MySQL wymaga pakietu mysql-devel, Postgres – postgres-devel itp. Gdy skończy się budowanie hk_classes 60 NUMER 15 KWIECIEŃ 2005 i Knody, na wykazie sterowników będzie widać, dla jakich baz danych hk_classes były w stanie znaleźć pakiety deweloperskie. Powinna tam być pozycja z MySQL. Żeby uruchomić bazę MySQL, wydaj jako root następujące polecenie: /etc/init.d/mysql start Podczas ładowania bazy danych powinieneś zobaczyć chociaż jedną linię z tekstem Done lub OK. Suse Linux dodatkowo poleca ustawić hasło użytkownika root bazy My- WWW.LINUX-MAGAZINE.PL SQL. W tym celu wpisz mysqladmin -u root password nowe hasło. Jeżeli nie ustawisz hasła, będzie można zalogować się na serwer MySQL bez sprawdzania Twojej tożsamości. Aby się zalogować, wybierz w Knodzie pozycję MySQL w oknie wyboru sterownika. W następnym oknie wpisz root jako nazwę użytkownika i kliknij OK. Podczas łączenia się ze zdalnym serwerem MySQL trzeba podać adres IP lub DNS serwera MySQL w polu Host. Zwykle też w takim przypadku trzeba wprowadzić nazwę użytkownika i hasło. Warsztat - Knoda pierwszym raporcie w oknie wyboru źródła danych musimy wybrać tabelę Kręglarze. Kliknij teraz na ikonce New Field paska narzędzi, następnie na Datasection, by dodać pole. Tak jak w edytorze formularzy, do definiowania właściwości raportu możesz użyć zakładek w prawym panelu. Jako pierwszy element wybierz pole Nazwisko. Powtórz ten krok dla pól Imię i Opłacił. Przełącz na tryb widoku, by obejrzeć zaczątek raportu, wyszczególniający nazwiska i imiona wszystkich członków, wraz ze słowem TRUE (prawda), gdy dany członek klubu opłacił składkę. FALSE (fałsz) oznacza, że opłaty nie wniesiono. Oczywiście, w tak prostym formacie dłuższa lista będzie nieczytelna. Wypadałoby dodać sekcję dla opcji Opłacił. Knoda wyświetli najpierw wszystkich tych, którzy nie zapłacili składki członkowskiej, a następnie tych, którzy zapłacili. Aby to osiągnąć, kliknij na pasku na ikonce Sections. W oknie, które się pojawi, dodaj nową sekcję Opłacił do istniejących i kliknij na Exit. W edytorze raportu widzimy teraz dwie nowe pozycje: Sectionheader: paid i Sectionfooter: paid. Dodaj Opłacił do nagłówka sekcji, Nazwisko i Imię mogą zostać w sekcji szczegółów – gotowe! Ale taka lista nadal nie jest tym, co chciałby prezes. Aby złożyć mu raport wymieniający tylko nazwiska ludzi, którzy zalegają z opłatą, trzeba najpierw ułożyć zapytanie, którego wyniki posłużą jako źródło danych do raportu. Takie podejście ma jeszcze jedną zaletę: można ułożyć listę w porządku alfabetycznym. Aby utworzyć zapytanie, wybierz File | New | Query, kliknij prawym przyciskiem myszy na pustym polu źródła danych i wybierz Add datasource. W kolejnym oknie dialogowym dodaj z rozwijanej listy tabelę Kręglarze. Następnie przeciągnij następujące pola do macierzy zapytania: ■ Nazwisko ■ Imię ■ Opłacił Do kolumny Opłacił dodaj kryterium =0 i ustaw opcję Display na No. Aby uruchomić zapytanie, przełącz na tryb wyświetlania. Jeśli wszystko zadziała zgodnie z planem, wyświetlona zostanie lista z nazwiskami i imionami członków, którzy nie opłacili składek. Żeby ułożyć pozycje w porządku alfabetycznym według pola Nazwisko, ustaw opcję Sorting na Ascending (rosnąco) lub Descending (malejąco). Teraz zapisz zapytanie i utwórz nowy raport. W oknie z wyborem źródła danych jako KNOWHOW Rysunek 3: Ukończone dzieło. Rysunek 4: Żeby zrobić prosty raport, dodaj potrzebne pola jako szczegóły. Based on wybierz właśnie zapisane zapytanie. Możesz wtedy dodać pola Nazwisko i Imię do sekcji danych, i właśnie ukończyłeś raport dla prezesa. Aby podrasować wygląd, możesz wybrać inną czcionkę lub kolor tła. Mało? Jeśli ten warsztat wzbudził Twój apetyt, przejrzyj stronę domową projektu [1], na której autor prowadzi serwis Wiki. W razie kłopotów poszukaj wskazówek na liście dyskusyjnej Knody [2]. Bardziej dogłębne infor- WWW.LINUX-MAGAZINE.PL macje można znaleźć w samouczkach Knody pod adresem [3]. ■ INFO [1] Strona domowa Knody: http://www. knoda. org [2] hk_classes i lista dyskusyjna Knody: https://lists.sourceforge.net/lists/listinfo/hk-classes-discuss [3] Samouczek: http://hk-classes.sourceforge. net/tutorials/ NUMER 15 KWIECIEŃ 2005 61