ĆWICZENIE 4 1. Uruchomić Oracle Forms Builder. 2. Utworzyć nowy
Transkrypt
ĆWICZENIE 4 1. Uruchomić Oracle Forms Builder. 2. Utworzyć nowy
ĆWICZENIE 4 1. Uruchomić Oracle Forms Builder. 2. Utworzyć nowy formularz (File->New->Form) 3. Nawiązać połączenie z bazą danych (file-connect). 4. Utworzyć blok danych (Data Block) oparty na tabeli SAMOCHODY: 4.1.Wybrać składową Data Blocks formularza 4.2.Nacisnąć prawy przycisk myszy 4.3.Wybrać Data Block Wizard 4.4.Wybrać Table or View 4.5.Nacisnąć Browse, aby wybrać nazwę tabeli lub perspektywy składowanej w bazie (wszystkie kolumny z tabeli SAMOCHODY) 4.6.Wpisać nazwę bloku danych (domyślnie SAMOCHODY) 4.7.Zaznaczyć „Just create a data block”, w celu utworzenia tylko bloku danych 5. Dodaj do bloku SAMOCHODY niebazodanowe pole o nazwie MARKA: ● wejdź do Object Navigator ● w bloku danych SAMOCHODY zaznacz Items ● kliknij na zielony krzyżyk (Create), który utworzy nowe pole w bloku danych ( ITEM6 ) i zmień jego nazwę na MARKA ● ● ● wejdź do Property Palette nowego pola i zmień jego charakter na niebazodanowy ( własność Database Item = No), typ na List Item (własność Item Type = List Item) oraz ustaw styl listy jako Combo Box (List Style = Combo Box) Wpisz elementy dostępne na liście Elements in List -> More (własność List Elements: Toyota, Opel, ... itd.) Ustaw wartość początkową pola MARKA na TOY 6. Na poziomie formularza dodaj wyzwalacz ( z Object Navigator) WHEN-NEW-FORMINSTANCE, który zapewni dynamiczne wypełnienie listy Marka własnościami dostępnych marek samochodów ( z tabeli 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; -- 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; 7. Dodaj do bloku danych SAMOCHODY pole tekstowe o nazwie MODEL: ● wejdź do Object Navigator ● w bloku danych SAMOCHODY zaznacz Items ● kliknij na zielony krzyżyk (Create), który utworzy nowe pole w bloku danych (ITEM7 ) i zmień jego nazwę na MODEL ● wejdź do Property Palette nowego pola i zmień jego typ na pole tekstowe (własność Item Type = Text Item) ● zapewnij, aby pole to było wymagane ( własność Reguired = Yes) i umożliwiało przechowywanie napisów 30 znakowych (własność Data Type = Char oraz własność Maximum Length = 30) 8. Dodaj do bloku danych SAMOCHODY przycisk o nazwie BTN_MODEL i ustaw dla niego własność Mouse Navigate na No: ● wejdź do Object Navigator ● w bloku danych SAMOCHODY zaznacz Items ● kliknij na zielony krzyżyk (Create), który utworzy nowe pole w bloku danych (ITEM8) i zmień jego nazwę na BTN_MODEL ● wejdź do Property Palette nowego pola i zmień jego typ na przycisk (własność Item Type = Push Button) oraz ustaw własność Mouse Navigate = No 9. Dodaj listę wartości (LOV) o nazwie LOV_MODELE. Do jej utworzenia wykorzystaj kreator list wartości (LOV Wizard). ● uruchom LOV Wizard ● utwórz nową listę wybierając New Record Group based on a query ● do budowy posłuż się zapytaniem (wpisz SQL Query Statement): select nazwa, id from modele where marka_kod=:samochody.marka order by nazwa ● następnie dodaj do LOV obydwie kolumny z grupy rekordów (NAZWA, ID) ustaw szerokość kolumny ID na 0 (Width = 0) i wartość zwracaną jako SAMOCHODY.MODEL_ID (Return value = SAMOCHODY.MODEL_ID); dla kolumny NAZWA ustaw element zwracany na SAMOCHODY.MODEL (Return value = SAMOCHODY.MODEL) następnie ustaw tytuł okna listy wartości LOV na Modele (Title = Modele) następnie powiąż tworzoną listę wartości z polem SAMOCHODY.MODEL: ● ustaw dla pola SAMOCHODY.MODEL własność Validaate from List = No ● ● ● 10. Dla przycisku BTN_MODEL dodaj kod zapewniający wyświetlenie listy wartości skorzystania z pola SAMOCHODY.MODEL: -- przejdź do elementu model i wywołaj skojarzoną -- z nim listę wartości go_item('SAMOCHODY.MODEL'); do_key('LIST_VALUES'); 11. Dodaj do bloku SAMOCHODY pole tekstowe o nazwie NADWOZIE: ● wejdź do Object Navigator ● w bloku danych SAMOCHODY zaznacz Items ● kliknij na zielony krzyżyk (Create), który utworzy nowe pole w bloku danych (ITEM9) i zmień jego nazwę na NADWOZIE ● wejdź do Property Palette nowego pola i zmień jego typ na pole tekstowe (własność Item Type = Text Item) ● zapewnij, aby pole to było wymagane ( własność Reguired = Yes) i umożliwiało przechowywanie napisów 10 znakowych (własność Data Type = Char oraz własność Maximum Length = 10) 12. Dodaj do bloku SAMOCHODY przycisk o nazwie BTN_TYP i ustaw dla niego własność Mouse Navigate na No ● wejdź do Object Navigator ● w bloku danych SAMOCHODY zaznacz Items ● kliknij na zielony krzyżyk (Create), który utworzy nowe pole w bloku danych (ITEM10) i zmień jego nazwę na BTN_TYP ● wejdź do Property Palette nowego pola i zmień jego typ na przycisk (własność Item Type = Push Button) oraz ustaw własność Mouse Navigate = No 13. Dodaj do bloku SAMOCHODY pole wyświetlania o nazwie DRZWI: ● wejdź do Object Navigator ● w bloku danych SAMOCHODY zaznacz Items ● kliknij na zielony krzyżyk (Create), który utworzy nowe pole w bloku danych (ITEM11) i zmień jego nazwę na DRZWI ● wejdź do Property Palette nowego pola i zmień jego typ na pole wyświetlania (własność Item Type = Display Item) ● zapewnij, aby umożliwiało ono przechowywanie liczb, zmień własność Data Type = Number 14. Uporządkuj elementy w Object Navigator według kolejności przedstawionej poniżej: 15. Utworzyć kanwę 15.1.Wybrać składową Canvases formularza 15.2.Nacisnąć prawy przycisk myszy 15.3.Wybrać Layout Wizard 15.4.W polu Canvas wybrać New Canvas 15.5.W polu Type wybrać Tab (kanwa karty, zakładkowa) 15.6.Wybrać blok danych, który ma zostać umieszczony na kanwie (blok danych SAMOCHODY) 15.7.Wybrać elementy danego bloku danych, które mają zostać umieszczone na kanwie (atrybuty ROK, KOLOR, OPIS ) oraz określić ich typ (Text Item – elementy tekstowe) 15.8.Wprowadzić nazwy dla wybranych wyżej elementów (ROK- Rok, KOLOR – Kolor, OPIS - Opis), ich szerokość i wysokość 15.9.Wybrać Tabular jako styl rozkładu 15.10.Wprowadzić tytuł okna ( Dane samochodów – rok, kolor, opis), ilość wyświetlanych wierszy (15), odległość między wierszami 15.11.Zaznaczyć Display Scrollbar, jeśli ma pojawić się suwak do przewijania 15.12.Zmienić własności ramek wyświetlających dane ROK, KOLOR i OPIS ( z Layout Editor) ● Wejdź do Property Palette ramki Rok i zmień wartość Hint- dodaj podpowiedź („Rok produkcji”), wartość Display Hint Automatically- „yes”, wartość Tooltip „Rok produkcji pojazdu” ● Podobnie dla ramki Kolor i Opis 15.13.Z Object Navigator przejdź do Layout Editor dla nowo stworzonej kanwy , zmień dla pola Opis wartości ● Zaznaczając ramkę Opis wejdź do jej Property Palette i ustaw wyświetlanie pojedyncze (własność Number of Items Displayed = 1 ) oraz wyświetlanie pola wielowierszowe (własość Multi-Line = Yes) 15.14.Z Object Navigator przejdź do Layout Editor dla nowo stworzonej kanwy , zmień dla pola Kolor wartości ● Zaznaczając ramkę Kolor wejdź do jej Property Palette i zmień typ elementu (własność Item Type nalistę (wartość List Item) i ustaw jej styl jako poplist ( własność List Style = Poplist) ● Wpisz elementy dostępne na liście Elements in List -> More (własność List Elements: Biały, Czerwony, Srebrny, Zielony, Niebieski) ● Wstaw wartośc początkową (wartość Initial Value) pola KOLOR na kolor Biały. 15.15.Z Object Navigator przejdź do Layout Editor dla nowo stworzonej kanwy , zmień dla pola Rok wartości ● ustaw najmniejszą dozwoloną wartośc na rok 1950 (własność Lowest Allowed Value = 1950), zaś największą dozwoloną wartość na 2007 (własność Highest Allowed Value = 2007) 16. Zmień nazwę okna ( z Object Navigator) na WINDOW_SAMOCHODY i ustaw tytuł okna (własność Title) na Samochody. 17. Zapewnij wygląd formularza zbliżony do zamieszczonego poniżej: 18. Dodaj listę wartości (LOV) o nazwie LOV_TYP. Do jej utworzenia wykorzystaj kreator list wartości (LOV Wizard). ● uruchom LOV Wizard ● utwórz nową listę wybierając New Record Group based on a query ● do budowy posłuż się zapytaniem (wpisz SQL Query Statement): select nazwa, kod, ilosc_drzwi from typy_nadwozi order by nazwa ● ustaw wartość zwracaną dla kolumny NAZWA jako SAMOCHODY.NADWOZIE (Return value = SAMOCHODY.NADWOZIE); dla kolumny KOD ustaw element zwracany na SAMOCHODY.TYP (Return value = SAMOCHODY.TYP); dla kolumny ILOSC_DRZWI jako SAMOCHODY.DRZWI (Return value = SAMOCHODY.DRZWI) ● zmień stosownie szerokość wyświetlania kolumn (np. dla KOD = 0) ● następnie ustaw tytuł okna listy wartości LOV na Typy nadwozi (Title = Typy Nadwozi) ● powiąż listę wartości z polem SAMOCHODY.NADWOZIE ● ustaw dla pola SAMOCHODY.NADWOZIE własność Validate from List na No 19. 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'); 20. Dla bloku SAMOCHODY ( z Object Navigator) 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; 21. 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-LIST-CHANGED: -- po zmianie marki pokaż lov z wyborem -- modeli danej marki GO_ITEM('SAMOCHODY.MODEL'); DO_KEY('LIST_VALUES'); 22. Zdefiniuj parametr o nazwie P_MODEL_ID typu Number(30) 23. Dla bloku SAMOCHODY ustaw własność Where Clause na MODEL_ID=NVL(:PARAMETER.P_MODEL_ID, MODEL_ID) 24. Zdefiniuj atrybut wizualny o nazwie AKTUALNY_RECORD. Ustaw dla niego kolor tła na cyan. Zapewnij aby bieżący rekord w bloku SAMOCHODY wykorzystywał atrybut AKTUALNY_REKORD 25. Uruchom i przetestuj formularz.