Projektowanie i implementacja systemów informatycznych
Transkrypt
Projektowanie i implementacja systemów informatycznych
Projektowanie i implementacja systemów informatycznych Projektowanie i implementacja systemów informatycznych Materiały szkoleniowe 1 Projektowanie i implementacja systemów informatycznych Spis treści Spis treści.................................................................................................................................... 2 Wstęp.......................................................................................................................................... 3 Diagram encji..............................................................................................................................4 Model encji:......................................................................................................................................................... 4 Oracle Forms Builder..................................................................................................................5 Okna i Kanwy......................................................................................................................................................5 Podstawowe własności okna:.........................................................................................................................5 Podstawowe własności kanwy:........................................................................................................................... 7 Przydatne wbudowane programy dla okien:..................................................................................................9 Przydatne wbudowane programy dla kanw:................................................................................................ 13 Ćwiczenie 1..................................................................................................................................................15 Menu..................................................................................................................................................................18 Podstawowe własności elementów menu:................................................................................................... 19 Ćwiczenie 2..................................................................................................................................................19 Bloki danych......................................................................................................................................................21 Podstawowe własności bloku:..................................................................................................................... 21 Ćwiczenie 3..................................................................................................................................................26 Elementy bloków ........................................................................................................................................ 29 Ćwiczenie 4..................................................................................................................................................45 Aplikacje wieloformularzowe........................................................................................................................... 54 Przydatne wbudowane programy:................................................................................................................54 Biblioteki PL/SQL............................................................................................................................................. 57 Ćwiczenie 5..................................................................................................................................................58 Borland C++ Builder.................................................................................................................62 ODBC................................................................................................................................................................ 62 Przykład instalacji sterowników ODBC...................................................................................................... 62 Przykład konfiguracji ODBC i BDE............................................................................................................64 Karta Data Access........................................................................................................................................67 Karta Data Controls..................................................................................................................................... 67 Ćwiczenie 6..................................................................................................................................................69 Tematy na zaliczenie.................................................................................................................76 ETAP 1.............................................................................................................................................................. 76 ETAP 2.............................................................................................................................................................. 77 ETAP 3.............................................................................................................................................................. 78 2 Projektowanie i implementacja systemów informatycznych Wstęp Celem zawartego w tym dokumencie materiału jest przedstawienie możliwości tworzenia aplikacji z wykorzystaniem narzędzi firmy Oracle. W pracy tej szczególny nacisk został położony na tworzenie formularzy z wykorzystaniem programu Form Builder. Zaprezentowane zostały też wcześniejsze etapy realizacji projektu informatycznego bazujące na Oracle Designer i DeZign For Databases firmy Datanamic, jednakże jest to ujęcie bardziej poglądowe i prezentacyjne. Materiału zawartego w tej pracy nie należy traktować jako kompletnego podręcznika wyczerpującego tematykę tworzenia aplikacji w oparciu o wspomniane programy. 3 Projektowanie i implementacja systemów informatycznych Diagram encji Obecnie dostępnych jest na rynku wiele aplikacji umożliwiających zaprojektowanie bazy danych w postaci modelu/diagramu encji. Można wymienić chociażby takie programy jak: Oracle Designer (Entity Relationship Diagrammer), Microsoft Visio, Datanamic DeZign for Databases. Tworzenie diagramu encji zostanie przedstawione na podstawie produktu DeZign for Databases firmy Datanamic (www.datanamic.com). Model encji: 4 Projektowanie i implementacja systemów informatycznych Oracle Forms Builder Okna i Kanwy Każdy formularz musi posiadać przynajmniej jedno okno i jedną kanwę. Okno stanowi ramę w ramach której rozpościera się kanwa z umieszczonymi na niej elementami wizualnymi (Uwaga: Formularz musi zawierać przynajmniej jeden blok z przynajmniej jednym elementem nawigowalnym). W ramach kanwy można zdefiniować widoczną część kanwy zwaną widokiem. Podstawowe własności okna: 5 Projektowanie i implementacja systemów informatycznych • • • • • • • • • • • • • • Name – unikalna w ramach formularza nazwa okna. Służy do jego programowej identyfikacji. Title – tytuł okna wyświetlany na pasku tytułowym. Primary Canvas – Kanwa związana z oknem jako podstawowa. Horizontal Toolbar Canvas – kanwa definiująca poziomy pasek narzędzi. Vertical Toolbar Canvas – kanwa definiująca pionowy pasek narzędzi. Windows Style – własność określająca styl okna. Możliwe wartości to: - Dokument – okna podstawowe, - Dialog – okna dialogowe. Modal – własność określająca modalność okna. Możliwe wartości to: - Nie – okno nie jest modalne, wartość domyślna, okien tego typu może być wyświetlonych wiele w tym samym czasie, nie muszą być aktywowane w momencie wyświetlenia, - Tak – okno jest modalne, okna tego typu są aktywowane w chwili wyświetlenia, przed powrotem do innego okna muszą zostać zamknięte. Hide on Exit – określa czy okno ma być ukrywane przy wyjściu. Możliwe wartości to: - No – wartość domyślna, po przejściu do elementu znajdującego się w innym oknie, okno nie jest automatycznie ukrywane, - Yes – po przejściu do elementu znajdującego się w innym oknie nastąpi automatyczne ukrycie okna z którego nastąpiła nawigacja. Close Allowed – określa czy dozwolone jest zamykanie okna. Możliwe wartości to: - Yes – wartość domyślna, zamykanie jest wówczas dozwolone, - No – zamykanie za pomocą menu systemowego nie jest wówczas dozwolone. Move Allowed – określa czy możliwe jest przesuwanie okna. Możliwe wartości to: - Yes – wartość domyślna, przesuwanie okna jest dozwolone, - No – przesuwanie okna jest zablokowane. Resize Allowed – określa czy możliwa jest zmiana wielkości okna. Możliwe wartości to: - Yes – wartość domyślna, zmiana welkości okna jest dozwolona, - No – zmiana wielkości okna jest zablokowana. Maximize Allowed – definiuje dostępność operacji maksymalizacji okna. Możliwe wartości to: - Yes – wartość domyślna, maksymalizacja okna jest dozwolona, - No – maksymalizacja okna nie jest dozwolona. Minimize Allowed – definiuje dostępność operacji minimalizacji okna. Możliwe wartości to: - Yes – wartość domyślna, minimalizacja okna jest dozwolona, - No – minimalizacja okna nie jest dozwolona. Minimized Title – określa napis pojawiający się na pasku startowym Windows po zminimalizowaniu okna. 6 Projektowanie i implementacja systemów informatycznych • • • • • • • • • Icon Filename – specyfikuje nazwę pliku ikony okna. Inherit Menu – określa czy okno ma wyświetlać menu bieżącego formularza. Dozwolone wartości to: - Yes – wartość domyślna, menu jest dziedziczone po formularzu, - No – menu nie jest dziedziczone po formularzu. X Posiotion – określa współrzędną poziomą położenia lewego górnego rogu okna w ramach systemu współrzędnych zdefiniowanych dla formularza. Y Position – określa współrzędną pionową położenia lewego górnego rogu okna w ramach systemu współrzędnych zdefiniowanych dla formularza. Width – określa szerokość okna w ramach systemu współrzędnych zdefiniowanych dla formularza. Height – określa wysokość okna w ramach systemu współrzędnych zdefiniowanych dla formularza. Bevel – specyfikuje rodzaj ramki otaczającej okno. Możliwe wartości to: - Raised (Podniesiony) – kant okna podniesiony, - Lowered (Obniżony) – wartość domyślna, kant okna obniżony, - None (Brak) – brak kantu okna, - Inset (Wsunięty) – kant okna wsunięty, - Outset (Wysunięty) – kant okna wysunięty, - Plain (Zwykły) – standardowy kant okna. Show Horizontal Scroll Bar – definiuje dostępność poziomego paska przewijania. Możliwe wartości to: - No – wartość domyślna, poziomy pasek przewijania nie jest dostępny dla okna, - Yes – poziomy pasek przewijania jest dostępny dla okna. Show Vertical Scroll Bar – definiuje dostępność pionowego paska przewijania. Możliwe wartości to: - No – wartość domyślna, pionowy pasek przewijania nie jest dostępny dla okna, - Yes – pionowy pasek przewijania jest dostępny dla okna. Podstawowe własności kanwy: 7 Projektowanie i implementacja systemów informatycznych • • Name – określa unikalną w ramach formularza nazwę kanwy. Umożliwia programowe odwoływanie się do kanwy (odczytywanie bądź zmianę własności). Canvas Type – definiuje typ kanwy. Dozwolone wartości to: - Content (Wypełniająca) – wartość domyślna, podstawowy rodzaj kanwy wypełniającej okno, każde okno musi posiadać kanwę wypełniającą, w danej chwili może być wyświetlana w określonym oknie tylko jedna kanwa wypełniająca, - Stacked (Nakładana) – kanwa nakładana na kanwę wypełniającą, umożliwia programowe przesłanianie bądź wyświetlanie elementów na niej umieszczonych. Kanwę nakładaną można nałożyć na kanwę wypełniającą w Edytorze Układu (ang. Layout Editor) w opcji menu Wiew -> Stacked Views ... - Horizontal Toolbar Canvas (Poziomy pasek narzędzi) – kanwa poziomego paska narzędziowego, - Vertical Toolbar Canvas (Pionowy pasek narzędzi) – kanwa pionowego paska narzędziowego, 8 Projektowanie i implementacja systemów informatycznych • • • • • • • • • - Tab (Karty) – kanwa kart, umożliwia zdefiniowanie zakładek. Raise on Entry – określa czy kanwa ma być automatycznie przenoszona na wierz przy wejściu do elementu wyświetlanego na tej kanwie, dotyczy to sytuacji, gdy w ramach jednego okna wyświetlanych jest wiele kanw. Możliwe wartości to: - No – wartość domyślna, kanwa nie jest automatycznie przenoszona na wierz, - Yes – kanwa jest automatycznie przenoszona na wierzch po wejściu do elementu na niej wyświetlanego. Popup Menu – definiuje nazwę menu podręcznego (kontekstowego, prawego klawisza myszy) dla danej kanwy. Dozwolone wartości to: - <Null> – wartość domyślna, oznacza że aktualnie nie jest zdefiniowane żadne menu podręczne dla kanwy, - nazwa menu podręcznego Visible – określa czy kanwa jest aktualnie widoczna. Możliwe wartości to: - Yes – wartość domyślna, kanwa jest wówczas widoczna, - No – kanwa jest ukryta, Window – określa nazwę okna w ramach którego jest wyświetlana dana kanwa w momencie uruchomienia. Viewport X Position on Canvas – określa współrzędną poziomą lewego górnego rogu widoku odniesioną w stosunku do lewego górnego rogu kanwy. Viewport Y Position on Canvas – określa współrzędną pionową lewego górnego rogu widoku odniesioną w stosunku do lewego górnego rogu kanwy. Width – określa szerokość kanwy w systemie współrzędnych zdefiniowanych dla formularza. Height – określa wysokość kanwy w systemie współrzędnych zdefiniowanych dla formularza. Bevel – specyfikuje rodzaj ramki otaczającej kanwę. Możliwe wartości to: - Raised (Podniesiony) – kant kanwy podniesiony, - Lowered (Obniżony) – wartość domyślna, kant kanwy obniżony, - None (Brak) – brak kantu kanwy, - Inset (Wsunięty) – kant kanwy wsunięty, - Outset (Wysunięty) – kant kanwy wysunięty, - Plain (Zwykły) – standardowy kant kanwy. Przydatne wbudowane programy dla okien: • SHOW_WINDOW – wyświetla okno. Składnia: - SHOW_WINDOW(window_id Window); - SHOW_WINDOW (window_id Window, x NUMBER, 9 Projektowanie i implementacja systemów informatycznych • • y NUMBER); - SHOW_WINDOW (window_name VARCHAR2); - SHOW_WINDOW (window_name VARCHAR2, x NUMBER, y NUMBER); Parametry: - window_id – specyfikuje unikalny identyfikator okna (można go odczytać za pomocą funkcji FIND_WINDOW), - window_name – napis określający nazwę okna, - x – współrzędzna pozioma lewego górnego rogu okna, - y – współrzędna pionowa lewego górnego rogu okna. HIDE_WINDOW – ukrywa okno. Jest równoważna z wywołaniem procedury SET_WINDOW_PROPERTY i ustawieniem własności VISIBLE na PROPERTY_FALSE. Składnia: - PROCEDURE HIDE_WINDOW (window_id Window); - PROCEDURE HIDE_WINDOW (window_name VARCHAR2); Parametry: - window_id – specyfikuje unikalny identyfikator okna (można go odczytać za pomocą funkcji FIND_WINDOW), - window_name – napis określający nazwę okna, SET_WINDOW_PROPERTY – procedura pozwalająca na ustawienie wybranej własności okna. Składnia: - SET_WINDOW_PROPERTY (window_id Window, property NUMBER, value VARCHAR2); - SET_WINDOW_PROPERTY (window_id Window, property NUMBER, x NUMBER); - SET_WINDOW_PROPERTY (window_id Window, property NUMBER, x NUMBER, y NUMBER); - SET_WINDOW_PROPERTY (window_name VARCHAR2, property NUMBER, value VARCHAR2); 10 Projektowanie i implementacja systemów informatycznych - SET_WINDOW_PROPERTY (window_name VARCHAR2, property NUMBER, x NUMBER); - SET_WINDOW_PROPERTY (window_name VARCHAR2, property NUMBER, x NUMBER, y NUMBER); Parametry: - window_id – specyfikuje unikalny identyfikator okna (można go odczytać za pomocą funkcji FIND_WINDOW), - window_name – napis określający nazwę okna, - property – jedna z dostępnych własności: BACKGROUND_COLOR – kolor tła, DIRECTION – kierunek układu. Dostępne wartości: DIRECTION_DEFAULT, RIGHT_TO_LEFT, LEFT_TO_RIGHT, FILL_PATTERN – wzór wypełniający, FONT_NAME – nazwa czcionki, FONT_SIZE – rozmiar czcionki w punktach, FONT_SPACING – szerokość czcionki wyrażona jako wielkość odstępu pomiędzy dwoma znakami, FONT_STYLE – styl czcionki, FONT_WEIGHT – szerokość czcionki, FOREGROUND_COLOR – kolor pierwszego planu, HEIGHT – wysokość okna. HIDE_ON_EXIT – ukrywanie okna przy wyjściu. Możliwe wartości to: PROPERTY_TRUE, PROPERTY_FALSE, ICON_NAME – nazwa pliku ikony, POSITION – pozycja (x,y) lewego górnego rogu okna, TITLE – tytuł okna, VISIBLE – widoczność okna. Możliwe wartości to: PROPERTY_TRUE, PROPERTY_FALSE, WHITE_ON_BLACK – wygląd monochromatyczny – biały tekst na czarnym tle, WINDOW_SIZE – rozmiar okna (szerokość i wysokość okna), WINDOW_STATE – stan okna. Możliwe wartości to: NORMAL, MAXIMIZE, MINIMIZE, WIDTH – szerokość okna, X_POS – współrzędna x lewego górnego rogu okna, Y_POS – współrzędna y lewego górnego rogu okna, - value – jedna z dostępnych wartości własności: PROPERTY_TRUE – ustawienie wartości na true, 11 Projektowanie i implementacja systemów informatycznych • PROPERTY_FALSE – ustawienie wartości na false, NORMAL – normalny stan okna, MAXIMIZE – okno zmaksymalizowane, MINIMIZE – okno zminimalizowane, x – współrzędna pozioma lewego górnego rogu okna, bądź szerokość okna, zależne od kontekstu, y – współrzędna pozioma lewego górnego rogu okna, bądź szerokość okna, zależne od kontekstu. GET_WINDOW_PROPERTY – funkcja pobierająca wartość wybranej własności okna. Funkcja zwraca wartość w postaci napisu. Składnia: - FUNCTION GET_WINDOW_PROPERTY (window_id Window, property NUMBER); - FUNCTION GET_WINDOW_PROPERTY (window_name VARCHAR2, property NUMBER); Parametry: - window_id – specyfikuje unikalny identyfikator okna (można go odczytać za pomocą funkcji FIND_WINDOW), - window_name – napis określający nazwę okna, - property – jedna z dostępnych własności: BACKGROUND_COLOR – kolor tła, DIRECTION – kierunek układu. Dostępne wartości: DIRECTION_DEFAULT, RIGHT_TO_LEFT, LEFT_TO_RIGHT, FILL_PATTERN – wzór wypełniający, FONT_NAME – nazwa czcionki, FONT_SIZE – rozmiar czcionki w punktach, FONT_SPACING – szerokość czcionki wyrażona jako wielkość odstępu pomiędzy dwoma znakami, FONT_STYLE – styl czcionki, FONT_WEIGHT – szerokość czcionki, FOREGROUND_COLOR – kolor pierwszego planu, HEIGHT – wysokość okna. HIDE_ON_EXIT – ukrywanie okna przy wyjściu. Możliwe wartości to: PROPERTY_TRUE, PROPERTY_FALSE, ICON_NAME – nazwa pliku ikony, TITLE – tytuł okna, VISIBLE – widoczność okna. Możliwe wartości to: PROPERTY_TRUE, PROPERTY_FALSE, WINDOW_SIZE – rozmiar okna (szerokość i wysokość okna), 12 Projektowanie i implementacja systemów informatycznych WINDOW_STATE – stan okna. Możliwe wartości to: NORMAL, MAXIMIZE, MINIMIZE, WIDTH – szerokość okna, X_POS – współrzędna x lewego górnego rogu okna, Y_POS – współrzędna y lewego górnego rogu okna, Przydatne wbudowane programy dla kanw: • SET_CANVAS_PROPERTY – ustawia podaną własność dla danej kanwy. Składnia: - SET_CANVAS_PROPERTY (canvas_id CANVAS, property NUMBER, value VARCHAR2); - SET_CANVAS_PROPERTY (canvas_id CANVAS, property NUMBER, x NUMBER); - SET_CANVAS_PROPERTY (canvas_id CANVAS, property NUMBER, x NUMBER, y NUMBER); - SET_CANVAS_PROPERTY (canvas_name VARCHAR2, property NUMBER, value VARCHAR2); - SET_CANVAS_PROPERTY (canvas_name VARCHAR2, property NUMBER, x NUMBER); - SET_CANVAS_PROPERTY (canvas_name VARCHAR2, property NUMBER, x NUMBER, y NUMBER); Parametry: - canvas_id – identyfikator kanwy, można go odczytać za pomocą funkcji FIND_CANVAS, - canvas_name – nazwa kanwy, - property – ustawiana własność. Parametr ten może przyjmować następujące wartości: BACKGROUND_COLOR – kolor tła, CANVAS_SIZE – wielkość kanwy (szerokość i wysokość), FILL_PATTERN – wzór wypełniający kanwę, 13 Projektowanie i implementacja systemów informatycznych • FONT_NAME – nazwa czcionki, FONT_SIZE – rozmiar czcionki w punktach, FONT_SPACING – szerokość czcionki wyrażona jako wielkość odstępu pomiędzy dwoma znakami, FONT_STYLE – styl czcionki, FONT_WEIGHT – szerokość czcionki, FOREGROUND_COLOR – kolor obiektów pierwszego planu, HEIGHT – wysokość kanwy w znakach, TOPMOST_TAB_PAGE – nazwa domślnej zakładki, której zawartość w pierwszej kolejności zobaczy operator, VISUAL_ATTRIBUTE – nazwa atrybutu wizualnego, który ma definiować własności wizualne kanwy, WIDTH – szerokość kanwy wyrażona w znakach. - value – jedna z dostępnych wartości własności, - x – liczba określająca współrzędna poziomą lub szerokość, - y – liczba określająca współrzędna pionową lub wysokość. GET_CANVAS_PROPERTY – pobiera podaną własność dla danej kanwy. Odczytana wartość zwracana jest jako nappis. Składnia: - FUNCTION GET_CANVAS_PROPERTY (canvas_id Canvas, property NUMBER); - FUNCTION GET_CANVAS_PROPERTY (canvas_name VARCHAR2, property NUMBER); Parametry: - canvas_id – identyfikator kanwy, można go odczytać za pomocą funkcji FIND_CANVAS, - canvas_name – nazwa kanwy, - property – odczytywana własność. Parametr ten może przyjmować następujące wartości: BACKGROUND_COLOR – kolor tła, FILL_PATTERN – wzór wypełniający kanwę, FONT_NAME – nazwa czcionki, FONT_SIZE – rozmiar czcionki w punktach, FONT_SPACING – szerokość czcionki wyrażona jako wielkość odstępu pomiędzy dwoma znakami, FONT_STYLE – styl czcionki, FONT_WEIGHT – szerokość czcionki, FOREGROUND_COLOR – kolor obiektów pierwszego planu, HEIGHT – wysokość kanwy w znakach, 14 Projektowanie i implementacja systemów informatycznych • • TAB_PAGE_X_OFFSET – odległość współrzędnych poziomych pomiędzy lewym gówrnym rogiem kanwy zakładkowej i lewym górnym rogiem karty, TAB_PAGE_Y_OFFSET – odległość współrzędnych pionowych pomiędzy lewym gówrnym rogiem kanwy zakładkowej i lewym górnym rogiem karty, VISUAL_ATTRIBUTE – nazwa atrybutu wizualnego, który ma definiować własności wizualne kanwy. Jeżeli nie ustawiono żadnego atrybutu wizualnego dla kanwy, to zwracana jest wartośc CUSTOM (jeśli zmieniono wybrane ustawienia wizualne kanwy) lub DEFAULT. WIDTH – szerokość kanwy wyrażona w znakach. SHOW_VIEW – powoduje wyświetlenie w podanych współrzędnych danej kanwy. Jeśli wołana kanwa już była wyświetlona, to wywołanie tej funkcji spowoduje jej przeniesienie na wierzch. Składnia: - SHOW_VIEW(view_id ViewPort); - SHOW_VIEW(view_name VARCHAR2); Parametry: - view_id – identyfikator wyświetlanej kanwy, można go odczytać za pomocą funkcji FIND_VIEW, - view_name – nazwa kanwy, HIDE_VIEW – powoduje ukrycie podanej kanwy. Przed wywołaniem tej procedury aby aktualnym elementem był element położony na innej kanwie niż kanwa aktualnie ukrywana. Składnia: - HIDE_VIEW(view_id ViewPort); - HIDE_VIEW(view_name VARCHAR2); Parametry: - view_id – identyfikator ukrywanej kanwy, można go odczytać za pomocą funkcji FIND_VIEW, - view_name – nazwa kanwy, Ćwiczenie 1 1. Utwórz nowy formularz (File->New->Form). Wywołaj kreator bloków danych (Tools->Data Block Wizard) i utwórz blok bazodanowy oparty na tabeli MARKI. Wyświetl pola: KOD, NAZWA. Umieść je na kanwie typu Karty (Zakładkowej). Zapewnij wyświetlenie 15 wierszy w formie tabelarycznej. Dodaj pasek przewijania, a ramkę grupującej zatytułuj „Marki samochodów”. Dodaj podpowiedzi i opisy dla pól KOD i NAZWA. Uporządkuj dane według nazwy marki (własność ORDER BY). 15 Projektowanie i implementacja systemów informatycznych 2. Zmień nazwę okna na OKNO_MARKI_TYPY. Ustaw tytuł okna na „Marki samochodów i typy nadwozi”. Ustaw jako główną kanwę okna zdefiniowaną wcześniej kanwę kart. Zapewnij aby nie była dozwolona maksymalizacja okna i zmiana jego rozmiarów. 3. Zmień nazwę kanwy kart na KANWA_MARKI_TYPY, a istniejącej karty na MARKI. Dodatkowo ustaw etykietę karty na „Marki”. 4. Utwórz na poziomie formularza wyzwalacz WHENNEW_FORM_INSTANCE, który zapewni maksymalizację okna MDI i automatyczne wyświetlanie danych po wejściu do formularza. Wykorzystaj kod: -- Zmaksymalizuj okno MDI set_window_property(FORMS_MDI_WINDOW,WINDOW_STATE, MAXIMIZE); -- Przejdź do bloku MARKI go_block('MARKI'); -- Wykonaj zapytanie execute_query; 5. Utwórz atrybut wizualny AKTUALNY_REKORD i ustaw dla niego własność definiującą kolor tła na green. Dla bloku MARKI określ własność definiującą grupę atrybutów wizualnych bieżącego rekordu na AKTUALNY REKORD. 6. Zapisz formularz pod nazwą marki_typy.fmb i przetestuj jego działanie. 7. Utwórz za pomocą kreatora bazodanowy blok danych TYPY_NADWOZI oparty na tabeli TYPY_NADOWZI. Zapewnij wyświetlanie wszystkich kolumn w postaci 15 wierszy. Dodaj stosowne opisy i podpowiedzi dla wszystkich pól bloku. Pola nowego bloku mają być wyświetlone na nowej karcie (tej samej kanwy). Dodaj pasek przewijania, a ramkę zatytułuj „Typy nadwozi”. Zapewnij porządkowanie danych po nazwie kodzie typu nadwozia (własność ORDER BY). 8. Zmień nazwę kanwy na TYPY_NADWOZI, zaś etykietę na „Typy”. 9. Zdefiniuj grupę atrybutów AKTUALNY_REKORD. wizualnych bieżącego rekordu na 10.Zapisz formularz i go przetestuj. Zauważ, że przełączanie pomiędzy kartami nie powoduje automatycznego odświeżenia i wczytania danych. 16 Projektowanie i implementacja systemów informatycznych 11.Zapewnij automatyczne odświeżanie i wczytywanie danych w momencie przechodzenia pomiędzy kartami. Wykorzystaj wyzwalacz WHEN-TABPAGE-CHANGED na poziomie formularza: DECLARE tp_nm VARCHAR2(30); tp_id TAB_PAGE; tp_lb VARCHAR2(30); BEGIN -- Znajdź kartę tp_nm:= GET_CANVAS_PROPERTY('KANWA_MARKI_TYPY', topmost_tab_page); -- Odczytaj id karty tp_id := FIND_TAB_PAGE(tp_nm); -- Pobierz etykietę karty tp_lb := GET_TAB_PAGE_PROPERTY(tp_id, label); -- Odśwież odpowiedni blok IF tp_lb='Marki' THEN go_block('MARKI'); execute_query; ELSIF tp_lb='Typy' THEN go_block('TYPY_NADWOZI'); execute_query; ELSE null; END IF; END; 12.Zapisz formularz i zweryfikuj jego funkcjonowanie. 17 Projektowanie i implementacja systemów informatycznych Menu Aby umieścić menu w formularzu konieczne jest utworzenie w Forms Builder modułu menu (File->New->Menu). Moduł źródłowy menu zapisywany jest w pliku z rozszerzeniem mmb, uruchomieniowy – mmx, zaś skonwertowany do postaci tekstowej – mmt. Do projektowania wyglądu menu służy Edytor Menu o wyglądzie przedstawionym poniżej: Zbiór dostępnych własności jest uzależniony od poziomu danego elementu (węzeł, liść). Najbardziej rozbudowany zestaw własności występuje dla elementów końcowych: 18 Projektowanie i implementacja systemów informatycznych Podstawowe własności elementów menu: Ćwiczenie 2 0. Utwórz nowe menu (File->New->Menu). Kliknij dwukrotnie na ikonie przy nazwie modułu menu i uruchom edytor menu. Zdefiniuj element menu o nazwie „Słowniki”. W ramach niego zdefiniuj element „Marki i typy nadwozi”. Dla niego określ wykonywany kod elementu menu tab aby wywoływał formularz marki_typy. Wykorzystaj kod: -- wywołaj formularz marki_typy CALL_FORM('marki_typy', no_hide, do_replace, no_query_only, ''); 1. Zapisz menu pod nazwą menu_main.mmb i skompiluj zawartość generując postać uruchomieniową mmx. 19 Projektowanie i implementacja systemów informatycznych 2. Utwórz nowy formularz (File->New->Form). W nowym formularzu utwórz ręcznie kanwę i nowy blok niebazodanowy. Umieść w tym bloku element tekstowy i zapewnij jego wyświetlanie na zdefiniowanej kanwie. Szerokość bądź wysokość tego elementu ustaw na 0. We własnościach formularza podaj nazwę modułu menu – menu_main. 3. W ramach kanwy zapewnij oprawę graficzną strony tytułowej aplikacji, np. umieść zdjęcie poprzez wybranie Edycja->Import. 4. Na poziomie formularza dodaj wyzwalacz WHEN-NEW-FORMINSTANCE powodujący maksymalizację okna MDI. Wykorzystaj kod: -- Zmaksymalizuj okno MDI set_window_property(FORMS_MDI_WINDOW,WINDOW_STATE, MAXIMIZE); 5. Zapisz formularz pod nazwą main.fmb. Przed uruchomieniem go zapewnij aby pliki menu_main.mmx i marki_typy.fmx znajdowały się na ścieżce FORMS90_PATH (np. w pracowni C:\oracle\ids\cgenf61\admin). W razie konieczności zmodyfikuj wpis w rejestrze. Pliki fmx i mmx można wygenerować wybierając z menu opcję Program->Compile module. 6. Uruchom formularz main.fmb. Sprawdź czy prawidłowo wyświetla się zdefiniowane menu i czy wybór opcji „Marki i typy nadwozi” powoduje uruchomienie stosownego formularza. 20 Projektowanie i implementacja systemów informatycznych Bloki danych Bloki danych stanowią logiczny zbiór elementów (przycisków, kolumn tabeli). Bloki mogą być: ● bazodanowe – oparte na tabeli, grupujące przede wszystkim elementy odpowiadające kolumnom z tabeli, ● niebazodanowe (kontrolne) – grupujące inne elementy (np. przyciski). Podstawowe własności bloku: • Name – określa unikalną w ramach formularza nazwę bloku. Umożliwia programowe odwoływanie się do bloku (odczytywanie bądź zmianę 21 Projektowanie i implementacja systemów informatycznych • • • • • • • • • • • własności). Blok bazodanowy utworzony za pomocą kreatora ma domyślnie taką samą nazwę jak tabela, na której się opiera, Navigation style – definiuje styl nawigacji. Dozwolone wartości to: - Same Record – wartość domyślna, określa nawigację w ramach tego samego rekordu, - Change Record – określa nawigację do następnego rekordu, - Change Data Block – określa nawigację do następnego blioku danych, Previous Navigation Data Block – określa nazwę poprzedniego bloku w nawigacji, jeśli wartość ta nie jest zdefiniowana to jako poprzedni blok w nawigacji zostanie przyjęty blok poprzedzający dany blok w Nawigatorze Obiektów, Next Navigation Data Block – określa nazwę następnego bloku w nawigacji, jeśli wartość ta nie jest zdefiniowana to jako następny blok w nawigacji zostanie przyjęty blok następujący po danym bloku w Nawigatorze Obiektów, Current Record Visual Attribute Group – nazwa grupy atrybutów wizualnych dla bieżącego rekordu, Number of Record Buffered – ilość rekordów buforowanych w momencie pobierania wierszy z bazy danych, Number of Record Displayed – ilosć rekordów wyświetlanych, Query All Records – definiuje czy ma nastąpić odczyt wszystkich wierszy z bazy w momencie wykonania zpaytania w danym bloku. Możliwe wartości to: - No – wartość domyślna, nie następuje pobranie wszystkich wierszy, - Yes – w momencie wykonania zapytania odczytywane są wszystkie wiersze z bazy, własność ta jest istotna dla różnego rodzaju podumowań, Record Orientation – orientacja rekordu. Możliwe wartości to: - Vertical – wartość domyślna, definiuje pionową orientację rekordów na formularzu, - Horizontal – definiuje poziomą orientację rekordów na formularzu, Single Record – okręśla czy w ramach bloku ma występować tylko pojedynczy rekord. Możliwe wartości to: - No – wartość domyślna, w bloku może wystepować wiele rekordów, - Yes – w bloku może występować tylko jeden rekord, wartość używana często w przypadku bloków kontrolnych, Database Data Block – określa czy dany blok jest blokiem bazodanowym. Dozwolone wartości to: - Yes – wartość domyślna, definiuje blok bazodanowy, - No – definiuje blok niebazodanowy, Query Allowed – określa czy w danym bloku dozwolone jest wykonywanie zapytania. Dozwolone wartości to: - Yes – wartość domyślna, zapytanie jest dozwolone, 22 Projektowanie i implementacja systemów informatycznych • • • • • • • • • • • • - No – zapytanie nie jest dozwolone, Query Data Source Type – określa typ źródła danych dla bloku. Możliwe wartości to: - None – brak zdefiniowanego źródła, blok nie jest bazodanowy, - Table – wartość domyślna, źródłow danych dla bloku stanowi tabela, - Procedure – źródło danych dla bloku stanowią odpowiednie procedury skłądowane, - Transactional Triggers – źródło danych stanowią wyzwalacze trensakcyjne, - FROM clause query – źródło danych zdefiniowane jest w postaci zapytania, Query Data Source Name – nazwa źródła danych dla bloku, WHERE Clause – klauzula WHERE dodawana do zapytania w momencie wysyłania zapytania do bazy, ORDER BY Clause – klauzula ORDER BY definiująca sposób sortowania wyników zapytania pobranych z bazy, Insert Allowed – określa czy możliwe jest dodawanie wierszy w danym bloku. Możliwe wartości to: - Yes – wartość domyślna, dodawanie wierszy jest mozliwe w bloku, - No – dodawanie wierszy w bloku nie będzie mozliwe, Update Allowed – określa czy możliwe jest modyfikowanie wierszy w danym bloku. Możliwe wartości to: - Yes – wartość domyślna, modyfikowanie wierszy jest mozliwe w bloku, - No – modyfikowanie wierszy w bloku nie będzie możliwe, Delete Allowed - określa czy możliwe jest usuwanie wierszy w danym bloku. Możliwe wartości to: - Yes – wartość domyślna, usuwanie wierszy jest mozliwe w bloku, - No – usuwanie wierszy w bloku nie będzie mozliwe, Show Scroll Bar – określa czy dla bloku ma wystepować pasek przewijania. Możliwe wartości to: - Yes – pasek przewijania jest dostępny, - No – wartość domyślna, pasek przewijania nie jest dostępny, Scroll Bar Canvas – definiuje nazwę kanwy, na której ma być wyświetlony pasek przewijania, Scroll Bar Tab Page – definiuje dla kanwy zakładkowej (Tab) nazwę zakładki, na której ma się pojawić pasek przewijania, Scroll Bar Orientation – określa orientację paska przewijania. Możliwe wartości to: - Vertical – wartość domyślna, definiuje pionową orientację paska przewijania, - Horizontal – definiuje poziomą orientację paska przewijania, Scroll Bar X Position – definiuje współrzędną x lewego górnego narożnika paska przewijania, 23 Projektowanie i implementacja systemów informatycznych • • • • • • • • Scroll Bar Y Position – definiuje współrzędną y lewego górnego narożnika paska przewijania, Scroll Bar Width – definiuje szerokość paska przewijania, Scroll Bar Length – definiuje długosć paska przewijania, Visual Attribute Group – określa grupę atrybutów wizualnych dla bloku, Foreground Color – określa kolor pierwszoplanowy, Background Color – określa kolor tła, Fill Patern – określa wzór wypełnienia. SET_BLOCK_PROPERTY – procedura pozwalająca na ustawienie wybranej własności dla bloku. Składnia: - SET_BLOCK_PROPERTY (block_id Block, property VARCHAR, value VARCHAR); - SET_BLOCK_PROPERTY (block_id Block, property VARCHAR, x NUMBER); - SET_BLOCK_PROPERTY (block_id Block, property VARCHAR, x NUMBER, y NUMBER); - SET_BLOCK_PROPERTY (block_name VARCHAR2, property VARCHAR, value VARCHAR); - SET_BLOCK_PROPERTY (block_name VARCHAR2, property VARCHAR, x NUMBER); - SET_BLOCK_PROPERTY (block_name VARCHAR2, property VARCHAR, x NUMBER, y NUMBER); Parametry: - block_id – specyfikuje unikalny identyfikator bloku (można go odczytać za pomocą funkcji FIND_BLOCK), - block_name – nazwa bloku, - property – jedna z dostępnych własności: 24 Projektowanie i implementacja systemów informatycznych ALL_RECORDS – określa, że w momencie wykonania zapytania powinny zostać pobrane wszystkie wiersze z bazy spełniające zadane kryteria, BLOCKSCROLLBAR_POSITION – określa współrzędne x i y bloku paska przewijania, BLOCKSCROLLBAR_X_POS – określa współrzędną x bloku paska przewijania, BLOCKSCROLLBAR_Y_POS – określa współrzędną y bloku paska przewijania, COORDINATION_STATUS – określa status koordynacji bloku podrzędnego pozostającego w relacji master-detail (nadrzędny-podrzędny). Dostępne wartości to: COORDINATED i NON_COORDINATED, CURRENT_RECORD_ATTRIBUTE – określa nazwę atrybutu wizualnego skojarzonego z bieżącym wierszem danego bloku, CURRENT_ROW_BACKGROUND_COLOR – określa kolor tła bieżącego wiersza bloku, CURRENT_ROW_FILL_PATTERN – określa wzór wypełniający bieżący wiersz danego bloku, CURRENT_ROW_FONT_NAME – określa nazwę czcionki używanej dla bieżącego wiersza danego bloku, CURRENT_ROW_FONT_SIZE – określa wielkość czcionki dla bieżącego wiersza danego bloku, CURRENT_ROW_FONT_SPACING – określa szerokość czcionki jako odległość pomiędzy znakami, CURRENT_ROW_FONT_STYLE – określa styl czcionki dla bieżącego rekordu danego bloku, CURRENT_ROW_FONT_WEIGHT – określa szerokość czcionki dla bieżącego rekordu danego bloku, CURRENT_ROW_FOREGROUND_COLOR – określa kolor pierwszoplanowy dla bieżącego wiersza danego bloku, DEFAULT_WHERE – definiuje klauzulę WHERE, DELETE_ALLOWED – określa czy dozwolone jest usuwanie rekordów w danym bloku. Dozwolone wartości to: PROPERTY_TRUE i PROPERTY_FALSE, DML_DATA_TARGET_NAME – określa nazwę docelowego źródła danych dla bloku, ENFORCE_PRIMARY_KEY – określa, że każdy wiersz zmieniony lub dodany do bloku musi posiadać unikalną charakterystykę. Dostępne wartości to: PROPERTY_TRUE i PROPERTY_FALSE, INSERT_ALLOWED – określa czy dozwolone jest dodawanie rekordów w danym bloku. Dostępne wartości to: PROPERTY_TRUE i PROPERTY_FALSE, 25 Projektowanie i implementacja systemów informatycznych KEY_MODE – określa czy klucz główny podlega procesowi modyfikacji. Własność ta jest używana dla źródeł danych innych niż RDBMS Oracle. Dozwolone wartości to: UPDATEABLE_PRIMARY_KEY i NON_UPDATEABLE_PRIMARY_KEY, LOCKING_MODE – określa tryb blokowania wierszy w bazie. Dozwolone wartości to: DELAYED i IMMEDIATE, MAX_QUERY_TIME – specyfikuje maksymalny czas trwania zapytania, MAX_RECORDS_FETCHED – określa maksymalną ilość pobieranych wierszy, NAVIGATION_STYLE – specyfikuje styl nawigacji w danym bloku. Dozwolone wartości to: SAME_RECORD, CHANGE_RECORD, CHANGE_BLOCK, NEXT_NAVIGATION_BLOCK – określa nazwę następnego bloku w nawigacji, OPTIMIZER_HINT – podpowiedź dla optymalizatora poleceń, ORDER_BY – specyfikuje klauzulę ORDER BY pozwalającą na sortowanie danych w bloku według zadanego porządku, PRECOMPUTE_SUMMARIES – określa czy wartości wyliczane są obliczane przed standardowym wykonaniem zapytania w bloku, PREVIOUS_NAVIGATION_BLOCK – określa nazwę QUERY_ALLOWED – specyfikuje czy dozwolone jest wykonywanie zapytań w danym bloku. Dozwolone wartości to: PROPERTY_TRUE i PROPERTY_FALSE, QUERY_DATA_SOURCE_NAME – określa nazwę źródła danych dla bloku, QUERY_HITS – określa ilość odczytanych rekordów, UPDATE_ALLOWED – specyfikuje czy dozwolone jest wykonywanie modyfikacji wartości elementów w danym bloku, UPDATE_CHANGED_COLUMNS – określa czy procesowi modyfikacji powinny podlegać tylko te kolumny, których wartość uległa zmianie w formularzu, - value – wartość dla ustawianej własności - x – współrzędna pozioma lub szerokość listy wartości, - y – współrzędna pionowa lub wysokość listy wartości. Ćwiczenie 3 1. Utwórz nowy formularz (File->New->Form). Dodaj do niego za pomocą kreatora (Tools->Data Block Wizard) blok oparty na tabeli MARKI. Zapewnij wyświetlanie 5 wierszy zawierających kolumnę KOD (kod 26 Projektowanie i implementacja systemów informatycznych marki) i NAZWA (nazwa marki). Dodaj pasek przewijania. Uzupełnij stosownie podpowiedzi dla wyświetlanych pól. 2. Dodaj za pomocą kreatora blok oparty na tabeli MODELE. Powiąż go relacją z blokiem MARKI. Zapewnij wyświetlanie 10 wierszy zawierających kolumnę NAZWA (nazwa modelu). Dodaj pasek przewijania. Uzupełnij stosownie podpowiedzi dla wyświetlanego pola. 3. Ustaw tytuł okna na „Marki i modele samochodów”. Dodaj atrybut wizualny zapewniający kolorowanie tła bieżącego rekordu na kolor cyan. 4. Zapewnij aby utworzony formularz typu master-detail (nadrzędnypodrzędny) wyglądał następująco: 5. Dodaj na poziomie formularza wyzwalacz WHEN-NEW-FORMINSTANCE zapewniający automatyczne wyświetlenie danych i maksymalizację okna MDI: -- Wykonanie zapytania po wywołaniu formularza go_block('MARKI'); execute_query; -- Zmaksymalizuj okno MDI set_window_property(FORMS_MDI_WINDOW, 27 Projektowanie i implementacja systemów informatycznych WINDOW_STATE,MAXIMIZE); 6. Na poziomie bloku MODELE dodaj wyzwalacz obsługujący numerację identyfikatora modelu: PRE-INSERT select modele_id_seq.nextval into :modele.id from dual; 7. Zapisz formularz pod nazwą marki_modele.fmb i przetestuj jego działanie. 28 Projektowanie i implementacja systemów informatycznych Elementy bloków . • SET_ITEM_PROPERTY – procedura pozwalająca na ustawienie wybranej własności dla podanego elementu. Składnia: - SET_ITEM_PROPERTY (item_id ITEM, property NUMBER, value VARCHAR2); - SET_ITEM_PROPERTY (item_name VARCHAR2, property NUMBER, value VARCHAR2); - SET_ITEM_PROPERTY (item_id ITEM, property NUMBER, x NUMBER); - SET_ITEM_PROPERTY (item_name VARCHAR2, property NUMBER, x NUMBER); - SET_ITEM_PROPERTY (item_id ITEM, property NUMBER, x NUMBER, y NUMBER); - SET_ITEM_PROPERTY (item_name VARCHAR2, property NUMBER, x NUMBER, y NUMBER); Parametry: - item_id – specyfikuje unikalny identyfikator elementu (można go odczytać za pomocą funkcji FIND_ITEM), - item_name – nazwa elementu. - property – jedna z dostępnych własności: ALIGNMENT – wyrównanie tekstu (dotyczy wyłącznie elementów tekstowych i elementów wyświetlania). Dostępne wartości to: ALIGNMENT_START, ALIGNMENT_END, ALIGNMENT_LEFT, ALIGNMENT_CENTER, ALIGNMENT_RIGHT, 29 Projektowanie i implementacja systemów informatycznych AUTO_HINT – specyfikuje czy ma być automatycznie wyświetlana podpowiedź w linii statusu po wejściu do danego elementu. Dostępne wartości to: PROPERTY_TRUE i PROPERTY_FALSE. AUTO_SKIP – specyfikuje czy kursor automatycznie nawiguje do następnego elementu w sytuacji gdy użytkownik wprowadzi ostatni element w polu tekstowym. Własność ta dotyczy wyłącznie elementów tekstowych. Dostępne wartości to: PROPERTY_TRUE i PROPERTY_FALSE, BACKGROUND_COLOR – kolor tła, BORDER_BEVEL – styl ramki otaczającej daną instancję elementu. Dostępne wartości to: RAISED, LOWERED, PLAIN, CASE_INSENSITIVE_QUERY – określa czy zapytanie wprowadzane w elemencie jest wrażliwe na wielkość liter. Dostępne wartości to: PROPERTY_TRUE i PROPERTY_FALSE, CASE_RESTRICTION – określa ograniczenia dotyczące wielkości liter. Dostępne wartości to: UPPERCASE, LOWERCASE, NONE, COMPRESS – określa czy dane muzyczne mają podlegać kompresji przed zapisaniem do pliku. Dostępne wartości to: COMPRESSION_ON, COMPRESSION_OFF, ORIGINAL_SETTING, CONCEAL_DATA – specyfikuje czy dane wprowadzane w elemencie mają być widoczne (wartość PROPERTY_FALSE) czy też nie (wartość PROPERTY_TRUE). CURRENT_RECORD_ATTRIBUTE – nazwa atrybutu wizualnego dla bieżącego rekordu, CURRENT_ROW_BACKGROUND_COLOR – kolor tła dla bieżącego rekordu, CURRENT_ROW_FILL_PATTERN – wzór wypełniający dla bieżącego rekordu, CURRENT_ROW_FONT_NAME – nazwa czcionki dla bieżącego rekordu, CURRENT_ROW_FONT_SIZE – rozmiar czcionki dla bieżącego rekordu, CURRENT_ROW_FONT_SPACING – szerokość czcionki dla bieżącego rekordu wyrażona jako odległość pomiędzy znakami, CURRENT_ROW_FONT_STYLE – styl czcionki dla bieżącego rekordu, CURRENT_ROW_FONT_WEIGHT – szerokość czcionki dla bieżącego rekordu, 30 Projektowanie i implementacja systemów informatycznych CURRENT_ROW_FOREGROUND_COLOR – kolor pierwszoplanowy dla bieżącego rekordu, CURRENT_ROW_WHITE_ON_BLACK – definiuje wyświetlanie monochromatyczne (biały tekst na czarnym tle), DIRECTION – określa kierunek wyświetlania. Dostępne wartości to: DIRECTION_DEFAULT, RIGHT_TO_LEFT, LEFT_TO_RIGHT, DISPLAYED – specyfikuje czy element jest wyświetlany/dostępny bądź ukryty/niedostępny, ECHO – określa czy znaki wprowadzane w elemencie tekstowym są widoczne. Dostępne wartości to: PROPERTY_TRUE (znaki nie są ukrywane) i PROPERTY_FALSE (znaki są ukrywane), FILL_PATTERN – wzór wypełniający pole, FIXED_LENGTH – określa czy ma być sprawdzana ilość znaków wprowadzonych w polu z tą która jest wyspecyfikowana jako maksymalna wielkość pola. Jeśli przyjmuje wartość PROPERTY_TRUE, to oznacza to że element jest poprawny tylko wtedy gdy ilość wprowadzonych znaków jest równa zdefiniowanej maksymalnej długości pola. Jeżeli przyjmuje wartość PROPERTY_FALSE, to ta zależność nie jest sprawdzana, FONT_NAME – nazwa czcionki, FONT_SIZE – rozmiar czcionki, FONT_SPACING – szerokość czcionki definiowana jako odległość pomiędzy znakami, FONT_STYLE – styl czcionki, FONT_WEIGHT – szerokość czcionki, FOREGROUND_COLOR – kolor pierwszego planu, FORMAT_MASK – maska formatu pola, HEIGHT – wysokość pola, HINT_TEXT – tekst podpowiedzi wyświetlany w linii statusu, ICON_NAME – nazwa pliku ikony, IMAGE_DEPTH – określa ilość kolorów dla elementu reprezentującego obraz, INSERT_ALLOWED – określa dostępność elementu do modyfikacji. Dostępne wartości to: PROPERTY_TRUE, PROPERTY_FALSE, ITEM_IS_VALID – specyfikuje czy dany element jest poprawny czy też nie. Dostępne wartości to: PROPERTY_TRUE i PROPERTY_FALSE, ITEM_SIZE – określa szerokość i wysokość elementu , 31 Projektowanie i implementacja systemów informatycznych KEEP_POSITION – określa zapamiętywane pozycji kursora w elemencie. Dostępne wartości to: PROPERTY_TRUE i PROPERTY_FALSE, LABEL – etykieta elementu, LOCK_RECORD_ON_CHANGE – określa czy po zmiana wartości elementu rekord ma podlegać automatycznemu zalokowaniu. Wartość PROPERTY_TRUE oznacza, że po zmiana rekord automatycznie ulegnie zalokowaniu, PROPERTY_FALSE – nie ulegnie zalokowaniu, LOV_NAME – nazwa listy wartości (LOV) skojarzonej z danym elementem, MERGE_CURRENT_ROW_VA – określa łączenie (a nie zastępowanie) atrybutu wizualnego bieżącego rekordu z atrybutem wizualnym przypisanym do danego elementu, MERGE_TOOLTIP_ATTRIBUTE – określa łączenie (a nie zastępowanie) atrybutu wizualnego elementu z atrybutem wizualnym przypisanym do podpowiedzi, MERGE_VISUAL_ATTRIBUTE – określa łączenie (a nie zastępowanie) wyspecyfikowanego atrybutu z bieżącym atrybutem wizualnym obiektu, MOUSE_NAVIGATE – określa czy ma nastąpić przeniesienie focusa po nawigacji do danego elementu za pomocą myszy. Dostępne wartości to: PROPERTY_TRUE, PROPERTY_FALSE, NAVIGABLE – określa dostępność elementu do nawigacji za pomocą klawiatury. PROPERTY_TRUE oznacza, że element jest dostępny w nawigacji, PROPERTY_FALSE – nie jest dostępny w nawigacji, NEXT_NAVIGATION_ITEM – specyfikuje następny element w nawigacji, POPUPMENU_CONTENT_ITEM – określa ustawienia menu kontekstowego dla elementu OLE. Możliwe wartości to: POPUPMENU_COPY_ITEM, POPUPMENU_CUT_ITEM, POPUPMENU_DELOBJ_ITEM, POPUPMENU_INSOBJ_ITEM, POPUPMENU_LINKS_ITEM, POPUPMENU_OBJECT_ITEM, POPUPMENU_PASTE_ITEM, POPUPEMNU_PASTESPEC_ITEM, POSITION – pozycja elementu, PREVIOUS_NAVIGATION_ITEM – określa nazwę następnego elementu w nawigacji, PRIMARY_KEY – specyfikuje czy każdy rekord wpisany lub zmodyfikowany musi posiadać unikalną charakterystykę. 32 Projektowanie i implementacja systemów informatycznych Dozwolone wartości to: PROPERTY_TRUE, PROPERTY_FALSE, PROMPT_ALIGNMENT_OFFSET – określa odstęp pomiędzy elementem a opisem, PROMPT_BACKGROUND_COLOR – kolor tła dla opisu, PROMPT_DISPLAY_STYLE – styl opisu wyświetlanego dla elementu. Dostępne są wartości: PROMPT_FIRST_RECORD, PROMPT_HIDDEN, PROMPT_ALL_RECORDS, PROMPT_EDGE – krawędź przy której ma być umieszczony opis. Dostępne wartości: START_EDGE, END_EDGE, TOP_EDGE, BOTTOM_EDGE, PROMPT_EDGE_ALIGNMENT – określa wyrównanie opisu w ramach danej krawędzi. Dostępne wartości to: ALIGNMENT_START, ALIGNMENT_END, ALIGNMENT_CENTER, PROMPT_EDGE_OFFSET – określa odstęp pomiędzy elementem i jego opisem, PROMPT_FILL_PATTERN – wzór wypełniający dla opisu, PROMPT_FONT_NAME – nazwa czcionko dla opisu, PROMPT_FONT_SIZE – rozmiar czcionki dla opisu, PROMPT_FONT_SPACING – szerokość czcionki opisu wyrażona jako odstęp pomiędzy znakami, PROMPT_FONT_STYLE – styl czcionki dla opisu, PROMPT_FONT_WEIGHT – szerokość czcionki dla opisu, PROMPT_FOREGROUND_COLOR – kolor pierwszego planu dla opisu, PROMPT_TEXT – tekst opisujący element, PROMPT_TEXT_ALIGNMENT – wyrównanie tekstu opisu. Dostępne są wartości: ALIGNMENT_START, ALIGNMENT_LEFT, ALIGNMENT_RIGHT, ALIGNMENT_CENTER, ALIGNMENT_END, PROMPT_VISUAL_ATTRIBUTE – atrybut wizualny dla opisu elementu, PROMPT_WHITE_ON_BLACK – określa monochromatyczny charakter opisu (biały tekst na czarnym tle), QUERYABLE – określa czy pole jest dostępne przy wprowadzaniu kryteriów zapytania. Dozwolone są wartości: PROPERTY_TRUE, PROPERTY_FALSE, QUERY_ONLY – specyfikuje dostępność elementu w operacjach typu insert, update. Dostępne wartości to: PROPERTY_TRUE, PROPERTY_FALSE. REQUIRED – określa wymagalność pola. Dostępne są wartości: PROPERTY_TRUE, PROPERTY_FALSE, 33 Projektowanie i implementacja systemów informatycznych SHOW_FAST_FORWARD_BUTTON – określa dostępność przycisku przewijania do przodu dla elementu muzycznego. Dozwolone wartości to: PROPERTY_TRUE i PROPERTY_FALSE, SHOW_PLAY_BUTTON – określa dostępność przycisku do odtwarzania dla elementu muzycznego. Dozwolone wartości to: PROPERTY_TRUE i PROPERTY_FALSE, SHOW_RECORD_BUTTON – określa dostępność przycisku do nagrywania dla elementu muzycznego. Dozwolone wartości to: PROPERTY_TRUE i PROPERTY_FALSE, SHOW_REWIND_BUTTON – określa dostępność przycisku przewijania dla elementu muzycznego. Dozwolone wartości to: PROPERTY_TRUE i PROPERTY_FALSE, SHOW_SLIDER – określa dostępność paska postępu dla elementu muzycznego. Dozwolone wartości to: PROPERTY_TRUE i PROPERTY_FALSE, SHOW_TIME_INDICATOR – określa dostępność wskaźnika czasu dla elementu muzycznego. Dozwolone wartości to: PROPERTY_TRUE i PROPERTY_FALSE, SHOW_VOLUME_CONTROL – określa dostępność regulacji głośności dla elementu muzycznego. Dozwolone wartości to: PROPERTY_TRUE i PROPERTY_FALSE, TOOLTIP_BACKGROUND_COLOR – kolor tła dla podpowiedzi w dymku, TOOLTIP_FILL_PATTERN – wzór wypełniający dla podpowiedzi w dymku, TOOLTIP_FONT_NAME – nazwa czcionki dla podpowiedzi w dymku, TOOLTIP_FONT_SIZE – rozmiar czcionki dla podpowiedzi w dymku, TOOLTIP_FONT_SPACING – szerokość czcionki dla podpowiedzi w dymku określana jako odległość pomiędzy znakami, TOOLTIP_FONT_STYLE – styl czcionki dla podpowiedzi w dymku, TOOLTIP_FONT_WEIGHT – szerokość czcionki dla podpowiedzi w dymku, TOOLTIP_FOREGROUND_COLOR – kolor pierwszoplanowy dla podpowiedzi w dymku, TOOLTIP_TEXT – tekst podpowiedzi umieszczanej w dymku, TOOLTIP_WHITE_ON_BLACK – specyfikuje monochromatyczny charakter wyświetlania podpowiedzi w dymku (biały tekst na czarnym tle), 34 Projektowanie i implementacja systemów informatycznych UPDATE_ALLOWED – określa czy możliwa jest modyfikacja wartości w danym elemencie. Dozwolone wartości to: PROPERTY_TRUE i PROPERTY_FALSE, UPDATE_COLUMN – określa czy kolumna powinna być traktowana jako zmodyfikowana w poleceniu update zapisującym dane do bazy. Dostępne wartości to: PROPERTY_TRUE i PROPERTY_FALSE, UPDATE_NULL – określa możliwość modyfikacja elementu tylko na wartością pustą (PROPERTY_TRUE) lub pozwala na dowolne modyfikacje (PROPERTY_FALSE), UPDATE_PERMISSION – specyfikuje zezwolenie na modyfikację elementu. Dozwolone są wartości: PROPERTY_TRUE, PROPERTY_FALSE, VALIDATE_FROM_LIST – określa walidację elementu za pomocą skojarzonej z nim listy wartości. Możliwe wartości to: PROPERTY_TRUE, PROPERTY_FALSE, VISIBLE – określa widoczność elementu. Dostępne wartości to: PROPERTY_TRUE i PROPERTY_FALSE, VISUAL_ATTRIBUTE – określa nazwę atrybutu wizualnego, WHITE_ON_BLACK – określa monochromatyczny sposób wyświetlania elementu (biały tekst na czarnym tle), WIDTH – szerokość elementu, X_POS – liczba określająca współrzędną poziomą elementu, Y_POS – liczba określająca współrzędną poziomą elementu, - value – wartość dla ustawianej własności. Często jest to napis lub jedna z dostępnych wartości własności: PROPERTY_TRUE – ustawienie wartości na true, PROPERTY_FALSE – ustawienie wartości na false, - x – współrzędzna pozioma lub szerokość elementu, - y – współrzędna pionowa lub wysokość elementu. • GET_ITEM_PROPERTY – funkcja pobierająca wartość wskazanej własności danego elementu. Zwracana jest wartość w postaci zmiennej typu napisowego. Składnia: - FUNCTION GET_ITEM_PROPERTY (item_id ITEM, property NUMBER); - FUNCTION GET_ITEM_PROPERTY (item_name VARCHAR2, property NUMBER); Parametry: - item_id – specyfikuje unikalny identyfikator elementu (można go odczytać za pomocą funkcji FIND_ITEM), - item_name – nazwa elementu, 35 Projektowanie i implementacja systemów informatycznych - property – jedna z dostępnych własności: AUTO_HINT – zwraca napis TRUE jeśli jest automatyczne wyświetlanie podpowiedzi, FALSE – jeśli podpowiedzi nie są automatycznie wyświetlane, AUTO_SKIP – zwraca napis TRUE jeśli własność automatycznego pomijania jest ustawiona na Yes, FALSE – jeżeli własność jest ustawiona na No, BACKGROUND_COLOR – kolor tła, BLOCK_NAME – nazwa bloku, w którym występuje danym element, BORDER_BEVEL – zwraca wartości: RAISED, LOWERED, PLAIN w zależności od tego jak wyświetlana jest krawędź elementu, CASE_INSENSITIVE_QUERY – zwraca napis TRUE jeśli pole nie jest wrażliwe na wielkość liter, FALSE – jeśli jest wrażliwe na wielkość liter, CASE_RESTRICTION – zwraca napis UPPERCASE gdy element wyświetla napisy zapisane wielkimi literami, LOWERCASE – małymi, NONE – wielkość liter nie ma znaczenia, COLUMN_NAME – nazwa kolmny w bazie danych, z którą powiązany jest dany element, COMPRESS – określa czy dane muzyczne podlegały kompresji (TRUE – tak, FALSE – nie), CONCEAL_DATA – zwraca TRUE jeżeli napis wpisywany w pole jest ukrywane, FALSE – jeżeli jest wyświetlany, CURRENT_RECORD_ATTRIBUTE – zwraca nazwę atrybutu wizualnego aktualnego rekordu, CURRENT_ROW_BACKGROUND_COLOR – kolor tła dla aktualnego rekordu, CURRENT_ROW_FILL_PATTERN – wzór wypełniający dla aktualnego rekordu, CURRENT_ROW_FONT_NAME – nazwa czcionki dla aktualnego rekordu, CURRENT_ROW_FONT_SIZE – wielkość czcionki dla aktualnego rekordu, CURRENT_ROW_FONT_SPACING – wielkość czcionki dla aktualnego rekordu wyrażona jako odstęp pomiędzy znakami, CURRENT_ROW_FONT_STYLE – nazwa stylu czcionki dla aktualnego rekordu, CURRENT_ROW_FONT_WEIGHT – szerokość czcionki dla aktualnego rekordu, CURRENT_ROW_FOREGROUND_COLOR – kolor pierwszego planu dla aktualnego wiersza, 36 Projektowanie i implementacja systemów informatycznych CURRENT_ROW_WHITE_ON_BLACK – określa czy element jest wyświetlany w sposób monochromatyczny (biały tekst na czarnym tle), DATABASE_VALUE – dla elementu bazodanowego zwraca wartość elementu odczytaną z bazy danych, DATATYPE – zwraca typ danych elementu: ALPHA, CHAR, DATE, JDATE, EDATE, DATETIME, INT, RINT, MONEY, RMONEY, NUMBER, RNUMBER, TIME, LONG, GRAPHICS, IMAGE. DIRECTION – zwraca kierunek wyświetlania elementu: RIGHT_TO_LEFT, LEFT_TO_RIGHT. DISPLAYED – określa czy element jest wyświetlany (TRUE lub FALSE), ECHO – zwraca informację o tym czy wpisywanie danych w elemencie powoduje wyświetlanie znaków czy też nie (TRUE lub FALSE), EDITOR_NAME – zwraca nazwę edytora skojarzonego z elementem, EDITOR_X_POS – zwraca współrzędną x dla edytora, EDITOR_Y_POS – zwraca współrzędną y dla edytora, ENFORCE_KEY – zwraca nazwę elementu, którego wartość jest kopiowana do danego elementu jako klucza obcego (w momencie tworzenia nowego rekordu w relacji nadrzędznypodrzędny), ENABLED – zwraca TRUE jeśli element jest dostępny, FALSE – gdy jest niedostępny, FILL_PATTERN – wzór wypełniający element, FIXED_LENGTH – zwraca napis TRUE jeżeli następuje jeśli element ma zdefiniowaną stałą wielkość, FALSE – jeśli nie jest sprawdzana ilość znaków z maksymalnym rozmiarem pola, FONT_NAME – nazwa czcionki, FONT_SIZE – rozmiar czcionki, FONT_SPACING – szerokość czcionki określona jako odległość pomiędzy znakami, FONT_STYLE – styl czcionki, FONT_WEIGHT – szerokość czcionki, FOREGROUND_COLOR – kolor pierwszego planu, FORMAT_MASK – zwrca maskę formatu zdefiniowną dla elementu tekstowego, HEIGHT – zwraca wysokość czcionki, HINT_TEXT – zwraca tekst podpowiedzi wyświetlany w linii statusu, ICON_NAME – zwraca nazwę pliku ikony, 37 Projektowanie i implementacja systemów informatycznych ICONIC_BUTTON – zwraca TRUE gdy przycisk posiada ikonę, FALSE – jeśli przycisk nie zawiera ikony, IMAGE_DEPTH – zwraca ilość (głębię) kolorów dla elementu typu obraz, IMAGE_FORMAT – zwraca format elementu typu obraz, INSERT_ALLOWED – zwraca TRUE jeśli dozwolone wstawianie nowych wartości i modyfikacja istniejących, ITEM_CANVAS – zwraca nazwę kanwy, z którą jest skojarzony element, ITEM_IS_VALID – określa czy element jest poprawny (TRUE lub FALSE), ITEM_NAME – zwraca nazwę elementu, ITEM_TAB_PAGE – zwraca nazwę zakłdaki (karty), z którą jest skojarzony dany element, ITEM_TYPE – zwraca typ elementu (BUTTON – przycisk, CHART ITEM – wykres, CHECKBOX – pole wyboru, DISPLAY ITEM – element wyświetlania, IMAGE – obraz, LIST – lista, OLE OBJECT – kontrolka OCX lub kontener OLE, RADIO GROUP – grupa przycisków radiowych, TEXT ITEM – element tekstowy, VBX CONTROL – kotrolka VBX), JUSTIFICATION – wyrównanie tekstu elementu (START, END, LEFT, CENTER, RIGHT), KEEP_POSITION – zwraca napis TRUE jeśli zapamiętywana jest pozycja kursora w polu (przy ponownym do niego wejściu kursor ustawia się w poprzedniej pozycji), FALSE – gdy pozycja nie jest zapamiętywana, LABEL – zwraca napis reprezentujący etykiętę pola, LIST – zwraca napis TRUE jeżeli pole jest skojarzone z listą wartości (LOV), FALSE – jeśli lista wartości (LOV) nie jest przypisana do pola, LOCK_RECORD_ON_CHANGE – zwraca TRUE gdy następuje lokowanie rekordu po zmianie wartości w polu, FALSE – jeśli zmiana wartości w polu nie pociąga za sobą lokowania rekordu, LOV_NAME – zwraca nazwę listy wartości (LOV) skojarzonej z elementem, LOV_X_POS – zwraca współrzędną x listy wartości (LOV), LOV_Y_POS – zwraca współrzędną y listy wartości (LOV), MAX_LENGTH – zwraca maksymalny rozmiar pola, MERGE_CURRENT_ROW_VA – określa łączenie (a nie zastępowanie) atrybutu wizualnego bieżącego rekordu z atrybutem wizualnym przypisanym do danego elementu, 38 Projektowanie i implementacja systemów informatycznych MERGE_TOOLTIP_ATTRIBUTE – określa łączenie (a nie zastępowanie) atrybutu wizualnego elementu z atrybutem wizualnym przypisanym do podpowiedzi, MERGE_VISUAL_ATTRIBUTE – określa łączenie (a nie zastępowanie) wyspecyfikowanego atrybutu z bieżącym atrybutem wizualnym obiektu, MOUSE_NAVIGATE – zwraca TRUE jeśli nawigacja za pomocą myszki przenosi focus do danego elementu, FALSE – jeżeli nie przenosi, MULTI_LINE – zwraca napis TRUE jeśli element umożliwia wprowadzanie napisów wieloliniowych, FALSE – element przechwuje pojedynczą linię, NAVIGABLE – zwraca TRUE jeśli element jest nawigowalny, FALSE – gdy element nie jest nawigowalny, NEXTITEM – zwraca nazwę następnego elementu w Nawigatorze Obiektów, NEXT_NAVIGATION_ITEM – zwrca nazwę następnego elementu w nawigacji, POPUPMENU_CONTENT_ITEM – zwraca ustawienia menu kontekstowego dla obiektu OLE, PREVIOUSITEM – zwraca nazwę poprzedniego elementu w Nawigatorze Obiektów, PREVIOUS_NAVIGATION_ITEM – zwraca nazwę poprzedniego elementu w nawigacji, PRIMARY_KEY – zwraca napis TRUE jeśli element wchodzi w skłąd klucza głównego, FALSE – jeśli element nie jest kluczem głównym, PROMPT_ALIGNMENT_OFFSET – zwrca odległość pomiędzy elementem i jego opisem, PROMPT_BACKGROUND_COLOR – kolor tła opisu pola, PROMPT_DISPLAY_STYLE – styl wyświetlania opisu pola (FIRST_RECORD, HIDDEN, ALL_RECORDS), PROMPT_EDGE – zwraca krawęź, przy której jest umieszczany opis pola (START, END, TOP, BOTTOM), PROMPT_EDGE_ALIGNMENT – zwraca wyrównanie opisu pola (START, END, CENTER), PROMPT_EDGE_OFFSET – zwraca odległość pomiędzy opisem i polem, PROMPT_FILL_PATTERN – wzór wypełniający opis pola, PROMPT_FONT_NAME – nazwa czcionki dla opisu pola, PROMPT_FONT_SIZE – wielkość czcionki dla opisu pola, PROMPT_FONT_SPACING – szerokość czcionki opisu pola wyrażona jako odległóść pomiędzy znakami, PROMPT_FONT_STYLE – styl czcionki opisu pola, 39 Projektowanie i implementacja systemów informatycznych PROMPT_FONT_WEIGHT – szerokość czionki dla opisu pola, PROMPT_FOREGROUND_COLOR – kolor pierwszego planu dla opisu pola, PROMPT_TEXT – tekst opisu pola, PROMPT_TEXT_ALIGNMENT – zwraca sposób wyrównania opisu pola (START, LEFT, RIGHT, CENTER, END), PROMPT_VISUAL_ATTRIBUTE – zwraca nazwę atrybutu wizualnego opisu pola, PROMPT_WHITE_ON_BLACK – określa czy opis pola jest wyświetlany w sposób monochromatyczny (białe napisy na czarnym tle), QUERYABLE – zwrca napis TRUE jeśli element może być uwzględniany w kryteriach zapytania, FALSE – gdy element nie jest uwzględniany w kryteriach wprowadzanego zapytania, QUERY_LENGTH – zwraca ilość znaków, które może wprowadzić operator w trybie wprowadzania zapytania, QUERY_ONLY – zwraca napis TRUE jeżeli pole może być używane tylko w zapytanie, FALSE – gdy pole może podlegać też innym operacjom, RANGE_HIGH – zwraca największą możliwą wartość zdefiniowaną dla pola, RANGE_LOW – zwraca najmniejszą możliwą wartość zdefiniowaną dla pola, REQUIRED – zwraca napis TRUE jeśli pole jest obowiązkowe, FALSE – gdy pole nie jest obowiązkowe, SCROLLBAR – określa dostępność paska przewijania (TRUE lub FALSE), SHOW_FAST_FORWARD_BUTTON – określa dostępność przycisku przewijania do przodu dla elementu muzycznego, SHOW_PLAY_BUTTON – określa dostępność przycisku do odtwarzania dla elementu muzycznego, SHOW_RECORD_BUTTON – określa dostępność przycisku do nagrywania dla elementu muzycznego, SHOW_REWIND_BUTTON – określa dostępność przycisku przewijania dla elementu muzycznego, SHOW_SLIDER – określa dostępność paska postępu dla elementu muzycznego, SHOW_TIME_INDICATOR – określa dostępność wskaźnika czasu dla elementu muzycznego, SHOW_VOLUME_CONTROL – określa dostępność regulacji głośności dla elementu muzycznego. Dozwolone wartości to: PROPERTY_TRUE i PROPERTY_FALSE, 40 Projektowanie i implementacja systemów informatycznych SHOW_PALETTE – zwraca napis TRUE jeśli możliwa jest manipulacja kolorów dla elementu obrazowgo, TOOLTIP_BACKGROUND_COLOR – kolr tła dla podpowiedzi w dymku, TOOLTIP_FILL_PATTERN – wzór wypełniający dla podpowiedzi w dymku, TOOLTIP_FONT_NAME – nazwa czcionku dla podpowiedzi w dymku, TOOLTIP_FONT_SIZE – rozmiar czcionki dla podpowiedzi w dymku, TOOLTIP_FONT_SPACING – szerokość czcionki podpowiedzi w dymku określona jako odstęp pomiędzy znakami, TOOLTIP_FONT_STYLE – styl czcionki dla podpowiedzi w dymku, TOOLTIP_FONT_WEIGHT – szerokość czcionki dla podpowiedzi w dymku, TOOLTIP_FOREGROUND_COLOR – kolor pierwszoplanowy dla podpowiedzi w dymku, TOOLTIP_WHITE_ON_BLACK – określa czy podpowiedź w dymku jest wyświetlana w sposób monochromatyczny (biały napis na czarnym tle), TOOLTIP_TEXT – zwrca tekst napisu umieszczany w dymku podpowiedzi, UPDATE_ALLOWED – zwraca napis TRUE jeśli element zzwala na modyfikację wartości, FALSE – gdy modyfikacja nie jest dozwolona, UPDATE_COLUMN – zwraca napis TRUE jeżeli element ma być traktowany jako zmodyfikowany, UPDATE_NULL – zwrca napis TRUE jeśli wartość elementu może być zmodyfikowana tylko na wartośc pustą (NULL), FALSE – jeśli dowolna modyfikacja jest dopuszczalna, UPDATE_PERMISSION – określa dostępność modyfikacji pola (TRUE lub FALSE), VALIDATE_FROM_LIST – zwraca napis TRUE jeżeli element jest walidowany za pomocą listy wartości (LOV), FALSE – gdy element nie podlega walidacji za pomocą listy wartości, VISIBLE – zwraca napis TRUE jeśli element jest widoczny, FALSE – element niewidoczny, VISUAL_ATTRIBUTE – zwraca nazwę atrybutu wizualnego skojarzonego z polem, WHITE_ON_BLACK - określa czy pole wyświetlane jest w sposób monochromatyczny (biały napis na czarnym tle), WIDTH – szerokość pola, 41 Projektowanie i implementacja systemów informatycznych WINDOW_HANDLE – zwraca nazwę uchwytu do obiektu. Wartość 0 oznacza, że środowiskiem uruchomieniowym nie jest system Microsoft Windows, WRAP_STYLE – okresla styl łamania tekstu w polu (WORD – łamanie z uwzględnieniem wyrazów, NONE – brak łamania), X_POS – zwraca liczbę określającą współrzędną poziomą elementu, Y_POS – zwraca liczbę określającą współrzędną poziomą elementu, • SET_LOV_PROPERTY – procedura pozwalająca na ustawienie wybranej własności dla listy wartości (LOV). Składnia: - SET_LOV_PROPERTY (lov_id LOV, property NUMBER, value NUMBER); - SET_LOV_PROPERTY (lov_name VARCHAR2, property NUMBER, value NUMBER); - SET_LOV_PROPERTY (lov_id LOV, property NUMBER, x NUMBER, y NUMBER); - SET_LOV_PROPERTY (lov_name VARCHAR2, property NUMBER, x NUMBER, y NUMBER); Parametry: - lov_id – specyfikuje unikalny identyfikator listy wartości LOV (można go odczytać za pomocą funkcji FIND_LOV), - lov_name – nazwa listy wartości (LOV). - property – jedna z dostępnych własności: AUTO_REFRESH – specyfikuje automatyczne odświeżanie listy wartości przy każdym wywołaniu, GROUP_NAME – określa powiązanej z listą wartości grupy rekordów, LOV_SIZE – określa szerokość i wysokość listy wartości, POSITION – pozycja listy wartości, TITLE – tytuł listy wartości, 42 Projektowanie i implementacja systemów informatycznych - value – wartość dla ustawianej własności. Może być to nazwa grupy rekordów lub jedna z dostępnych wartości własności: PROPERTY_TRUE – ustawienie wartości na true, PROPERTY_FALSE – ustawienie wartości na false, - x – współrzędzna pozioma lub szerokość listy wartości, - y – współrzędna pionowa lub wysokość listy wartości. • GET_LOV_PROPERTY – funkcja zwracająca wartość wybranej własności dla podanej listy wartości (LOV). Składnia: - FUNCTION GET_LOV_PROPERTY (lov_id, property LOV); - FUNCTION GET_LOV_PROPERTY (lov_name VARCHAR2, property NUMBER); Parametry: - lov_id – specyfikuje unikalny identyfikator listy wartości LOV (można go odczytać za pomocą funkcji FIND_LOV), - lov_name – nazwa listy wartości (LOV). - property – jedna z dostępnych własności: AUTO_REFRESH – określa automatyczne odświeżanie danych listy przy każdym jej wyświetleniu (TRUE lub FALSE), GROUP_NAME – zwraca nazwę grupy rekordów powiązanej z daną listą wartości (LOV), HEIGHT – wysokość listy wartości (LOV), WIDTH – zwraca szerokość listy wartości, X_POS – zwraca współrzędną x lewego górnego rogu listy wartości (LOV), Y_POS – zwraca współrzędną y lewego górnego rogu listy wartości (LOV), • SHOW_LOV – funkcja wyświetla wskazaną listę wartości (LOV) i zwraca napis TRUE jeśli użytkownik wybrał jedną z wartości, FALSE – gdy nie została wybrana żadna wartość. Składnia: - SHOW_LOV (lov_id LOV); - SHOW_LOV (lov_id LOV, x NUMBER, y NUMBER); - SHOW_LOV (lov_name VARCHAR2); 43 Projektowanie i implementacja systemów informatycznych - SHOW_LOV (lov_name VARCHAR2, x NUMBER, y NUMBER); Parametry: - lov_id – specyfikuje unikalny identyfikator listy wartości (można go odczytać za pomocą funkcji FIND_LOV), - lov_name – nazwa listy wartości. - x – współrzędna x listy wartości, - y – współrzędna y listy wartości. • SET_ALERT_PROPERTY – procedura pozwalająca na ustawienie wybranej własności dla alertu. Składnia: - SET_ALERT_PROPERTY (alert_id ALERT, property NUMBER, message VARCHAR2); - SET_ALERT_PROPERTY (alert_name VARCHAR2, property NUMBER, message VARCHAR2); Parametry: - alert_id – specyfikuje unikalny identyfikator alertu (można go odczytać za pomocą funkcji FIND_ALERT), - alert_name – nazwa alertu, - property – jedna z dostępnych własności: ALERT_MESSAGE_TEXT – tekst komunikatu wyświetlanego w alercie, TITLE – tytuł okienka z alertem, - message – tekst danej własności. • SHOW_ALERT – funkcja wyświetla wskazany alert i zwraca wartość numeryczna określającą naciśnięty przycisk (ALERT_BUTTON1, ALERT_BUTTON2, ALERT_BUTTON3). Składnia: - SHOW_ALERT (alert_id Alert); - SHOW_ALERT (alert_name VARCHAR2); Parametry: - alert_id – specyfikuje unikalny identyfikator alertu (można go odczytać za pomocą funkcji FIND_ALERT), - alert_name – nazwa alertu. 44 Projektowanie i implementacja systemów informatycznych Ćwiczenie 4 1. Utwórz nowy formularz (File->New->Form). Dodaj do niego za pomocą kreatora (Tools->Data Block Wizard) blok oparty na tabeli Samochody. Zapewnij obsługę kolumn ID, ROK, KOLOR, OPIS, MODEL_ID, TYP i wyświetlanie 15 wierszy zawierających kolumny ROK, KOLOR, OPIS. Dodaj pasek przewijania. Uzupełnij stosownie podpowiedzi dla wyświetlanych pól. Ustaw właściwość ramki otaczającej blok SAMOCHODY tak aby dozwolone były ręczne modyfikacje układu (własność Update Layout=Manually). 2. Zapewnij aby było wyświetlane pojedyncze (własność Number of Items Displayed=1) wielowierszowe (własność Multi-Line=Yes) pole OPIS. 3. Dla elementu KOLOR zmień typ elementu (własność Item Type) na listę (wartość List Item) i ustaw jej styl (własność List Style) jako Poplist. Wpisz elementy dostępne na liście (własność List Elements): Ustaw wartość początkową (własność Initial Value) pola KOLOR na kolor Biały. 4. Dla pola Rok ustaw najmniejszą dozwoloną wartość (własność Lowest Allowed Value) na rok 1950, zaś największą dozwoloną wartość (Highest Allowed Value) na 2006. 5. Zmień nazwę okna (własność Name) na WINDOW_SAMOCHODY i ustaw tytuł okna (własność Title) na Samochody. 45 Projektowanie i implementacja systemów informatycznych 6. Dodaj do bloku SAMOCHODY niebazodanowe pole (własność Database Item=No) o nazwie MARKA. Zmień jego typ (własność Item Type) na List Item i ustaw styl listy (List Style) jako Combo Box. Dopisz wartości dostępne na liście (własność List Elements): Ustaw wartość początkową (własność Initial Value) pola MARKA na TOY. 7. Dodaj na poziomie forumlarza wyzwalacz WHEN-NEW-FORMINSTANCE, który zapewni dynamiczne wypełnienie listy MARKA wartościami dostępnych marek samochodów (tabela MARKI), zmaksymalizuje okno MDI i okno formularza oraz automatycznie wczyta dane. Wykorzystaj kod: -- Wypełnij pole marki declare rec_id RecordGroup; temp number; begin if not Id_Null(rec_id) then -- Grupa istnieje - trzeba ją usunąć delete_group(rec_id); end if; rec_id:=create_group_from_query('RG_MARKI', 'select nazwa, kod from marki order by nazwa'); temp := Populate_group(rec_id); populate_list('SAMOCHODY.MARKA', rec_id); end; 46 Projektowanie i implementacja systemów informatycznych -- Zmaksymalizuj okno MDI set_window_property(FORMS_MDI_WINDOW, WINDOW_STATE,MAXIMIZE); -- Zmaksymalizuj okno set_window_property('WINDOW_SAMOCHODY', WINDOW_STATE,MAXIMIZE); -- Wykonanie zapytania po wywołaniu formularza go_block('SAMOCHODY'); execute_query; 8. Dodaj do bloku SAMOCHODY pole tekstowe (własność Item Type=Text Item) o nazwie MODEL. Zapewnij aby było ono wymagalne (własność Required=Yes) i umożliwiało przechowywanie napisów (własność Data Type=Char) 30 znakowych (własność Maximum Length=30). 9. Dodaj do bloku SAMOCHODY przycisk (własność Item Type=Push Button) o nazwie BTN_MODEL i ustaw dla niego własność Mouse Navigate na No. 10.Dodaj listę wartości (LOV) o nazwie LOV_MODELE. Do jej utworzenia wykorzystaj kreator list wartości. Posłuż się zapytaniem: select nazwa, id from modele where marka_kod=:samochody.marka order by nazwa 47 Projektowanie i implementacja systemów informatycznych Dodaj do LOV obydwie kolumny z grupy rekordów (NAZWA, ID): 48 Projektowanie i implementacja systemów informatycznych Ustaw szerokość kolumny ID na 0 i wartość zwracaną jako SAMOCHODY.MODEL_ID. Dla kolumny NAZWA ustaw element zwracany na SAMOCHODY.MODEL: Ustaw tytuł okna listy wartości LOV na Modele: Powiąż tworzoną listę wartości z polem SAMOCHODY.MODEL: 49 Projektowanie i implementacja systemów informatycznych Ustaw dla pola SAMOCHODY.MODEL własność Validate from List na No. 11.Dla przycisku BTN_MODEL dodaj kod zapewniający wyświetlenie listy wartości skojarzonej z polem SAMOCHODY.MODEL: -- przejdź do elementu model i wywołaj skojarzoną -- z nim listę wartości go_item('SAMOCHODY.MODEL'); do_key('LIST_VALUES'); 12.Dodaj do bloku SAMOCHODY pole tekstowe (własność Item Type=Text Item) o nazwie NADWOZIE. Zapewnij aby było ono wymagalne (własność Required=Yes) i umożliwiało przechowywanie napisów (własność Data Type=Char) 10 znakowych (własność Maximum Length=10). 13.Dodaj do bloku SAMOCHODY przycisk (własność Item Type=Push Button) o nazwie BTN_TYP i ustaw dla niego własność Mouse Navigate na No. 14.Dodaj do bloku SAMOCHODY pole wyświetlania (własność Item Type=Display Item) o nazwie DRZWI. Zapewnij aby umożliwiało ono 50 Projektowanie i implementacja systemów informatycznych przechowywanie liczb (własność Data Type=Number). Uporządkuj elementy w Nawigatorze Obiektów według kolejności przedstawionej poniżej: Zapewnij wygląd formularza zbliżony do zamieszczonego poniżej: 15.Dodaj listę wartości (LOV) o nazwie LOV_TYP. Do jej utworzenia wykorzystaj kreator list wartości. Posłuż się zapytaniem: select nazwa, kod, ilosc_drzwi from typy_nadwozi order by nazwa 51 Projektowanie i implementacja systemów informatycznych Ustaw odpowiednio zwracane elementy: SAMOCHODY.NADWOZIE NAZWA, SAMOCHODY.TYP – KOD, SAMOCHODY.DRZWI – ILOSC_DRZWI. Zmień stosownie szerokość wyświetlania kolumn (np. dla KOD=0). Tytuł okna LOV ustaw na Typy nadwozi. Powiąż listę wartości z polem SAMOCHODY.NADWOZIE. Ustaw dla pola SAMOCHODY.NADWOZIE własność Validate from List na No. 16.Dla przycisku BTN_TYP dodaj kod zapewniający wyświetlenie listy wartości skojarzonej z polem SAMOCHODY.NADWOZIE: -- przejdź do elementu nadwozie i wywołaj -- skojarzoną z nim listę wartości go_item('SAMOCHODY.NADWOZIE'); do_key('LIST_VALUES'); 17.Dla bloku SAMOCHODY zdefiniuj wyzwalacz POST-QUERY obstawiający pole MARKI, MODEL, NADWOZIE, DRZWI: -- pobierz nazwę modelu i marki select mk.kod, md.nazwa into :samochody.marka, :samochody.model from marki mk, modele md where mk.kod=md.marka_kod and md.id=:samochody.model_id; -- pobierz typ nadwozia i ilość drzwi select nazwa, ilosc_drzwi into :samochody.nadwozie, :samochody.drzwi from typy_nadwozi where kod=:samochody.typ; 18.Zapewnij aby zmiana marki samochodu powodowała wyświetlenie listy wartości z modelami aktualnie wybranej marki. Zdefiniuj na poziomie elementu SAMOCHODY.MARKI wyzwalacz WHEN-LISTCHANGED: -- po zmianie marki pokaż lov z wyborem -- modeli danej marki GO_ITEM('SAMOCHODY.MODEL'); DO_KEY('LIST_VALUES'); 19.Zdefiniuj parametr o nazwie P_MODEL_ID typu NUMBER(30). 20.Dla bloku SAMOCHODY ustaw własność WHERE Clause na: 52 Projektowanie i implementacja systemów informatycznych MODEL_ID=NVL(:PARAMETER.P_MODEL_ID, MODEL_ID) 21.Zdefiniuj atrybut wizualny o nazwie AKTUALNY_REKORD. Ustaw dla niego kolor tła na cyan. Zapewnij aby bieżący rekord w bloku SAMOCHODY wykorzystywał atrybut AKTUALNY_REKORD. 22. Uruchom i przetestuj formularz. 53 Projektowanie i implementacja systemów informatycznych Aplikacje wieloformularzowe Oracle Forms Builder w pełni wspomaga tworzenie aplikacji wieloformularzowych. Istnieją metody umożliwiające wywoływanie wskazanego formularza zarówno z modułu menu jak i z modułu innego formularza. Sposoby wymiany danych pomiędzy formularzami: • lista parametrów – w formularzu wywołującym należy utworzyć listę parametrów, dodać do niej parametr o określonej nazwie i zdefiniowanej wartości, a następnie przekazać listę w wywołaniu funkcji uruchamiającej kolejny formularz. W formularzu wywoływanym musi istnieć parametr o zadanej nazwie (w Nawigatorze Obiektów gałąź Parameters). Istnieje możliwość przekazywania parametrów typu CHAR, DATE, NUMBER. • zmienne globalne – umożliwiają swobodną komunikację pomiędzy formularzami. Definiowanie zmiennej globalnej odbywa się za pośrednictwem instrukcji przypisania lub wbudowanej procedury DEFAULT_VALUE (przypisuje ona do zmiennej, której nazwa przekazana jest drugim parametrem wartość tekstową przekazaną w pierwszym parametrze, gdy zmienna nie jest jeszcze obstawiona, np. DEFAULT_VALUE ('Seat','GLOBAL.P_MARKA') ). W formularzu wywoływanym aby odwołać się do zmiennej globalnej wystarczy podać nazwę żądanej zmiennej poprzedzoną prefiksem :GLOBAL (np. :GLOBAL.P_MARKA). Odwołanie do zmiennej, która nie jest zdefiniowana powoduje błąd. Widzialność zmiennych globalnych dotyczy sesji (połączenia) użytkownika z bazą. Przydatne wbudowane programy: • CALL_FORM – procedura umożliwiająca wywołanie wskazanego formularza z podanymi parametrami. Składnia: - PROCEDURE CALL_FORM (formmodule_name VARCHAR2); - PROCEDURE CALL_FORM (formmodule_name VARCHAR2, display NUMBER); - PROCEDURE CALL_FORM (formmodule_name VARCHAR2, display NUMBER, switch_menu NUMBER); - PROCEDURE CALL_FORM (formmodule_name VARCHAR2, display NUMBER, 54 Projektowanie i implementacja systemów informatycznych switch_menu NUMBER, query_mode NUMBER); - PROCEDURE CALL_FORM (formmodule_name VARCHAR2, display NUMBER, switch_menu NUMBER, query_mode NUMBER, data_mode NUMBER); - PROCEDURE CALL_FORM (formmodule_name VARCHAR2, display NUMBER, switch_menu NUMBER, query_mode NUMBER, paramlist_id PARAMLIST); - PROCEDURE CALL_FORM (formmodule_name VARCHAR2, display NUMBER, switch_menu NUMBER, query_mode NUMBER, paramlist_name VARCHAR2); - PROCEDURE CALL_FORM (formmodule_name VARCHAR2, display NUMBER, switch_menu NUMBER, query_mode NUMBER, data_mode NUMBER, paramlist_id PARAMLIST); - PROCEDURE CALL_FORM (formmodule_name VARCHAR2, display NUMBER, switch_menu NUMBER, query_mode NUMBER, data_mode NUMBER, paramlist_name VARCHAR2); Parametry: - formmodule_name – napis reprezentujący nazwę wywoływanego formularza, - display – określa zachowanie formularza wywołującego. Dozwolone wartości to: HIDE – wartość domyślna, formularz wywołujący zostanie ukryty przed pokazaniem formularza wywoływanego, NO_HIDE – formularz wywołujący nie zostanie ukryty przy wywołaniu z niego innego formularza, 55 Projektowanie i implementacja systemów informatycznych - switch_menu – określa zachowanie menu w formularzu wywoływanym. Dozwolone wartości to: NO_REPLACE – wartość domyślna, menu w formularzu wywoływanym pozostanie takie jak w formularzu wywołującym, DO_REPLACE – menu w formularzu wywoływanym będzie taki jak zdefiniowane w trakcie jego projektowania, - query_mode – określa tryb pracy wywoływanego formularza. Dozwolone wartości to: NO_QUERY_ONLY – wartość domyślna, wywoływany formularz będzie pracował w normalnym trybie, możliwe będzie w nim zarówno wykonywanie zapytań jak i modyfikacji, QUERY_ONLY – w wywoływanym formularzu możliwe będzie tylko odczytywanie danych z bazy, nie będą możliwe modyfikacje, - data_mode – określa współdzielenie danych pomiędzy formularzami. Możliwe wartości to: NO_SHARE_LIBRARY_DATA – wartość domyślna, specyfikuje że dane nie będą współdzielenie pomiędzy formularzami mającymi dołączone takie same biblioteki, SHARE_LIBRARY_DATA – określa współdzielenie danych pomiędzy formularzami mającymi dołączone takie same biblioteki, - paramlist_id – identyfikator listy parametrów (typu PARAMLIST), - paramlist_name – napis reprezentujący nazwę listy parametrów. 56 Projektowanie i implementacja systemów informatycznych Biblioteki PL/SQL Oracle Forms Builder umożliwia tworzenie bibliotek PL/SQL, które mogą być następnie wykorzystywane (dołączane) w formularzach bądź raportach. Jeżeli jakiś fragment kodu jest często wykorzystywany i da się sparametryzować oraz umieścić w bibliotece PL/SQL, to jest to zalecane ze względu na możliwość współdzielenia kodu pomiędzy różnymi modułami oraz na łatwiejszą konserwację kodu. W celu utworzenia biblioteki PL/SQL z menu Forms Builder należy wybrać File->New->PL/SQL Library. Następnie w gałęzi Program Units (Moduły programu) można zdefiniować metody dostępne w bibliotece: Moduł źródłowy biblioteki PL/SQL zapisywany jest w plikach z rozszerzeniem pll (stanowi on jednocześnie postać źródłową i uruchomieniową). Moduł uruchomiony generowany jest do pliku plx, zaś postać źródłowa tekstowa – pld. W celu dołączenia utworzonej biblioteki do danego modułu (formularz, menu, raport) należy spowodować jej umieszczenie w gałęzi Attached Libraries (Dołączone Biblioteki): 57 Projektowanie i implementacja systemów informatycznych Ważne jest aby z dołączanej biblioteki usunąć ścieżkę, ponieważ uniezależni to środowisko uruchomieniowe aplikacji od specyficznego położenia bibliotek: Należy zapewnić aby stosowny plik uruchomieniowy biblioteki znajdował się na ścieżce przeszukiwań modułów (ustawienia zmiennej środowiskowej FORMS90_PATH). W module z dołączoną biblioteką można korzystać z metod zdefiniowanych w bibliotece tak jak odbywa się to w przypadku podprogramów wbudowanych. Ćwiczenie 5 1. Utwórz nową bibliotekę PL/SQL (File->New->PL/SQL Library). Zapisz bibliotekę w pliku auta_bibl.pll. W bibliotece utwórz procedurę o nazwie FORMULARZ, która będzie umożliwiała wywoływanie formularza o podanej nazwie i zadanej liście parametrów: PROCEDURE formularz(p_nazwa varchar2, p_pl_id paramlist) IS BEGIN -- wywołaj formularz o podanej nazwie z -- zadaną listą parametrów CALL_FORM(p_nazwa, no_hide, do_replace, no_query_only, p_pl_id); END; 2. Dołącz bibliotekę auta_bibl.pll do menu menu_main.mmb. Zapewnij usunięcie ścieżki do biblioteki. Dodaj do menu słowniki wywoływanie formularza marki_modele. Pomiędzy opcjami z menu Słowniki dodaj separator (ustaw włąsność Menu Item Type na Separator). Zapewnij wygląd menu zbliżony do poniższego: 58 Projektowanie i implementacja systemów informatycznych Do wywołania formularza marki_modele wykorzystaj procedurę formularz zdefiniowaną w bibliotece auta_bibl.pll: -- wywołaj formularz marki_modele, przekaż pustą -- listę parametrów FORMULARZ('marki_modele',NULL); 3. Wygeneruj plik mmx dla menu_main i wgraj go w stosowne miejsce znajdujące się na ścieżce FORM90_PATH, uruchom formularz main.fmb i sprawdź działanie nowej opcji menu. 4. Do menu menu_main.mmb dodaj wywołanie formularza samochody. Zapewnij następujący wygląd menu: 59 Projektowanie i implementacja systemów informatycznych Posłuż się kodem: -- wywołaj formularz samochody, -- przekaż pustą listę parametrów FORMULARZ('samochody',NULL); 5. Wygeneruj plik mmx dla menu_main i wgraj go w stosowne miejsce znajdujące się na ścieżce FORM90_PATH, uruchom formularz main.fmb i przetestuje działanie nowej opcji menu. 6. Otwórz formularz marki_modele.fmb i dodaj w bloku MODELE przycisk BTN_SAMOCHODY i umieść na nim etykietę „Samochody”: 7. Dołącz do formularza marki_modele.fmb bibliotekę auta_bibl.pll 8. Dodaj w formularzu procedurę WYWOLAJ_FORMULARZ (Program Units, Moduły programu), która będzie odpowiadać za wywołanie formularza samochody tak aby pokazywał on tylko samochody aktualnie wybranego modelu (UWAGA: formularz samochody.fmb ma dodany parametr p_model_id typu number oraz w bloku SAMOCHODY dodany warunek z klauzuli WHERE): 60 Projektowanie i implementacja systemów informatycznych PROCEDURE wywolaj_formularz(p_id_modelu number) IS pl_id ParamList; begin -- znajdź id listy pl_id := Get_Parameter_List('param'); -- jeśli znaleziono id to usuń listę if not Id_Null(pl_id) then Destroy_Parameter_List(pl_id); end if; ---if jeśli podano id modelu, to utwórz listę i dodaj do niej parametr z id aktualnego modelu p_id_modelu is not null then pl_id := Create_Parameter_List('param'); Add_Parameter(pl_id,'P_MODEL_ID', TEXT_PARAMETER, to_char(P_ID_MODELU)); end if; -- wywołaj formularz FORMULARZ('samochody', pl_id); end; 9. Dla przycisku BTN_SAMOCHODY dodaj wyzwalacz WHENBUTTON-PRESSED wywołujący procedurę wywolaj_formularz z przekazanym jako parametr identyfikatorem aktualnie wybranego modelu: wywolaj_formularz(:modele.id); 61 Projektowanie i implementacja systemów informatycznych Borland C++ Builder Borland C++ Builder jest typowym środowiskiem typu RAD (Rapid Application Development) umożliwiającym szybkie tworzenie programów z interfejsem graficznym Windows. Środowisko to może w szczególności posłużyć do budowania interfejsu graficznego do bazy danych. Obsługiwana jest w zasadzie większość dostępnych obecnie relacyjnych baz danych (Oracle, DB2, dBASE, Informix, MSSQL Server, Access i inne). Do bazy danych Oracle można łączyć się z poziomu aplikacji utworzonych w Borland C++ Builder na kilka sposobów – ODBC lub sterowniki natywne (m.in. ODAC, DOAC). W obu sytuacjach konieczna jest obecność w systemie zainstalowanych sterowników klienta Oracle (przede wszystkim obsługa protokołu SQL*Net). ODBC ODBC (Open DataBase Connectivity) stanowi otwarty interfejs dający możliwość komunikacji z dowolną bazą danych. Wymogiem jest zarejestrowanie w systemie stosownego sterownika. Niektóre z nich są dostarczane wraz z instalacją systemu operacyjnego bądź z instalacją serwera/klienta określonej bazy danych. W razie konieczności istnieje również możliwość samodzielnej instalacji bądź aktualizacji wybranych sterowników. W przypadku łączenia się z bazą danych Oracle należy zapewnić obecność w systemie stosownej wersji sterowników. Jeśli łączymy się z serwerem bazy danych w wersji 9i, to prawidłowe funkcjonowanie połączenia zapewni najbardziej aktualna wersja sterowników ODBC dostępna na stronie producenta http://www.oracle.com/technology/software/tech/windows/odbc/index.html. Często instalacja danej wersji sterowników wymaga konkretnej wersji instalatora produktów Oracle. Przykład instalacji sterowników ODBC Poniższy opis przedstawia instalację sterowników ODBC w wersji 9.0.1.2: ● Pobierz plik ora9012.exe, uruchom samorozpakowujące się archiwum i wypakuj pliki do wskazanej lokalizacji ● Uruchom zainstalowanego w systemie instalatora produktów Oracle (Universal Installer): 62 Projektowanie i implementacja systemów informatycznych ● Naciśnij przycisk Next, a następnie wskaż ścieżkę do pliku jar z instalacją sterowników (products.jar) i wybierz katalog, w którym mają zostać zainstalowane sterowniki: 63 Projektowanie i implementacja systemów informatycznych ● Naciśnięcie przycisku Next, a następnie Install zarejestruje w systemie wymagane sterowniki. Zakończ działanie instalatora wybierając Exit. Przykład konfiguracji ODBC i BDE Poniżej zamieszczony opis przedstawia przykładową konfigurację połączenia ODBC z bazą danych Oracle9i: ● Uruchomić program Home Selector i wskazać w nim katalog, gdzie zainstalowano wcześniej sterowniki ODBC. ● Uruchomić program BDE Administrator i wybrać opcję Object->ODBC Administrator. Pojawi się wówczas okno przedstawione poniżej: 64 Projektowanie i implementacja systemów informatycznych ● Należy wybrać przycisk Dodaj ... i wybrać odpowiedni sterownik do bazy danych Oracle: ● Następnie należy skonfigurować połączenie z bazą danych Oracle: Należy podać: - Data Source Name – nazwa źródła danych - Description – opis - TNS Service Name – wykorzystywane do połączenia alias do bazy (skonfigurowany w pliku tnsnames.ora) - User ID – identyfikator użytkownika 65 Projektowanie i implementacja systemów informatycznych Tak skonfigurowane połączenie można przetestować wybierając przycisk Test Connection: ● Po weryfikacji działania połączenia należy zatwierdzić dokonane zmiany. Zdefiniowane połączenie będzie widoczne już w ODBC Administrator: ● Po zatwierdzeniu zdefiniowane połączenie będzie dostępne również w BDE Administrator: 66 Projektowanie i implementacja systemów informatycznych Karta Data Access Komponenty Karty Data Access umożliwiają na dostęp z poziomu Borland C++ Builder 5 do danych zapisanych w systemach baz danych. Ikona Typ TDataSource Znaczenie Komponent zapewnia połączenie pomiędzy danych a kontrolką je przetwarzającą. zbiorem TTable Komponent umożliwia pobieranie danych z tabel baz danych Paradox, dBASE, Access, FoxPro, InterBase, Oracle, Sybase, MSSQL Server, Informix, DB2. TQuery Składnik umożliwiający wykonanie w bazie danych polecenia typu SELECT. TStoredProc Komponent umożliwia wywołanie kodu składowanego (procedury, funkcji) z bazy danych. Pozwala na przekazywanie parametrów wejściowych i odczytywanie wyniku. TDatabase Komponent definiujący zamierzamy pracować. TSession Komponent odpowiadający za połączenie (sesję) z bazą danych. TBatchMove Komponent umożliwia wykonywanie operacji na grupie wierszy lub na całej tabeli. TUpdateSQL Komponent umożliwia wykonanie INSERT, UPDATE, DELETE. bazę danych, z poleceń którą tupu Karta Data Controls Komponenty Karty Data Controls umożliwiają wizualizację danych z bazy danych. 67 Projektowanie i implementacja systemów informatycznych Ikona Typ TDBGrid Znaczenie Komponent umożliwia wizualizację danych w postaci tabelarycznej. TDBNaigator Komponent będący paskiem narzędziowym umożliwiającym wykonywanie różnych operacji na danych (przechodzenie pomiędzy wierszami, dodawanie, usuwanie, zatwierdzanie itd.). TDBText Składnik umożliwiający wyświetlenie wartości z bazy w postaci pola tekstowego. TDBEdit Komponent wyświetlenie i edytowanie wartości z bazy danych. TDBMemo Komponent umożliwiający wyświetlanie wieloliniowego tekstu z bazy danych. TDBImage Umożliwia wyświetlenie obrazu zapisanego w tabelach bazy danych. TDBListBox Element listowy umożliwiający prezentację i zmianę danych pochodzących z bazy danych. TDBComboBox Komponent typu combo (lista wyboru) umożliwiający wyświetlanie i pobieranie danych z bazy. TDBCheckBox Komponent typu opcja (check box) zaznaczony/niezaznaczony odpowiadający stosownym wartościom z bazy. TDBRadioGroup Grupa przycisków radiowych odpowiadająca wybranym wartościom z bazy danych. TDBLookupListBox Element typu “podgląd” do wartości z innego zbioru danych. Ma postać listy. i edycję TDBLookupComboBox Element typu lista wyboru. Umożliwia wyświetlenie wartości z innego źródła danych. TDBRichEdit Rozbudowany komponent edycyjny umożliwiający wyświetlanie i modyfikacje tekstu z bazy danych. TDBChart Komponent umożliwiający generowanie na formularzu wykresów na podstawie zbioru danych pobranego z bazy. 68 Projektowanie i implementacja systemów informatycznych Ćwiczenie 6 1. Skonfiguruj według instrukcji zamieszczonej powyżej połączenie ODBC o nazwie baza do serwera bazy danych zyskxp.math.uni.lodz.pl, SID=baza, port=1521. 2. Utwórz nową aplikację, która będzie umożliwiała wyświetlanie i modyfikację tabeli MARKI. W tym celu umieść na niej poniższe komponenty i ustaw odpowiednie własności: ● TTable (z zakładki Data Access) – DatabaseName=baza, TableName=MARKI, ● TDataSource (z zakładki Data Access) – DataSet=Table1, ● TDBGrid (z zakładki Data Controls) – DataSource=DataSource1, ● TDBNavigator (z zakładki Data Controls) – DataSource=DataSource1, ● TButton (z zakładki Standard) – Caption=&Logowanie, Default=true, ● TButton (z zakładki Standard) – Caption=&Wylogowanie, Enabled=false, Zapewnij aby aplikacja prezentowała się tak jak przedstawiono poniżej: Obsłuż dla przycisku Logowanie zdarzenie OnClick tak aby powodowało ono połączenie z bazą danych, dezaktywację przycisku Logowanie i aktywację przycisku Wylogowanie: void __fastcall TForm1::Button1Click(TObject *Sender) { // aktywacja danych Table1->Active=true; // wyłączenie i włączenie odpowiednich 69 Projektowanie i implementacja systemów informatycznych // przycisków Button2->Enabled=true; Button1->Enabled=false; } Analogicznie obsłuż zdarzenie OnClick dla przycisku Wylogowanie: void __fastcall TForm1::Button2Click(TObject *Sender) { // dezaktywacja danych Table1->Active=false; // wyłączenie i włączenie odpowiednich //przycisków Button1->Enabled=true; Button2->Enabled=false; } Uruchom i przetestuj aplikację. 3. Utwórz nową aplikację, która będzie umożliwiała wyświetlanie i modyfikację tabeli MARKI i powiązanej z nią tabeli MODELE. W tym celu umieść na niej poniższe komponenty i ustaw odpowiednie własności: ● TTable (z zakładki Data Access) – DatabaseName=baza, TableName=MARKI, ● TDataSource (z zakładki Data Access) – DataSet=Table1, ● TDBGrid (z zakładki Data Controls) – DataSource=DataSource1, ● TDBNavigator (z zakładki Data Controls) – DataSource=DataSource1, ● ● ● ● ● TTable (z zakładki Data Access) – DatabaseName=baza, TableName=MODELE, MasterSource=DataSource1, MasterFields=KOD, TDataSource (z zakładki Data Access) – DataSet=Table2, TDBGrid (z zakładki Data Controls) – DataSource=DataSource2, TDBNavigator (z zakładki Data Controls) – DataSource=DataSource2, ● ● ● TButton (z zakładki Standard) – Caption=&Logowanie, Default=true, TButton (z zakładki Standard) – Caption=&Wylogowanie, Enabled=false, Zapewnij aby aplikacja prezentowała się tak jak przedstawiono poniżej: 70 Projektowanie i implementacja systemów informatycznych Obsłuż dla przycisku Logowanie zdarzenie OnClick tak aby powodowało ono połączenie z bazą danych, dezaktywację przycisku Logowanie i aktywację przycisku Wylogowanie: void __fastcall TForm1::Button1Click(TObject *Sender) { // aktywacja danych Table1->Active=true; Table2->Active=true; // włączenie i wyłączenie odpowiednich przycisków Button2->Enabled=true; Button1->Enabled=false; } Analogicznie obsłuż zdarzenie OnClick dla przycisku Wylogowanie: void __fastcall TForm1::Button2Click(TObject *Sender) { // dezaktywacja danych Table2->Active=false; Table1->Active=false; // włączenie i wyłączenie odpowiednich przycisków Button1->Enabled=true; 71 Projektowanie i implementacja systemów informatycznych Button2->Enabled=false; } Uruchom i przetestuj aplikację. 4. Utwórz nową aplikację, która będzie umożliwiała wyświetlanie i modyfikację tabeli SAMOCHODY. W tym celu umieść na niej poniższe komponenty i ustaw odpowiednie własności: ● TTable (z zakładki Data Access) – DatabaseName=baza, TableName=SAMOCHODY, ● TDataSource (z zakładki Data Access) – DataSet=Table1, 5. Kliknij prawym klawiszem myszy na komponencie TTable umieszczonym na formularzu, a następnie wybierz opcję Fields Editor ... . W ramach nowego wyświetlonego okna wybierz opcję Add all fields. ● TDBNavigator (z zakładki Data Controls) – DataSource=DataSource1, ● TButton (z zakładki Standard) – Caption=&Logowanie, Default=true, ● TButton (z zakładki Standard) – Caption=&Wylogowanie, Enabled=false, Zapewnij aby aplikacja prezentowała się tak jak przedstawiono poniżej: Obsłuż dla przycisku Logowanie zdarzenie OnClick tak aby powodowało ono połączenie z bazą danych, dezaktywację przycisku Logowanie i aktywację przycisku Wylogowanie: void __fastcall TForm1::Button1Click(TObject *Sender) 72 Projektowanie i implementacja systemów informatycznych { // aktywacja danych Table1->Active=true; // wyłączenie i włączenie odpowiednich // przycisków Button2->Enabled=true; Button1->Enabled=false; } Analogicznie obsłuż zdarzenie OnClick dla przycisku Wylogowanie: void __fastcall TForm1::Button2Click(TObject *Sender) { // dezaktywacja danych Table1->Active=false; // wyłączenie i włączenie odpowiednich //przycisków Button1->Enabled=true; Button2->Enabled=false; } Uruchom i przetestuj aplikację. 7. Zainstaluj komponenty ODAC (Oracle Direct Access) z pliku odaccb5.exe. Powinno to spowodować dodanie w Borland C++ Builder nowej zakładki z komponentami – Oracle Access. 8. Utwórz nową aplikację, która będzie umożliwiała wyświetlanie i modyfikację tabeli SAMOCHODY. W tym celu umieść na niej poniższe komponenty i ustaw odpowiednie własności: • TConnectDialog (z zakładki Oracle Access), • TOraSession (z zakładki Oracle Access) – Server=baza, ConnectDialog=ConnectDialog1, Connected=false, • TOraTable (z zakładki Oracle Access) – Session=OraSession1, TableName=MARKI, • TOraDataSource (z zakładki Oracle Access) – DataSet=Table1, • TDBGrid (z zakładki Data Controls) – DataSource=OraDataSource1, • TDBNavigator (z zakładki Data Controls) – DataSource=OraDataSource1, • Zapisz w bazie danych funkcję postaci: create or replace function ile_modeli (p_marka in varchar2) return number is ret number:=0; begin select count(*) into ret 73 Projektowanie i implementacja systemów informatycznych from modele where marka_kod=p_marka; end; / return ret; • TOraStoredProc (z zakładki Oracle Access) – Session=OraSession1, StoredProcName=ILE_MODELI, • TButton (z zakładki Standard) – Caption=&Logowanie, Default=true, • TButton (z zakładki Standard) – Caption=&Wylogowanie, Enabled=false, • TButton (z zakładki Standard) – Caption=&Ile modeli, Enabled=false, Zapewnij aby aplikacja prezentowała się tak jak przedstawiono poniżej: Obsłuż dla przycisku Logowanie zdarzenie OnClick tak aby powodowało ono połączenie z bazą danych, dezaktywację przycisku Logowanie i aktywację przycisków Wylogowanie i Ile modeli. void __fastcall TForm1::Button1Click(TObject *Sender) { if (ConnectDialog1->Execute()) { 74 Projektowanie i implementacja systemów informatycznych OraSession1->Connected=true; OraTable1->Active=true; Button2->Enabled=true; Button1->Enabled=false; Button3->Enabled=true; } } Analogicznie obsłuż zdarzenie OnClick dla przycisku Wylogowanie: void __fastcall TForm1::Button2Click(TObject *Sender) { OraSession1->Connected=false; Button2->Enabled=false; Button1->Enabled=true; Button3->Enabled=false; } Zapewnij aby naciśnięcie przycisku OnClick dla Ile modeli uruchomiło składowaną w bazie danych funkcję ILE_MODELI i zwróciło wynik wyświetlając komunikat. Wykorzystaj kod: void __fastcall TForm1::Button3Click(TObject *Sender) { OraStoredProc1->PrepareSQL(); OraStoredProc1->ParamByName("P_MARKA")>AsString= OraTable1->FieldByName("KOD")->AsString; OraStoredProc1->ExecProc(); ShowMessage("Ilość modeli marki " + OraTable1->FieldByName("NAZWA")->AsString + " = " + OraStoredProc1->ParamByName("RESULT")->AsString); } Uruchom i przetestuj aplikację. 75 Projektowanie i implementacja systemów informatycznych Tematy na zaliczenie Zaliczenie składa się z trzech etapów. W pierwszym należy zaprojektować bazę danych i wykonać skrypty ją tworzące, w drugim – utworzyć podaną logikę biznesową (kod składowany) po stronie serwera bazy danych, w trzecim – wykonać zgodnie ze specyfikacją aplikację służącą do obsługi zaprojektowanej uprzednio bazy danych. Należy realizować po jednym wybranym punkcie z każdego z trzech podanych etapów. Po specyfikacji tematów w każdym z etapów zawarto dodatkowe uwagi i wskazówki dotyczące realizacji projektu. ETAP 1. 1. Zaprojektować bazę obsługującą wypożyczalnię samochodów. Baza powinna przechowywać następujące informacje: • Dane dostępnych samochodów (np. marka, model, rocznik, numer VIN, kolor, numer rejestracyjny, opis). • Dane osób wypożyczających (np. imię, nazwisko, data urodzenia, płeć, PESEL, adres, telefony). • Dane wypożyczonych samochodów (np. okres wypożyczenia, pobrana kwota). • Dane o uszkodzeniach samochodów powstałych w wyniku wypożyczenia (np. opis szkody, koszt naprawy). 2. Zaprojektować bazę obsługującą hurtownię. Baza powinna przechowywać następujące informacje: • Dane dostępnych towarów (np. kod towaru, opis, ilość, jednostka miary). • Dane klientów (np. odpowiednio dla osób prywatnych: imię, nazwisko, data urodzenia, płeć, PESEL, adres, telefon, procent rabatu; dla firm: nazwa, REGON, telefon, adres, rabat). • Dane sprzedanych towarów (np. informacje o ilości i rodzaju sprzedanych towarów, upusty, data sprzedaży, faktura). 3. Zaprojektować bazę obsługującą bibliotekę. Baza powinna przechowywać następujące informacje: • Dane dostępnych książek (np. numer ISBN, autor, tytuł, gatunek, wydawnictwo, ilość egzemplarzy, opis). • Dane osób wypożyczających (np. imię, nazwisko, data urodzenia, płeć, PESEL, adres, telefony). 76 Projektowanie i implementacja systemów informatycznych • Dane wypożyczonych książek (np. okres wypożyczenia, ewentualne uszkodzenia). UWAGA: Każda praca powinna zawierać: projekt w postaci modelu encji i skrypty tworzące bazę. Wszystkie tabele należy wypełnić przykładowymi danymi (plik z insertami do tabel również ma być dołączony do pracy). ETAP 2. 1. Zaimplementować w bazie danych kod składowany realizujący następujące czynności: • Wyzwalacz bazodanowy blokujący możliwość dopisania osoby lub zmiany jej danych jeśli zostanie podany błędny numer PESEL (należy zaimplementować algorytm sprawdzający poprawność numeru PESEL). • Procedurę umożliwiającą dopisanie nowego samochodu. • Funkcję sprawdzającą czy dany pojazd posiada uszkodzenia (zwracamy 1 jeśli posiada, 0 jeśli nie posiada). • Funkcję zwracającą dla danego samochodu ilość uszkodzeń spowodowanych w danym okresie czasu. 2. Zaimplementować w bazie danych kod składowany realizujący następujące czynności: • Wyzwalacz bazodanowy blokujący możliwość dopisania klienta będącego firmą lub zmiany jego danych jeśli zostanie podany błędny numer REGON (należy zaimplementować algorytm sprawdzający poprawność numeru REGON). • Procedurę umożliwiającą dopisanie nowego klienta. • Funkcję sprawdzającą czy dany towar jest obecnie dostępny (zwracamy 1 jeśli jest, 0 jeśli nie ma). • Funkcję zwracającą dla danego klienta łączną wartość zakupów w danym okresie czasu. 3. Zaimplementować w bazie danych kod składowany realizujący następujące czynności: • Wyzwalacz bazodanowy blokujący możliwość dopisania książki lub zmiany jej danych jeśli zostanie podany błędny numer ISBN (należy zaimplementować algorytm sprawdzający poprawność numeru ISBN). • Procedurę umożliwiającą dopisanie nowej książki. • Funkcję zwracającą ilość książek o podanym tytule. • Funkcję zwracającą dla danej książki ilość wypożyczeń w danym okresie czasu. UWAGA: Algorytmy obliczające sumy kontrolne dla PESEL, REGON, ISBN można znaleźć w sieci Internet (wystarczy wpisać np. 77 Projektowanie i implementacja systemów informatycznych w www.google.pl tekst postaci „suma kontrolna + pesel”, „suma kontrolna + regon”, „suma kontrolna + isbn”). Każda praca powinna zawierać skrypty tworzące kod składowany. ETAP 3. 1. Zbudować aplikację umożliwiającą pełną obsługę wypożyczalni samochodów. Program ma umożliwiać: • Dodawanie, edycję, wyświetlanie i usuwanie danych samochodów dostępnych w wypożyczalni. Usuwane danych samochodu jest dopuszczalne tylko wówczas, gdy nie był on ani razu wypożyczany. • Dodawanie, edycję, wyświetlanie i usuwanie danych klientów. Usuwanie danych klienta jest możliwe tylko wtedy, gdy nie wypożyczył on żadnego samochodu. • Rejestrację wypożyczenia samochodu. • Rejestrację zwrotu samochodu. • Dodawanie usuwanie, wyświetlanie i edycję danych o uszkodzeniach powstałych w wyniku wypożyczenia. 2. Zbudować aplikację umożliwiającą pełną obsługę hurtowni towarów. Program ma umożliwiać: • Dodawanie, edycję, wyświetlanie i usuwanie danych towarów dostępnych w hurtowni. Usuwane towaru jest możliwe tylko wtedy, gdy nie została sprzedana żadna jego sztuka. • Dodawanie, edycję, wyświetlanie i usuwanie danych klientów. Usuwanie danych klienta jest możliwe tylko wtedy, gdy nie dokonał on ani razu zakupów. • Rejestrację zakupu wraz z nabytymi przed danego klienta towarami. 3. Zbudować aplikację umożliwiającą pełną obsługę biblioteki. Program ma umożliwiać: • Dodawanie, edycję, wyświetlanie i usuwanie danych książek dostępnych w bibliotece. Usuwane książki jest możliwe tylko wówczas, gdy nie była ona wypożyczona. • Dodawanie, edycję, wyświetlanie i usuwanie danych klientów. Usuwanie danych klienta jest możliwe tylko wtedy, gdy nie wypożyczył on ani jednej książki. • Rejestrację wypożyczenia określonych pozycji książkowych przez daną osobę. • Rejestrację zwrotu wypożyczonej książki. UWAGA: Aplikacja może powstać przy użyciu dowolnych narzędzi programistycznych i języków programowania (PHP, Borland Delphi, Borland Builder, Oracle Forms Builder, Microsoft Visual Studio, C#, 78 Projektowanie i implementacja systemów informatycznych .NET, Java bądź inne). Powstałą aplikację powinna cechować prostota obsługi i implementacja wszystkich właściwości wymienionych powyżej. 79