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

Podobne dokumenty