Oracle Developer/2000 Form Builder
1. Wprowadzenie
Architektura oprogramowania narzędziowego Oracle Designer Developer C/C++ VB Delphi SQL PL/SQL SQL*Net RDBMS Oracle (c) 2000, Instytut Informatyki Politechniki Poznańskiej 3
Opis składników Oracle Developer Project Builder Form Builder Report Builder Graphics Builder Procedure Builder Query Builder Schema Builder środowisko projektowe środowisko uruchomieniowe generator wersji uruchomieniowej (c) 2000, Instytut Informatyki Politechniki Poznańskiej 4
Elementy interfejsu projektanta wspólne dla składników pakietu Oracle Developer (1) Nawigator obiektów Edytor układu Paleta właści- wości Edytor PL/SQL (c) 2000, Instytut Informatyki Politechniki Poznańskiej 5
Elementy interfejsu projektanta wspólne dla składników pakietu Oracle Developer (2) Nawigator obiektów (ang. Object Navigator) przedstawia obiekty składowe modułu w postaci hierarchicznej Paleta właściwości (ang. Property Palette) przedstawia właściwości danego obiektu można ją wyświetlić i edytować dla każdego obiektu Edytor układu (ang. Layout Editor) pozwala na modyfikację strony wizualnej aplikacji Edytor PL/SQL (ang. PL/SQL Editor) służy do edycji i kompilacji jednostek programu PL/SQL (c) 2000, Instytut Informatyki Politechniki Poznańskiej 6
Dostosowywanie sesji z narzędziami Oracle Developer (Preferencje) Ogólne Zapisz przed skonstruowaniem Skonstruuj przed uruchomieniem Dostęp Miejsce składowania źródeł modułów (plik, baza danych) Ograniczenie listy przy Plik/Otwórz Kreatory Wyłączanie okien powitalnych kreatorów Runtime Parametry pracy tworzonych aplikacji (optymalizacja przetwarzania, debuger) (c) 2000, Instytut Informatyki Politechniki Poznańskiej 7
Składowanie źródeł aplikacji tworzonych w Oracle Developer w bazie danych wymaga wcześniejszego utworzenia odpowiednich tabel zalecane gdy: wymagana jest kontrola dostępu do źródeł aplikacji nie ma miejsca w systemie plików aplikacje są współdzielone przez projektantów czas dostępu do modułów nie jest istotny w systemie plików zalecane gdy zalety składowania w bazie danych nie są istotne istotny jest czas dostępu do źródeł aplikacji (c) 2000, Instytut Informatyki Politechniki Poznańskiej 8
Zmienne środowiskowe Oracle Developer (runtime) FORMS60_PATH ścieżka przeszukiwania dla modułów Form Builder REPORTS60_PATH ścieżka przeszukiwania dla modułów Report Builder GRAPHICS60_PATH ścieżka przeszukiwania dla modułów Graphics Builder UI_ICON ścieżka przeszukiwania dla ikon (c) 2000, Instytut Informatyki Politechniki Poznańskiej 9
Schemat bazy danych wykorzystywany w ćwiczeniach K_POZYCJE K_POZYCJE K_ZAMOWIENIA K_ZAMOWIENIA K_PRACOWNICY K_PRACOWNICY K_KSIAZKI K_KSIAZKI K_KLIENCI K_KLIENCI K_ODDZIALY K_ODDZIALY K_STANY_W_MAGAZYNACH (c) 2000, Instytut Informatyki Politechniki Poznańskiej 10
Opis aplikacji rozwijanej w ramach ćwiczeń System dla firmy prowadzącej wysyłkową sprzedaż książek Ewidencja oddziałów firmy i ich pracowników Ewidencja książek Ewidencja klientów Ewidencja zamówień Ewidencja stanów magazynowych (c) 2000, Instytut Informatyki Politechniki Poznańskiej 11
Ćwiczenie Uruchom narzędzie Form Builder Upewnij się, że ustawione są następujące preferencje: Zapisywanie modułów tylko w systemie plików Konstruowanie modułu przed uruchomieniem Brak automatycznego zapisu przed skonstruowaniem Otwórz przykładowy formularz Obejrzyj jego strukturę w Nawigatorze obiektów Obejrzyj jego wygląd w Edytorze układu Podejrzyj Paletę właściwości dla kilku elementów Wywołaj Edytor PL/SQL dla jednostek programu Przejrzyj obiekty bazy danych (pamiętaj o dołączeniu się do bazy danych) Wyjdź z Form Builder (c) 2000, Instytut Informatyki Politechniki Poznańskiej 12
2. Uruchamianie i obsługa aplikacji utworzonych za pomocą narzędzia Form Builder
Środowisko uruchomieniowe (1) Menu Okno MDI Pasek narzędzi Okno Konsola (c) 2000, Instytut Informatyki Politechniki Poznańskiej 14
Środowisko uruchomieniowe (2) Uruchamianie aplikacji IFRUN60 nazwa_modułu [parametry] nazwa komendy zależy od systemu operacyjnego i wersji Form Builder (np..w 5.0 dla Windows - F50run32) Środowisko okienkowe MDI (multiple( multiple-document interface) dostępne i domyślne w MS Windows SDI (single-document interface) parametr USESDI Menu alternatywa dla skrótów klawiszowych domyślne można zmienić (c) 2000, Instytut Informatyki Politechniki Poznańskiej 15
Środowisko uruchomieniowe (3) Paski narzędzi (ang. toolbars) graficzne skróty do pozycji menu dostępne dla macierzystego okna MDI oraz pozostałych okien aplikacji Konsola linia komunikatów miejsce pojawiania się komunikatów systemowych i generowanych przez aplikację linia statusu kolejny numer rekordu w bloku tryb pracy formularza dostępność listy wartości dla bieżącego pola (c) 2000, Instytut Informatyki Politechniki Poznańskiej 16
Elementy formularza (1) Pole tekstowe Lista Grupa radiowa Pole wyboru (c) 2000, Instytut Informatyki Politechniki Poznańskiej 17
Elementy formularza (2) Stały tekst Stałe elementy graficzne Etykiety pól Pola tekstowe Listy Pola wyświetlania Pola wyboru Grupy radiowe Wykresy Obrazy Formanty ActiveX Kontenery OLE Przyciski Dźwięki Drzewa hierarchiczne (nowość w Form Builder 6.0) (c) 2000, Instytut Informatyki Politechniki Poznańskiej 18
Sposoby nawigacji w formularzu Menu / Pasek narzędzi menu przesuwanie kursora, zapisywanie i anulowanie zmian, wykonywanie zapytań, wstawianie i usuwanie rekordów, wywołanie pomocy Mysz przesuwanie kursora, wybór z menu i list wartości, obsługa pól wyboru i grup radiowych, przełączanie między oknami, obsługa okien komunikatów i pasków przewijania Przyciski funkcje zależne od aplikacji (np. obliczenia, wywołanie innych okien) Klawisze funkcyjne nawigacja, funkcje zależne od aplikacji podgląd funkcji klawiszy: Pomoc/Klawisze zmiana domyślnych: plik terminala (c) 2000, Instytut Informatyki Politechniki Poznańskiej 19
Tryby pracy formularza Tryb wprowadzania zapytań (Enter Query Mode) pozwala na: odczyt wszystkich rekordów odczyt rekordów spełniających kryteria selekcji wprowadzone do pól lub okienka Zapytanie/Klauzula WHERE odczyt liczby rekordów, które zwróci zapytanie nie pozwala na: wstawianie, usuwanie i modyfikację rekordów opuszczenie bieżącego bloku korzystanie z niektórych funkcji Tryb normalny (Normal Mode) pozwala na: odczyt wszystkich rekordów wstawianie, usuwanie i modyfikację rekordów zatwierdzanie i wycofywanie zmian nawigację między blokami nie pozwala na: specyfikację warunków selekcji rekordów (c) 2000, Instytut Informatyki Politechniki Poznańskiej 20
Wykonywanie zapytań w bieżącym bloku Bez kryteriów selekcji: Zapytanie/Wykonaj Przycisk Wykonaj zapytanie Z kryteriami selekcji 1) Przejście do trybu wprowadzania zapytań Zapytanie/Wprowadź Przycisk Wprowadź zapytanie 2) Wprowadzenie kryteriów selekcji 3) Wykonanie zapytania Zapytanie/Wykonaj Przycisk Wykonaj zapytanie (c) 2000, Instytut Informatyki Politechniki Poznańskiej 21
Wprowadzanie kryteriów selekcji Brak apostrofów we wzorcach pól znakowych i dat Znaki specjalne _ i % wywołują operator LIKE Operatory SQL należy poprzedzić znakiem # Skomplikowane warunki i klauzulę ORDER BY wprowadza się w okienku Zapytanie/ Klauzula WHERE (apostrofy wymagane) Dla dat obowiązuje domyślny format Przykłady wzorców: 110, Kowal - dokładne dopasowanie Kow% - operator LIKE #BETWEEN 10 AND 20 - operator BETWEEN :S - Warunek w Zapytanie/Klauzula WHERE (:S nazwa zmiennej) (c) 2000, Instytut Informatyki Politechniki Poznańskiej 22
Przykłady zaawansowanych warunków selekcji Enter Query Execute Query Enter Query (c) 2000, Instytut Informatyki Politechniki Poznańskiej 23
Wstawianie, modyfikacja i usuwanie rekordów Wstawianie 1) utworzenie pustego rekordu poprzez: przejście kursorem poniżej ostatniego rekordu menu Rekord/Wstaw przycisk Wstaw rekord na pasku narzędzi odpowiedni klawisz funkcyjny 2) wprowadzenie danych do pól rekordu Modyfikacja 1) przejście do szukanego rekordu (po wydaniu zapytania) 2) modyfikacja zawartości pól Usuwanie 1) przejście do szukanego rekordu (po wydaniu zapytania) 2) usunięcie bieżącego rekordu poprzez: menu Rekord/Usuń przycisk Usuń rekord na pasku narzędzi odpowiedni klawisz funkcyjny (c) 2000, Instytut Informatyki Politechniki Poznańskiej 24
Zatwierdzanie i wycofywanie zmian Akcja/Zapisz (lub przycisk na pasku narzędzi) Akcja/Wyczyść wszystko Zakończenie sesji Akcja/Zakończ (lub przycisk na pasku narzędzi) Odpowiedni klawisz funkcyjny Informacje o błędach SQL Pomoc/Pokaż błąd (dotyczy błędów oznaczonych jako Błąd ORACLE) (c) 2000, Instytut Informatyki Politechniki Poznańskiej 25
Ćwiczenie Uruchom formularz ODDZIALY Podejrzyj listę klawiszy funkcyjnych Wykonaj zapytanie w bloku Oddziały Obejrzyj dane o pracownikach poszczególnych oddziałów Wyszukaj pracowników oddziału A, którzy: są kobietami posiadają samochód służbowy mają w nazwisku literę o zarabiają ponad 1000 Wyświetl pracowników posortowanych wg nazwisk Dodaj po jednym pracowniku w każdym oddziale Zatwierdź zmiany Podnieś płacę jednemu z nowych pracowników i jednego usuń Zatwierdź zmiany Zmodyfikuj płacę któregoś z pracowników Wyjdź z formularza (c) 2000, Instytut Informatyki Politechniki Poznańskiej 26
3. Środowisko Form Builder
Możliwości aplikacji Form Builder Przeglądanie danych z bazy danych (zapytania SQL) Wstawianie, usuwanie i modyfikacja rekordów Prezentacja danych: tekstowych multimedialnych (dźwięki, obrazy i filmy) Praca z wieloma oknami w ramach tej samej transakcji w ramach różnych transakcji Dostęp do wykresów Graphics Builder Dostęp do aplikacji OLE2 Wysyłanie danych do Report Builder (c) 2000, Instytut Informatyki Politechniki Poznańskiej 28
Typy modułów Form Builder Formularze (ang. Forms).fmb,,.fmt. (źródło: postać binarna i tekstowa).fmx (postać wykonywalna) Menu (ang. Menus).mmb,,.mmt. (źródło: postać binarna i tekstowa).mmx (postać wykonywalna) Biblioteki PL/SQL (ang. PL/SQL Libraries).pll (żródło + postać wykonywalna).plx (postać wykonywalna).pld (źródło: postać tekstowa) Biblioteki obiektów (ang. Object Libraries).olb,,.olt. (źródło: postać binarna i tekstowa) (c) 2000, Instytut Informatyki Politechniki Poznańskiej 29
Tworzenie, kompilacja i uruchamianie formularzy Form Builder Form Compiler Forms Runtime Definicje Postać wykonywalna (c) 2000, Instytut Informatyki Politechniki Poznańskiej 30
Podstawowe struktury formularza Bloki (ang. Blocks) logicznie grupują elementy pochodzące z tej samej tabeli należące do tego samego cyklu nawigacji Elementy (ang. Elements) prezentują dane mogą akceptować wprowadzanie danych logicznie pogrupowane w bloki wizualnie rozmieszczone na kanwach Kanwy (ang. Canvases) powierzchnie, na których umieszczane są elementy aby mogły być wyświetlane (c) 2000, Instytut Informatyki Politechniki Poznańskiej 31
Typy bloków Bloki danych (ang. Data Blocks) powiązane ze źródłem danych tabelą lub perspektywą (najczęściej) procedurą składowaną, zapytaniem lub wyzwalaczem transakcyjnym (rzadziej) gdy bazują na tabeli, Form Builder automatycznie obsługuje zapytania i instrukcje DML oraz uwzględnia ograniczenia integralnościowe elementy bloku bazującego na tabeli mogą odpowiadać danym z innych tabel (dostęp programowy) Bloki kontrolne (ang. Control Blocks) nie mają powiązania z bazą danych logicznie grupują takie elementy jak np. przyciski (c) 2000, Instytut Informatyki Politechniki Poznańskiej 32
Powiązania między blokami Między blokami mogą istnieć zależności nadrzędny- podrzędny (ang. master-detail detail) Zależności takie w definicji formularza reprezentowane są jako tzw. Relacje (ang. Relations) Zeleżności te najczęściej odpowiadają powiązaniom Klucz główny -> > Klucz obcy w bazie danych Możliwe konfiguracje Master Master Master Detail Detail Detail Detail Detail Master Detail Master (c) 2000, Instytut Informatyki Politechniki Poznańskiej 33
4. Tworzenie prostych formularzy
Sposoby tworzenia formularza Przy pomocy kreatorów Kreator bloków danych (ang. Data Block Wizard) Kreator układu (ang. Layout Wizard) Ręcznie Bazując na szablonie (ang. template) szablon zawiera paski narzędzi, elementy graficzne, jednostki programu Tworzenie nowego formularza Wybór opcji z powitalnego okna kreatora Modyfikacja tworzonego przy wejściu pustego formularza Z poziomu menu głównego (Plik/Nowy) Z poziomu Nawigatora obiektów (c) 2000, Instytut Informatyki Politechniki Poznańskiej 35
Paleta właściwości formularza Nazwa Menu System współrzędnych rzeczywiste Piksel Centymetr Cal Punkt = 1/72 cala znakowe wg rozmiaru czcionki (c) 2000, Instytut Informatyki Politechniki Poznańskiej 36
Tworzenie bloków danych (za pomocą kreatora) Wybór typu bloku danych bazujący na tabeli lub perspektywie bazujący na procedurze Wybór tabeli/perspektywy/procedury źródłowej Wybór atrybutów, które mają być uwzględnione w bloku Możliwość włączenia kontroli spójności danych (w oparciu o ograniczenia integralnościowe) Możliwość przejścia do Kreatora układu (c) 2000, Instytut Informatyki Politechniki Poznańskiej 37
Kreator układu Wybór kanwy, na której mają znaleźć się elementy bloku Wybór elementów, które mają być wyświetlane Wybór stylu układu ramki bloku formularz (wskazany dla bloków pokazujących 1 rekord) tabela (dla bloków zawierających wiele rekordów) Wybór liczby rekordów wyświetlanych w bloku Modyfikacja układu Ponowne wywołanie Kreatora układu Edytor układu (Narzędzia/Edytor układu) Zmiana właściwości elementów (palety właściwości) (c) 2000, Instytut Informatyki Politechniki Poznańskiej 38
Opcje administracyjne Zapisywanie definicji modułu - Plik/Zapisz Kompilacja modułu - Plik/Administracja/Kompiluj plik Uruchamianie - Program/Uruchom (lub przycisk) Konwersja definicji modułu do postaci tekstowej - Plik/Administracja/Przekształć Utworzenie dokumentacji modułu - Plik/Administracja/Raport z listą obiektów (c) 2000, Instytut Informatyki Politechniki Poznańskiej 39
Tworzenie powiązań między blokami Strona nadrzędny-podrzędny w Kreatorze bloków danych opcja automatycznego połączenia bloków wybór bloku nadrzędnego i atrybutów połączeniowych Ręczne utworzenie relacji między blokami sekcja Relacje w Nawigatorze obiektów dla bloku, który ma być blokiem nadrzędnym Uwagi Strona nadrzędny-podrzędny jest dostępna gdy istnieją już jakieś bloki w formularzu Najpierw należy utworzyć blok nadrzędny a dopiero później podrzędny (c) 2000, Instytut Informatyki Politechniki Poznańskiej 40
Właściwości relacji między blokami Nazwa relacji, blok nadrzędny, blok podrzędny Zachowanie przy usuwaniu rekordu nadrzędnego kaskadowo (usuwa podrzędne razem z nadrzędnym) pojedynczo (usuwa tylko nadrzędny) nie pojedynczo (uniemożliwia usunięcie nadrzędnego gdy istnieją podrzędne) Koordynacja odroczone zapytanie automatyczne zabroń operacji bez obiektów nadrzędnych Warunek złączenia (w oparciu o nazwy bloków i elementów w formularzu) (c) 2000, Instytut Informatyki Politechniki Poznańskiej 41
Ćwiczenie Utwórz formularz KLIENCI operujący na tabeli K_KLIENCI skorzystaj z kreatorów formularz powinien pokazywać dane jednego klienta w danej chwili zmień rozmieszczenie elementów w Edytorze układu Utwórz formularz ZAMOWIENIA utwórz blok bazujący na tabeli K_ZAMOWIENIA (1 rekord wyświetlany, y, styl formularza) utwórz blok bazujący na tabeli K_POZYCJE jako blok podrzędny (6 rekordów wyświetlanych, styl tabelaryczny) utwórz blok bazujący na tabeli K_STANY_W_MAGAZYNACH jako blok niezależny na innej kanwie niż dwa pozostałe bloki utwórz ręcznie relację między 2 i 3 blokiem z właściwością odroczonego zapytania na żądanie i możliwością niezależnego usuwania rekordów dotyczących pozycji zamówienia ukryj identyfikatory będące kluczami obcymi Zapisz i uruchom utworzone formularze (c) 2000, Instytut Informatyki Politechniki Poznańskiej 42
5. Bloki danych
Paleta właściwości bloków Ogólne Nawigacja Rekordy Baza danych Baza danych - zaawansowane Pasek przewijania Czcionka i kolor Tryb znakowy Narodowe (c) 2000, Instytut Informatyki Politechniki Poznańskiej 44
Właściwości nawigacyjne Styl nawigacji ten sam rekord zmiana rekordu zmiana bloku danych Poprzedni blok danych w nawigacji (domyślnie poprzedni w hierarchii) Następny blok danych w nawigacji (domyślnie następny w hierarchii) (c) 2000, Instytut Informatyki Politechniki Poznańskiej 45
Właściwości dotyczące rekordów Grupa atrybutów wizualnych bieżącego rekordu Zapytania - rozmiar tablicy Liczba buforowanych rekordów Liczba wyświetlanych rekordów Pobieranie wszystkich rekordów Ułożenie rekordów poziome pionowe Pojedynczy rekord (c) 2000, Instytut Informatyki Politechniki Poznańskiej 46
Właściwości bazodanowe Blok bazy danych Wymuszanie klucza głównego Zapytania/Wstawianie/Modyfikacja/Usuwanie dozwolone Informacje o źródle danych (typ, nazwa, kolumny) Klauzule WHERE i ORDER BY Wskazówka optymalizatora Tryb blokowania (natychmiastowe lub opóźnione) Modyfikacja tylko zmienionych kolumn Zabezpieczenie kolumn Maksymalny czas zapytania Maksymalna liczba pobieranych rekordów (c) 2000, Instytut Informatyki Politechniki Poznańskiej 47
Właściwości wizualne bloku Czcionka Kolor Wzór wypełnienia Grupa atrybutów wizualnych Atrybuty wizualne Obiekty formularza posiadające następujące właściwości: Czcionka Kolor Wzór wypełnienia Wykorzystywane do określania powyższych właściwości dla elementów formularza Mogą mieć określone tylko niektóre z właściwości (c) 2000, Instytut Informatyki Politechniki Poznańskiej 48
Ramki i ich właściwości Ramki obszary w obrębie kanwy ramka zawiera elementy bloku danych tworzone przez Kreatora układu można tworzyć je ręcznie w Edytorze układu Właściwości uaktualnianie układu (automatyczne, ręczne, zablokowane) styl układu (formularz, tabela) położenie na kanwie i wymiary odstęp między rekordami (c) 2000, Instytut Informatyki Politechniki Poznańskiej 49
Praca z paletami właściwości Wyświetlanie menu Narzędzia/Paleta właściwości podwójne kliknięcie na ikonie obiektu w Nawigatorze podwójne kliknięcie na obiekcie w Edytorze układu prawy klawisz myszy Elementy lista właściwości, pasek narzędzi, pole wyszukiwania Zmiana wartości właściwości pola tekstowe, listy, przycisk Więcej Wyświetlanie i modyfikacja właściwości wielu obiektów jednocześnie zaznaczenie grupowe wyświetlanie części wspólnej lub sumy właściwości (c) 2000, Instytut Informatyki Politechniki Poznańskiej 50
Bloki kontrolne Nie powiązane z bazą danych Tworzone ręcznie (bez użycia kreatora) Usuwanie bloków Przycisk Usuń na pasku narzędzi Nawigatora obiektów Menu Nawigator/Usuń (c) 2000, Instytut Informatyki Politechniki Poznańskiej 51
Ćwiczenie Formularz KLIENCI utwórz blok kontrolny jako ostatni w hierarchii (wyłącz opcje zapytań, wstawiania, itd.) zapewnij aby lista klientów była posortowana wg identyfikatorów zmień właściwości ramki aby można było ręcznie modyfikować układ zapisz i spróbuj uruchomić formularz Formularz ZAMOWIENIA utwórz blok kontrolny jako ostatni w hierarchii (możesz skopiować blok z formularza KLIENCI) zapewnij aby zamówienia były posortowane wg identyfikatorów a pozycje wg numeru pozycji zmień właściwości ramek aby można było ręcznie modyfikować układ zmień liczbę wyświetlanych pozycji zamówień na 5 spraw aby bieżący rekord w blokach prezentujących więcej niż jeden en rekord był wyświetlany inaczej od pozostałych (wykorzystaj atrybut wizualny) zapisz i spróbuj uruchomić formularz (c) 2000, Instytut Informatyki Politechniki Poznańskiej 52
6. Pola tekstowe
Tworzenie i funkcje pól tekstowych Tworzenie pól tekstowych przez kreatory w Nawigatorze obiektów w Edytorze układu poprzez zmianę typu istniejącego pola Funkcje domyślny typ pola zapytania, wstawianie, modyfikacja i usuwanie danych (c) 2000, Instytut Informatyki Politechniki Poznańskiej 54
Właściwości pól tekstowych Atrybuty wizualne Etykiety Funkcjonalne Nawigacja Dane Obliczenia Rekordy Baza danych Lista wartości Edytor Fizyczne Pomoc Narodowe (c) 2000, Instytut Informatyki Politechniki Poznańskiej 55
Wartości początkowe Wartość stała (23, Brak ) Zmienna systemowa ($$DATE$$, $$DATETIME$$, $$TIME$$, $$DBDATE$$, $$DBDATETIME$$, $$DBTIME$$) Zmienna globalna (:GLOBAL.nazwa_zm zm) Parametr formularza (:PARAMETER.nazwa_par) Element formularza (:blok.element) Sekwencja (:SEQUENCE.nazwa_sekw sekw.nextval) (c) 2000, Instytut Informatyki Politechniki Poznańskiej 56
Lista wartości (ang. list of values) Lista wartości okienko z dynamicznie generowaną listą wartości do wyboru mogą być wywoływane niezależnie od elementów tekstowych formularza (c) 2000, Instytut Informatyki Politechniki Poznańskiej 57
Edytor właściwość Edytor NULL - domyślny edytor Forms nazwa zaprojektowanego edytora SYSTEM_EDITOR - wywołany zostanie edytor zewnętrzny (domyślny systemu operacyjnego) (c) 2000, Instytut Informatyki Politechniki Poznańskiej 58
Korzystanie z list wartości i edytorów Wywołanie listy wartości w trakcie pracy z formularzem Klawisz funkcyjny Menu Edycja/Wyświetl listę Inny oprogramowany przez projektanta mechanizm np. przycisk Wywołanie edytora w trakcie pracy z formularzem Klawisz funkcyjny Menu Edycja/Edytor Inny oprogramowany przez projektanta mechanizm np. przycisk (c) 2000, Instytut Informatyki Politechniki Poznańskiej 59
Grupy rekordów Posiadają strukturę tabel w bazie danych Zawierają wartości statyczne lub będące wynikiem zapytania SQL Zastosowania udostępnianie danych listom wartości udostępnianie danych dla programowej zmiany zawartości list (elementów typu Lista) przekazywanie danych do Graphics Builder i Report Builder (c) 2000, Instytut Informatyki Politechniki Poznańskiej 60
Tworzenie list wartości Na bazie istniejącej grupy rekordów Jednoczesne tworzenie listy wartości i grupy rekordów przez podanie zapytania SQL Wskazówki kolumny zwracane przez zapytanie, które mają być wykorzystane do walidacji danych wprowadzanych przez użytkownika powinny być pierwsze na liście atrybutów w zapytaniu definiującym zapytanie może zawierać klauzule WHERE, GROUP BY i ORDER BY (c) 2000, Instytut Informatyki Politechniki Poznańskiej 61
Właściwości list wartości Fizyczne (położenie i wymiary) Wizualne (czcionka i kolor) Funkcjonalne automatyczne odświeżanie odwzorowanie kolumn element zwracany szerokość wyświetlania (0 - gdy kolumna ma nie być wyświetlana na liście) tytuł kolumny Inne (c) 2000, Instytut Informatyki Politechniki Poznańskiej 62
Tworzenie edytorów Na ogół wystarczający jest edytor domyślny Tworząc edytor określa się następujące właściwości: wizualne (czcionka, kolor,...) fizyczne (położenie, rozmiar, pasek przewijania) funkcjonalne (tytuł, styl zawijania) (c) 2000, Instytut Informatyki Politechniki Poznańskiej 63
Przypinanie listy wartości do pola Właściwości pola: Lista wartości Pozycja X listy Pozycja Y listy Walidacja za pomocą listy Przypinanie edytora do pola Właściwości pola: Edytor Pozycja X edytora Pozycja Y edytora (c) 2000, Instytut Informatyki Politechniki Poznańskiej 64
Ćwiczenie Formularz KLIENCI zmień pole zawierające komentarz dotyczący klienta na wieloliniowe zapewnij aby id klienta był automatycznie wypełniany z sekwencji (zablokuj możliwość modyfikacji identyfikatora) utwórz edytor dla pola zawierającego komentarz Formularz ZAMOWIENIA w bloku z zamówieniem dodaj 2 pola i oznacz je: Klient i Sprzedawca (nie pozwól na modyfikacje, zapytania i nawigację klawiaturą do tych pól) ustaw domyślną wartość daty zamówienia na bieżącą dodaj pole Pozycja_Razem w bloku Pozycje utwórz listę wartości zawierającą dane o książkach (tytuł, autorzy, rok wydania, id) i dołącz ją do pola zawierającego id książki w bloku Pozycje (c) 2000, Instytut Informatyki Politechniki Poznańskiej 65
7. Inne typy pól pozwalające na wprowadzanie danych
Pola wyboru Posiadają dwa możliwe stany zaznaczone nie zaznaczone Mogą przyjmować więcej niż dwie wartości wartość zaznaczona wartość nie zaznaczona sposób traktowania innych wartości zaznaczone nie zaznaczone niedozwolone (pomija rekordy z innymi wartościami) (c) 2000, Instytut Informatyki Politechniki Poznańskiej 67
Specyficzne właściwości pól wyboru Typ danych (znakowe, numeryczne, data) Etykieta Klawisz skrótu Wartość początkowa Wartość zaznaczonego pola Wartość nie zaznaczonego pola Odwzorowanie innych wartości w polu wyboru Nawigacja za pomocą myszy (c) 2000, Instytut Informatyki Politechniki Poznańskiej 68
Elementy listowe Pola prezentujące zbiór wykluczających się opcji do wyboru (każda opcja reprezentuje inną wartość) Alternatywa dla grup radiowych (oszczędność miejsca) Alternatywa dla list wyboru (lista w stylu systemu Windows) Styl listy Lista rozwijana (ang. Poplist) Lista zwykła (ang. Tlist) Pole kombi (ang. Combo box) (c) 2000, Instytut Informatyki Politechniki Poznańskiej 69
Specyficzne właściwości elementów listowych Elementy listy zbiór par: element, wartość Styl listy Odwzorowanie innych wartości (c) 2000, Instytut Informatyki Politechniki Poznańskiej 70
Grupy radiowe Zbiory wzajemnie wykluczających się przycisków radiowych (każdy przycisk reprezentuje inną wartość) Stanowią alternatywę dla list i pól wyboru (c) 2000, Instytut Informatyki Politechniki Poznańskiej 71
Specyficzne właściwości grup radiowych Typ danych (znakowe, numeryczne, data) Odwzorowanie innych wartości Nawigacja za pomocą myszy Specyficzne właściwości przycisków radiowych Etykieta Klawisz skrótu Wartość przycisku radiowego (c) 2000, Instytut Informatyki Politechniki Poznańskiej 72
Ćwiczenie Formularz KLIENCI zmień typ elementu Typ klienta na grupę radiową utwórz odpowiednie przyciski radiowe inne wartości niedozwolone, domyślnie O zmień typ elementu Poziom zaufania na listę inne wartości niedozwolone na liście widoczne wyjaśnienia skrótów Formularz ZAMOWIENIA zmień typ elementu Sposób zapłaty na grupę radiową utwórz odpowiednie przyciski radiowe inne wartości niedozwolone, domyślnie G zmień typ elementu Zrealizowane na pole wyboru inne wartości traktowane jako N, domyślnie N (c) 2000, Instytut Informatyki Politechniki Poznańskiej 73
8. Elementy formularza nie pozwalające na wprowadzanie danych
Pola wyświetlania Podobne do pól tekstowych Pozwalają na: wyświetlanie danych Nie pozwalają na: edycję zapytania nawigację do nich Alternatywą dla pól wyświetlania są pola tekstowe z ustawionymi odpowiednimi właściwościami (c) 2000, Instytut Informatyki Politechniki Poznańskiej 75
Obrazy Wyświetlają obrazy składowane w bazie danych (typ LONG RAW) składowane w systemie plików obsługa programowa formaty obrazów BMP, CALS, GIF, JFIF, TIFF, JPEG, PICT, RAS, TPIC Obsługują edycję wytnij kopiuj wklej (c) 2000, Instytut Informatyki Politechniki Poznańskiej 76
Elementy dźwiękowe Pozwalają na odtwarzanie i nagrywanie dźwięków Składowane w bazie danych (typ LONG RAW) w systemie plików (AU, AIFF, AIFF-C, WAV) Reprezentowane w formularzu przez suwak pokazujący zaawansowanie odtwarzania i zbiór przycisków Zbiór wyświetlanych przycisków (przewijanie, odtwarzanie, nagrywanie, itp.) można kontrolować programowo (c) 2000, Instytut Informatyki Politechniki Poznańskiej 77
Przyciski Rodzaje przycisk tekstowy przycisk z ikoną Zastosowania nawigacja wywoływanie list wartości i edytorów dla pól tekstowych wywoływanie dodatkowych okienek obliczenia inne zależne od inwencji programisty (c) 2000, Instytut Informatyki Politechniki Poznańskiej 78
Specyficzne właściwości przycisków Etykieta Nawigacja za pomocą myszy Ikona Nazwa pliku ikony Podpowiedź w dymku (c) 2000, Instytut Informatyki Politechniki Poznańskiej 79
Pola wyliczane Pola tylko do odczytu Prezentują dane będące wynikiem obliczeń Rodzaje obliczeń formuła podsumowanie (c) 2000, Instytut Informatyki Politechniki Poznańskiej 80
Pola wyliczane w oparciu o formułę Rodzaj obliczenia = Formuła Formuła (:PRAC.PLACA_POD + NVL(:PRAC.PLACA_DOD, 0)) 0)) * * 12 12 (c) 2000, Instytut Informatyki Politechniki Poznańskiej 81
Pola wyliczane w oparciu o podsumowanie Rodzaj obliczenia = Podsumowanie Funkcja podsumowująca AVG, COUNT, MAX, MIN, STDDEV, SUM, VARIANCE Podsumowywany blok Podsumowywany element Uwagi: element podsumowujący musi znajdować się: w tym samym bloku co element podsumowywany w bloku kontrolnym z właściwością Pojedynczy Rekord element podsumowywany musi znajdować się: w bloku danych z jedną z właściwości: Wcześniejsze obliczanie podsumowań Pobieranie wszystkich rekordów w bloku kontrolnym dla elementów nie będących liczbami dozwolone tylko MIN i MAX (c) 2000, Instytut Informatyki Politechniki Poznańskiej 82
Ćwiczenie Formularz ZAMOWIENIA dodaj pole wyświetlania Opis książki w bloku Pozycje w bloku kontrolnym dodaj przycisk z ikoną do wyświetlania listy dostępnych książek (funkcjonalność przycisku zostanie zmodyfikowana w kolejnych ćwiczeniach) spraw aby pole Pozycja_Razem zawierało obliczoną właściwą wartość dodaj pole Razem w bloku pozycje wyświetlaj tylko jedno zapewnij aby zawierało koszt całego zamówienia wyłącz nawigację klawiaturą do tego pola (c) 2000, Instytut Informatyki Politechniki Poznańskiej 83
9. Okna i kanwy
Okna, kanwy i widoki Okno zawiera widoczne elementy formularza formularz może posiadać wiele okien Kanwa powierzchnia, na której znajdują się wyświetlane obiekty musi zostać wyświetlona w oknie aby była widoczna każdy element formularza może być przypisany najwyżej do jednej kanwy Widok widoczna część kanwy atrybut kanwy (c) 2000, Instytut Informatyki Politechniki Poznańskiej 85
Kanwy wypełniające Podstawowy i domyślny typ kanw Widok kanwy wypełniającej odpowiada rozmiarowi okna Każde okno musi posiadać przynajmniej jedną kanwę wypełniającą W danej chwili w danym oknie może być wyświetlana tylko jedna kanwa wypełniająca (c) 2000, Instytut Informatyki Politechniki Poznańskiej 86
Okna i ich właściwości Dla każdego formularza domyślnie tworzone jest okno Dodatkowe okna tworzy się w celu: wyświetlania jednocześnie dwóch kanw wypełniających podzielenia zawartości formularza na części wykorzystania zalet środowisk okienkowych np. możliwość minimalizacji okna Typy okien modalne muszą zostać zamknięte przed powrotem do innego okna aktywowane w chwili wyświetlenia niemodalne (domyślne) może ich być wiele wyświetlonych jednocześnie nie muszą być aktywowane w chwili wyświetlenia Właściwości funkcjonalne przyzwolenie na zamykanie, przesuwanie, itd. (c) 2000, Instytut Informatyki Politechniki Poznańskiej 87
Typy kanw Wypełniająca Nakładana Pionowy pasek narzędzi Poziomy pasek narzędzi Karty (c) 2000, Instytut Informatyki Politechniki Poznańskiej 88
Kanwy nakładane Nakładane na kanwę wypełniającą Współdzielą okno z kanwą wypełniającą i innymi kanwami nakładanymi Zastosowania obszary z paskami przewijania w obrębie okna podział zawartości okna na część stałą i przewijalną ukazywanie i ukrywanie elementów wyświetlanie dodatkowych informacji (np. tekst pomocy) (c) 2000, Instytut Informatyki Politechniki Poznańskiej 89
Kanwy pasków narzędzi Typy pasków narzędzi pionowy pasek narzędzi poziomy pasek narzędzi pasek narzędzi okna MDI Tworzenie paska narzędzi 1) Utworzenie kanwy paska narzędzi 2) Umieszczenie elementów paska na kanwie 3) Przypisanie paska do okna do formularza (dla paska okna macierzystego MDI) poprzez ustawienie właściwości Kanwa poziomego/pionowego paska narzędzi (c) 2000, Instytut Informatyki Politechniki Poznańskiej 90
Kanwy z kartami Umożliwiają rozmieszczenie informacji w jednym oknie na kilku kartach Pozwalają na dostęp do dużych ilości informacji w jednym oknie Wyświetlane na kanwach wypełniających Posiadają jedną lub więcej kart Każda karta posiada etykietę opisującą informacje na niej zawarte Tworzenie: 1) Utworzenie kanwy kart 2) Utworzenie jednej lub więcej kart 3) Rozmieszczenie elementów na kartach (c) 2000, Instytut Informatyki Politechniki Poznańskiej 91
Ćwiczenie Zmień nazwy, tytuły i rozmiar okien formularzy W formularzu ZAMOWIENIA utwórz nowe okno do wyświetlania kanwy prezentującej stany magazynów Uruchom formularz ZAMOWIENIA i spróbuj przejść do nowego okna Formularz KLIENCI utwórz kanwę kart i rozmieść informacje o kliencie na kilku kartach ach zmień kolejność elementów i własności nawigacyjne aby nawigacja klawiaturą nie przekraczała granic kart Formularz ZAMOWIENIA utwórz poziomy pasek narzędzi i umieść na nim 3 przyciski: Magazyn, Pomoc i Wyjście utwórz kanwę nakładaną prezentującą tekst pomocy i przycisk Powrót (domyślnie kanwa powinna nie być widoczna) (c) 2000, Instytut Informatyki Politechniki Poznańskiej 92
10. Wyzwalacze (ang. triggers)
Wyzwalacze w Form Builder Jednostki programu uruchamiane w związku z wystąpieniem danego zdarzenia Zdarzenia związane z: zapytaniami nawigacją walidacją błędami i komunikatami interakcją z użytkownikiem inne PL/SQL PL/SQL Różne typy wyzwalaczy (c) 2000, Instytut Informatyki Politechniki Poznańskiej 94
Charakterystyki wyzwalacza Typ (określa rodzaj zdarzenia wywołującego) Key- (w wyniku naciśnięcia klawisza funkcyjnego) On- (zamiast standardowej akcji) Pre- (przed akcją) Post- (po akcji) When- (uzupełniając standardowe akcje) Poziom (określa zakres) formularz blok element Kod PL/SQL (c) 2000, Instytut Informatyki Politechniki Poznańskiej 95
Kod wyzwalacza Anonimowy blok PL/SQL zawierający: instrukcje SQL instrukcje PL/SQL wywołania podprogramów użytkownika wywołania podprogramów wbudowanych Form Builder DECLARE -- -- gdy gdy są są deklaracje zmiennych x NUMBER; BEGIN BEGIN -- -- gdy gdy nie nie ma ma DECLARE - opcjonalne x := := :blok.pole1; :blok.pole1 := := :blok.pole2; :blok.pole2 := := x; x; EXCEPTION -- -- opcjonalne WHEN WHEN OTHERS THEN THEN null; null; END; END; (c) 2000, Instytut Informatyki Politechniki Poznańskiej 96
Poziom wyzwalacza - hierarchia wykonywania Na poziomie formularza, bloku i elementu można zdefiniować wyzwalacz tego samego typu Domyślnie uruchamia się tylko wyzwalacz najbardziej specyficzny w stosunku do bieżącego obiektu Można sprawić aby uruchomiły się kolejno wyzwalacze z kilku poziomów modyfikując właściwość wyzwalacza Hierarchia wykonywania: Zamiast (domyślnie) Przed (przed wyzwalaczem na poziomie wyższym) Po (po wyzwalaczu na poziomie wyższym) (c) 2000, Instytut Informatyki Politechniki Poznańskiej 97
Definiowanie wyzwalaczy Korzystając z opcji menu Podręczne wyzwalacze dla bieżącego elementu W Nawigatorze obiektów - dodając nowy wyzwalacz w sekcji Wyzwalacze danego obiektu W Edytorze PL/SQL Uwaga: kod wyzwalacza wymaga kompilacji przez naciśnięcie przycisku Kompiluj w Edytorze PL/SQL automatycznie przy kompilacji modułu (c) 2000, Instytut Informatyki Politechniki Poznańskiej 98
Zmienne w jednostkach programu PL/SQL Zmienne PL/SQL deklarowane w wyzwalaczu deklarowane w pakietach użytkownika Zmienne Form Builder nie wymagają deklaracji przy odwołaniu nazwa musi być poprzedzona dwukropkiem (c) 2000, Instytut Informatyki Politechniki Poznańskiej 99
Typy zmiennych Form Builder elementy formularza zasięg: formularz + menu :nazwa_bloku.nazwa_elementu zmienne globalne zasięg: moduły bieżącej sesji :GLOBAL.nazwa_zmiennej zmienne systemowe zasięg: formularz + menu :SYSTEM.nazwa_zmiennej parametry zasięg: bieżący moduł :PARAMETER.nazwa_parametru (c) 2000, Instytut Informatyki Politechniki Poznańskiej 100
Podprogramy wbudowane Form Builder Podprogramy z pakietu rozszerzeń standardowych (nie wymagają prefiksu pakietu przy wywołaniu) Podprogramy z innych pakietów DDE DEBUG OLE2 ORA_FFI ORA_NLS ORA_PROF TEXT_IO PECS TOOL_ENV TOOL_ERR TOOL_RES VBX WEB EXEC_SQL (w Forms 6.0) FTREE (w Forms 6.0) (c) 2000, Instytut Informatyki Politechniki Poznańskiej 101
Ograniczenia w korzystaniu z podprogramów wbudowanych Podprogramy nieograniczone mogą być używane w dowolnych wyzwalaczach i podprogramach użytkownika Podprogramy ograniczone nie mogą być używane w niektórych wyzwalaczach i podprogramach użytkownika wywoływanych z tych wyzwalaczy (c) 2000, Instytut Informatyki Politechniki Poznańskiej 102
Użyteczne podprogramy wbudowane EDIT_TEXTITEM, SHOW_EDITOR ENTER_QUERY, EXECUTE_QUERY EXIT_FORM GO_BLOCK, GO_ITEM GET_ITEM_PROPERTY, SET_ITEM_PROPERTY GET_BLOCK_PROPERTY, SET_BLOCK_PROPERTY MESSAGE, SHOW_ALERT LIST_VALUES, SHOW_LOV SHOW_VIEW, HIDE_VIEW (c) 2000, Instytut Informatyki Politechniki Poznańskiej 103
Wyzwalacz WHEN-WINDOW WINDOW-CLOSED Uruchamia się przy próbie zamknięcia okna mechanizmami systemu operacyjnego (okno nie zamyka się automatycznie!) Można w nim używać dowolnych podprogramów wbudowanych (ograniczonych również) Zastosowania programowe zamknięcie okna zakończenie pracy z formularzem przejście do elementu w innym oknie przy próbie zamknięcia okna (c) 2000, Instytut Informatyki Politechniki Poznańskiej 104
Wyzwalacze obsługujące interakcję użytkownika z elementami formularza When-Button Button-Pressed When-Checkbox Checkbox-ChangedChanged When-Radio Radio-Changed When-Image Image-Pressed When-Image Image-Activated When-List List-Changed When-List List-Activated (c) 2000, Instytut Informatyki Politechniki Poznańskiej 105
Wyzwalacz WHEN-BUTTON BUTTON-PRESSED Uruchamia się gdy użytkownik naciśnie przycisk Można w nim używać dowolnych podprogramów wbudowanych (ograniczonych również) Przykłady zastosowań wywoływanie nowych okien i modułów wywoływanie list wartości i edytorów dokonywanie obliczeń... (c) 2000, Instytut Informatyki Politechniki Poznańskiej 106
Wyświetlanie list wartości po naciśnięciu przycisku Wywołanie podprogramu wbudowanego pokazującego listę wartości w kodzie wyzwalacza When-Button Button-Pressed LIST_VALUES (wywołuje listę dla bieżącego pola) SHOW_LOV (umożliwia wywołanie listy dla bieżącego pola lub niezależnie od położenia kursora) LOOP LOOP EXIT EXIT WHEN WHEN SHOW_LOV( produkty_lov ); MESSAGE( Musisz wybrać produkt! ); END END LOOP; LOOP; (c) 2000, Instytut Informatyki Politechniki Poznańskiej 107
Programowa obsługa list ADD_LIST_ELEMENT DELETE_LIST_ELEMENT POPULATE_LIST Programowa obsługa obrazów READ_IMAGE_FILE WRITE_IMAGE_FILE GET_FILE_NAME Programowa obsługa dźwięków GET_ITEM_PROPERTY SET_ITEM_PROPERTY Właściwości: SHOW_SLIDER, SHOW_PLAY_BUTTON, itd. (c) 2000, Instytut Informatyki Politechniki Poznańskiej 108
Debugowanie wyzwalaczy Poprawa błędów składniowych i błędnych odwołań do obiektów wykrytych przy kompilacji wyzwalacza Śledzenie działania wyzwalacza poprzez wyświetlanie komunikatów na etapie testowania Korzystanie z debugera uruchomienie formularza w trybie śledzenia (debugowania) (c) 2000, Instytut Informatyki Politechniki Poznańskiej 109
Ćwiczenie W obu formularzach napisz wyzwalacz pozwalający na zamknięcie formularza przez zamknięcie okna Formularz ZAMOWIENIA utwórz wyzwalacz wyświetlający listę książek po naciśnięciu przycisku utwórz wyzwalacz pokazujący okno pomocy zapewnij możliwość opuszczenia okna pomocy przez zamknięcie okienka lub naciśnięcie przycisku utwórz wyzwalacz pokazujący okno ze stanem magazynu napisz wyzwalacz czuły na zmianę sposobu płatności, zapewniający że tylko najbardziej zaufani klienci będą mogli kupować na kredyt Uruchom formularz ZAMOWIENIA w trybie śledzenia (c) 2000, Instytut Informatyki Politechniki Poznańskiej 110
11. Wyświetlanie komunikatów i obsługa błędów
Komunikacja z użytkownikiem Alerty systemowe generowane przez aplikację Komunikaty informacyjne o błędach W trakcie pracy... generowane przez aplikację (procedura MESSAGE) (c) 2000, Instytut Informatyki Politechniki Poznańskiej 112
Wykrywanie błędów w trakcie pracy aplikacji FORM_SUCCESS TRUE: akcja zakończona powodzeniem FALSE: błąd (zwykły lub fatalny) FORM_FAILURE TRUE: błąd zwykły FALSE: brak błędu lub błąd fatalny (!) FORM_FATAL TRUE: błąd fatalny FALSE: brak błędu lub błąd zwykły (!) Na ogół wystarczy korzystanie z FORM_SUCCESS (c) 2000, Instytut Informatyki Politechniki Poznańskiej 113
Ukrywanie komunikatów systemowych Ukrycie komunikatu W trakcie pracy... ustawienie wartości zmiennej systemowej SUPPRESS_WORKING :SYSTEM.SUPPRESS_WORKING := := TRUE ; Ukrywanie komunikatów w zależności od ich wagi ustawienie wartości zmiennej systemowej MESSAGE_LEVEL (0, 5, 10, 15, 20, 25, >25 - im wyższa wartość tym więcej komunikatów będzie ukrywanych) :SYSTEM.MESSAGE_LEVEL := := 25; 25; (c) 2000, Instytut Informatyki Politechniki Poznańskiej 114
Wyjątek FORM_TRIGGER_FAILURE Działanie wyzwalacza kończy się niepowodzeniem gdy: w kodzie wyzwalacza wystąpi nieobsługiwany wyjątek wywołany zostanie jawnie wyjątek wbudowany FORM_TRIGGER_FAILURE Zastosowanie wyjątku FORM_TRIGGER_FAILURE zakończenie błędem działania wyzwalacza po wyświetleniu stosownego komunikatu wyjątek ten przerywa działanie wyzwalacza i jest automatycznie obsługiwany przez Form Builder (c) 2000, Instytut Informatyki Politechniki Poznańskiej 115
Wyzwalacze przechwytujące komunikaty systemowe Cele przechwytywania komunikatów ukrycie komunikatów zamiana komunikatów systemowych na własne Wyzwalacz On-Error przechwytuje błędy odczyt informacji o błędzie: ERROR_CODE ( FRM, ORA ), ERROR_TEXT, ERROR_TYPE Wyzwalacz On-Message przechwytuje komunikaty informacyjne odczyt informacji o komunikacie: MESSAGE_CODE, MESSAGE_TEXT, MESSAGE_TYPE (c) 2000, Instytut Informatyki Politechniki Poznańskiej 116
Alerty Styl Przycisk Tytuł Komunikat (c) 2000, Instytut Informatyki Politechniki Poznańskiej 117
Tworzenie alertów 1) Utworzenie nowego alertu w Nawigatorze obiektów 2) Ustawienie właściwości alertu nazwa tytuł styl alertu stop uwaga informacja etykiety przycisków (1, 2, 3) brak etykiety oznacza, że przycisk nie będzie wyświetlany domyślny przycisk komunikat (c) 2000, Instytut Informatyki Politechniki Poznańskiej 118
Korzystanie z alertów Zmiana właściwości alertu w trakcie pracy SET_ALERT_PROPERTY SET_ALERT_BUTTON_PROPERTY Wyświetlanie SHOW_ALERT IF IF SHOW_ALERT( wyjscie ) = ALERT_BUTTON1 THEN THEN EXIT_FORM; END END IF; IF; (c) 2000, Instytut Informatyki Politechniki Poznańskiej 119
Ćwiczenie Formularz ZAMOWIENIA Utwórz i wykorzystaj alert służący do informowania użytkownika, że dany klient musi płacić gotówką Utwórz funkcję wyświetlającą alert zadający pytanie i oczekujący odpowiedzi Tak lub Nie. Tekst pytania powinien być parametrem. Funkcja powinna zwracać TRUE gdy użytkownik wybierze odpowiedź Tak (w przeciwnym wypadku FALSE ) Wykorzystaj powyższy alert do proszenia użytkownika o potwierdzenie w przypadku chęci opuszczenia formularza przez naciśnięcie przycisku (c) 2000, Instytut Informatyki Politechniki Poznańskiej 120
12. Wyzwalacze obsługujące zapytania do bazy danych
Przetwarzanie zapytań w formularzach Wyzwalacz Pre-Query Bodowa zlecenia SELECT... Wykonanie zapytania Dla każdego rekordu zwracanego przez zapytanie Sprowadzenie wiersza do do nowego rekordu Oznaczenie rekordu jako jako Valid Wyzwalacz Post-Query Walidacja rekordu gdy gdy uległ zmianie (c) 2000, Instytut Informatyki Politechniki Poznańskiej 122
Zapytania kierowane przez formularze do bazy danych Klauzula WHERE jest iloczynem logicznym warunków: z domyślnej klauzuli WHERE dla bloku wynikających z informacji wpisanych do pól w trybie wprowadzania zapytań wprowadzonych w okienku Zapytanie/Klauzula WHERE Klauzula ORDER BY jest: klauzulą z okienka Zapytanie/Klauzula WHERE (gdy została tam wpisana) domyślną klauzulą ORDER BY dla bloku (w przeciwnym wypadku) (c) 2000, Instytut Informatyki Politechniki Poznańskiej 123
Wyzwalacz PRE-QUERY Definiowany na poziomie bloku Uruchamia się raz przez każdym wykonaniem zapytania Gdy wystąpi w nim błąd zapytanie nie wykonuje się Zastosowania: rezygnacja z wykonania zapytania gdy użytkownik wprowadził niewłaściwe kryteria selekcji rozszerzenie warunków selekcji (np. przy obsłudze zapytań o pola niebazowe) ) poprzez: wprowadzenie wartości do pól formularza zmianę domyślnej klauzuli WHERE dla bloku (c) 2000, Instytut Informatyki Politechniki Poznańskiej 124
Wyzwalacz POST-QUERY Uruchamia się dla każdego pobranego rekordu Zastosowania wypełnianie pól niebazowych wyliczanie statystyk Należy uważać na wyjątki: NO_DATA_FOUND TOO_MANY_ROWS IF IF :zam.za_pr_pracownik_id IS IS NOT NOT NULL NULL THEN THEN SELECT pr_nazwisko INTO INTO :zam.dsp_pr_nazwisko FROM FROM k_pracownicy WHERE WHERE pr_pracownik_id = :zam.za_pr_pracownik_id; EXCEPTION WHEN WHEN NO_DATA_FOUND THEN THEN...... /* /* obsługa */ */ WHEN WHEN TOO_MANY_ROWS THEN THEN...... /* /* obsługa */ */ END END IF; IF; (c) 2000, Instytut Informatyki Politechniki Poznańskiej 125
Przetwarzanie tablicowe zapytań Zaleta: ograniczenie ruchu w sieci Dostępne również dla instrukcji DML Włączanie Narzędzia/Preferencje/Runtime Runtime/Przetwarzanie tablicy Właściwość bloku: Zapytania - rozmiar tablicy (c) 2000, Instytut Informatyki Politechniki Poznańskiej 126
Programowa obsługa trybów pracy formularza Odczyt trybu pracy - zmienna :SYSTEM.MODE NORMAL ENTER-QUERY QUERY IF IF :SYSTEM.MODE = NORMAL THEN THEN ENTER_QUERY; ELSE ELSE EXECUTE_QUERY; END END IF; IF; Wyzwalacze w trybie ENTER-QUERY nie wszystkie mogą być wywoływane właściwość wyzwalacza: Uruchamiany w trybie wprowadzania zapytania niektóre operacje nie są dozwolone (np. nawigacja do innego bloku) (c) 2000, Instytut Informatyki Politechniki Poznańskiej 127
Dostęp do informacji o zapytaniach w trakcie pracy formularza :SYSTEM.MODE :SYSTEM.LAST_QUERY Właściwości bloku DEFAULT_WHERE (*) ORDER_BY (*) QUERY_ALLOWED (*) QUERY_HITS (*) QUERY_OPTIONS RECORDS_TO_FETCH Właściwości elementu CASE_INSENSITIVE_QUERY (*) QUERYABLE (*) QUERY_ONLY (*) QUERY_LENGTH (*) - Właściwość modyfikowalna (c) 2000, Instytut Informatyki Politechniki Poznańskiej 128
Ćwiczenie Formularz ZAMOWIENIA zapewnij automatyczne wypełnianie pól Klient i Sprzedawca wyłącz działanie przycisku Wyjście w trybie Enter-Query dodaj możliwość wydawania zapytań o zamówienia dotyczące danego klienta lub obsługiwane przez danego sprzedawcę (c) 2000, Instytut Informatyki Politechniki Poznańskiej 129
13. Walidacja wprowadzanych danych
Proces walidacji danych Poziomy walidacji formularz blok rekord element Gdy walidacja zawiedzie sterowanie wraca na odpowiedni poziom (użytkownik może poprawić błędne dane) Standardowe testy walidacyjne sprawdzenie zgodności z maską formatu sprawdzenie czy element wymagany nie jest pusty sprawdzenie zakresu walidacja za pomocą listy wartości (c) 2000, Instytut Informatyki Politechniki Poznańskiej 131
Jednostka walidacji Walidacja ma miejsce gdy naciśnięty został klawisz funkcyjny Enter użytkownik opuścił jednostkę walidacji Jednostka walidacji (właściwość formularza) domyślna (element) formularz blok danych rekord element (c) 2000, Instytut Informatyki Politechniki Poznańskiej 132
Walidacja za pomocą listy wartości Właściwość pola tekstowego Wprowadzona do pola wartość musi odpowiadać jednej z wartości występujących na liście Automatyczne uzupełnianie lub zawężanie listy po wprowadzeniu wartości do pola Lista wartości musi spełniać następujące warunki: kolumna, według której ma odbywać się walidacja, musi być wyświetlana i pierwsza w kolejności walidowany element formularza musi być uwzględniony jako element zwrotny listy wartości (c) 2000, Instytut Informatyki Politechniki Poznańskiej 133
Wyzwalacze walidacyjne Na poziomie elementu When-Validate Validate-Item Na poziomie bloku When-Validate Validate-Record IF IF :PACJENT.DATA_UR > :PACJENT.DATA_ZGONU THEN THEN MESSAGE( Data zgonu zgonu nie nie może może być być wcześniejsza od od daty daty urodzenia! ); RAISE RAISE FORM_TRIGGER_FAILURE; END END IF; IF; (c) 2000, Instytut Informatyki Politechniki Poznańskiej 134
Status walidacji elementów i rekordu NEW CHANGED VALID Status walidacji pojedynczego elementu Własności elementu ITEM_IS_VALID Wymuszenie walidacji ENTER: sprawdza bieżącą jednostkę walidacji VALIDATE: sprawdza zakres DEFAULT_SCOPE, ITEM_SCOPE, RECORD_SCOPE, BLOCK_SCOPE, FORM_SCOPE (c) 2000, Instytut Informatyki Politechniki Poznańskiej 135
Ćwiczenie Formularz ZAMOWIENIA zapewnij walidację pól Klient i Sprzedawca za pomocą list wartości nie pozwól na zatwierdzenie daty realizacji wcześniejszej od daty zamówienia (c) 2000, Instytut Informatyki Politechniki Poznańskiej 136
14. Nawigacja w formularzach
Właściwości nawigacyjne Formularz Ograniczenie nawigacji myszą formularz, blok, rekord, element Pierwszy blok danych w nawigacji Blok Styl nawigacji ten sam rekord, zmiana rekordu, zmiana bloku danych Poprzedni/Następny blok danych w nawigacji Element Obiekt włączony Nawigacja za pomocą klawiatury Poprzedni/Następny element w nawigacji Nawigacja za pomocą myszy (c) 2000, Instytut Informatyki Politechniki Poznańskiej 138
Nawigacja za pomocą myszy Właściwość decydująca o tym, czy uaktywnienie myszą danego elementu powoduje nawigację do niego i opuszczenie elementu bieżącego (ewentualna nawigacja wiąże się z uruchomieniem wyzwalaczy nawigacyjnych i walidacyjnych) Właściwość domyślnie ustawiona Właściwość często wyłączana dla przycisków (c) 2000, Instytut Informatyki Politechniki Poznańskiej 139
Wyzwalacze nawigacyjne Pre- i Post- uruchamiane w trakcie nawigacji nie uruchamiają się gdy jednostka walidacji jest większa niż obiekt, którego zmiana dotyczy mogą wywoływać tylko niektóre podprogramy w przypadku niepowodzenia nawigacja wraca do punktu wyjścia When-New New- Obiekt Obiekt -Instance uruchamiane po nawigacji uruchamiają się nawet gdy jednostka walidacji jest większa niż obiekt, którego zmiana dotyczy mogą wywoływać wszystkie podprogramy niepowodzenie nie powoduje powrotu do poprzednio odwiedzonego elementu (c) 2000, Instytut Informatyki Politechniki Poznańskiej 140
Wyzwalacze WHEN-NEW NEW- obiekt obiekt -INSTANCE When-New New-Form-Instance When-New New-Block-Instance When-New New-Record-Instance When-New New-Item-InstanceInstance Zastosowanie: inicjalizacja obiektów zmiana właściwości w zależności od pewnych warunków /* /* Przykład When-New-Form-Instance */ */ Go_Block( Zamowienia ); Execute_Query; (c) 2000, Instytut Informatyki Politechniki Poznańskiej 141
Wyzwalacze PRE- i POST- Pre/Post /Post-Form Pre/Post /Post-Block Pre/Post /Post-Record Pre/Post /Post-Item Zastosowania: walidacja obliczenia (dotyczy elementu) ustawianie/usuwanie zmiennych globalnych (c) 2000, Instytut Informatyki Politechniki Poznańskiej 142
Nawigacja między polami 1. When-Validate-Item 2. Post-Text-Item 3. Pre-Text-Item polea poleb 4. When-New-Item-Instance UWAGA: Przejście do nowego pola może wiązać się z przejściem do nowego rekordu lub bloku, co powoduje uruchomienie odpowiednich wyzwalaczy nawigacyjnych (c) 2000, Instytut Informatyki Politechniki Poznańskiej 143
Programowa nawigacja w formularzu GO_FORM, GO_BLOCK, GO_ITEM, GO_RECORD NEXT_BLOCK, NEXT_ITEM, NEXT_KEY, NEXT_RECORD NEXT_SET UP, DOWN PREVIOUS_BLOCK, PREVIOUS_ITEM, PREVIOUS_RECORD SCROLL_UP, SCROLL_DOWN (c) 2000, Instytut Informatyki Politechniki Poznańskiej 144