Laboratorium Oracle Forms



Podobne dokumenty
ĆWICZENIE Uruchomić Oracle Forms Builder. 2. Utworzyć nowy formularz (File->New->Form) 3. Nawiązać połączenie z bazą danych (file-connect).

WHEN_NEW_FORM_INSTANCE

BAZY DANYCH Panel sterujący

Oracle Application Express

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Tworzenie raportów. Ćwiczenie 1. Utwórz Autoraport przedstawiający tabelę Studenci

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

8. Listy wartości, dodatkowe informacje dotyczące elementów i przycisków

PODSTAWY BAZ DANYCH 13. PL/SQL

2. Kliknij Insert->Userform. Jeżeli Toolbox nie pojawi się automatycznie, kliknij View -> Toolbox. Otrzymany widok powinien być jak poniżej.

Access - Aplikacja. Tworzenie bazy danych w postaci aplikacji

1. Połączenie z bazą danych. W wybranym edytorze tworzymy plik sqltest.py i umieszczamy w nim poniższy kod. #!/usr/bin/python3 import sqlite3

w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze

Oracle Label Security

Bloki anonimowe w PL/SQL

Przygotowanie formularza do wypożyczenia filmu:

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Bazy danych. Polecenia SQL

Microsoft.NET: LINQ to SQL, ASP.NET AJAX

Kierunek: ETI Przedmiot: Programowanie w środowisku RAD - Delphi Rok III Semestr 5

Ćwiczenia 2 IBM DB2 Data Studio

Oracle Application Express

Aplikacje WWW - laboratorium

Oracle Developer Suite. Budowa aplikacji użytkownika końcowego

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

Plan. Formularz i jego typy. Tworzenie formularza. Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza

Cheatsheet PL/SQL Andrzej Klusiewicz 1/9

SQL 4 Structured Query Lenguage

Laboratorium 7 Blog: dodawanie i edycja wpisów

APEX zaawansowany raport

Przykład 3 Zdefiniuj w bazie danych hurtownia_nazwisko przykładową funkcję użytkownika fn_rok;

Bazy danych Ćwiczenie 1 Instrukcja strona 1 Wersja ogólna

Multimedialne bazy danych - laboratorium

Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości

MS Access 2010 instrukcja część Wstaw do tworzonego formularza wszystkie pola z tabeli wydzial:

3. Budowa prostych raportów opartych o bazę danych

Comarch ERP XL Business Intelligence Start. Migracja do wersji 2018

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze

Microsoft Access zajęcia 3 4. Tworzenie i wykorzystanie kwerend, formularzy i raportów

Bazy danych raporty. 1. Przekopiuj na dysk F:\ bazę M5BIB.mdb z dysku wskazanego przez prowadzącego.

Laboratorium 15: Bazy Danych Tworzenie bazy danych i programowanie elementów nawigacyjnych aplikacji stworzonej przy pomocy technologii dbexpress

Aplikacje WWW - laboratorium

5. Integracja stron aplikacji, tworzenie zintegrowanych formularzy i raportów

Instrukcja podwaja zarobki osób, których imiona zaczynają się P i dalsze litery alfabetu zakładamy, że takich osbób jest kilkanaście.

Bazy danych kwerendy (moduł 5) 1. Przekopiuj na dysk F:\ bazę M5KW.mdb z dysku wskazanego przez prowadzącego

BAZY DANYCH Formularze i raporty

Kolory elementów. Kolory elementów

Inżynieria Programowania Laboratorium 3 Projektowanie i implementacja bazy danych. Paweł Paduch paduch@tu.kielce.pl

Przewodnik... Tworzenie Landing Page

Wyzwalacze (triggery) Przykład

DECLARE VARIABLE zmienna1 typ danych; BEGIN

Obszar Logistyka/Zamówienia Publiczne

wstawianie przycisków umożliwiających wybieranie wartości poprzez klikanie strzałek

MsAccess - ćwiczenie nr 3 (zao) Budowa formularzy

Integracja z Facebook. Wersja 7.2.4

Systemy baz danych Prowadzący: Adam Czyszczoń. Systemy baz danych. 1. Import bazy z MS Access do MS SQL Server 2012:

Obowiązuje od wersji

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

MS Access formularze

DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ];

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

PL/SQL. Zaawansowane tematy PL/SQL

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze

Instytut Mechaniki i Inżynierii Obliczeniowej fb.com/groups/bazydanychmt/

Bazy Danych i Usługi Sieciowe

Kowalski Marcin Wrocław, dn Jaśkiewicz Kamil Bazy Danych 1 Podstawy Projekt Temat: Baza danych do zarządzania projektami

UNIWERSYTET RZESZOWSKI KATEDRA INFORMATYKI

Wykład 5: PHP: praca z bazą danych MySQL

6. Formularze tabelaryczne, obiekty nawigacji - rozgałęzienia

LK1: Wprowadzenie do MS Access Zakładanie bazy danych i tworzenie interfejsu użytkownika

Sposób tworzenia tabeli przestawnej pokażę na przykładzie listy krajów z podstawowymi informacjami o nich.

Rozmiar pola (długość danych)

Cwiczenie 7. Retrospekcja

Język SQL, zajęcia nr 1

5.4. Tworzymy formularze

LABORATORIUM 8,9: BAZA DANYCH MS-ACCESS

Oracle Application Express

Oracle PL/SQL. Paweł Rajba.

Formularze w programie Word

Utwórz strukturę bazy

Procedury wyzwalane. (c) Instytut Informatyki Politechniki Poznańskiej 1

Adobe InDesign lab.1 Jacek Wiślicki, Paweł Kośla. Spis treści: 1 Podstawy pracy z aplikacją Układ strony... 2.

Projektowanie systemów baz danych

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

Plan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL,

BAZY DANYCH. CREATE TABLE dbo.wydzialy (ID INT, Akronim VARCHAR(4) NOT NULL, Wydzial VARCHAR(30) NOT NULL, CONSTRAINT Kluczyk PRIMARY KEY(ID) )

Materiały. Technologie baz danych. Plan wykładu Kursory. Wykład 5: Kursory jawne. Podprogramy. Kursory jawne. Kursory niejawne

I. Spis treści I. Spis treści... 2 II. Kreator szablonów Tworzenie szablonu Menu... 4 a. Opis ikon Dodanie nowego elementu...

Relacyjne bazy danych. Podstawy SQL

Bazy danych i usługi sieciowe

Ćwiczenie 6 Proste aplikacje - podstawowe komponenty.

1. Przypisy, indeks i spisy.

Paweł Cieśla. Dokumentacja projektu

Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski SYSTEMY SCADA

Hurtownia Świętego Mikołaja projekt bazy danych

Bazy danych wykład dwunasty PL/SQL, c.d. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)

Transkrypt:

Laboratorium Oracle Forms Przydatne linki: http://kolos.math.uni.lodz.pl/~koku/pliki/psi/wyklad/kurs.pdf http://www.orafaq.com/wiki/forms_faq#how_can_i_read.2fwrite_os_files_from_forms. 3F http://tai.math.uni.lodz.pl/psi.pdf 1. Tworzenie nowej bazy danych Database Configuration Assisstant (DBCA) (Start Oracle OraDb10g_home1 Configuration and Migration Tools Database Configuration Assistant) Ważne opcje kreatora: 1. krok 8 wyłączyć flash recovery area (domyślnie 2 GB) 2. krok 10 memory można ustawić ilość wykorzystywanej pamięci (min 43%) lub aby obejść ten wymóg - ustawienie Custom 2. Uruchomienie Forms Builder (Start Programy Oracle Developer Suite DevSuiteHome1 Forms Developer Forms Builder) i połączenie z bazą danych (File \ Connect) 3. Utworzyć nowy formularz o nazwie GLOWNY i tytule Główny formularz aplikacji 4. W nowoutworzonym formularzu utworzyć blok STUDE CI o tytule Dane studenta, zawierający pola Id_student, imie, nazwisko, miasto, ulica,... i wymuszający integralność danych. Zastosować układ formularza. 5. Sprawdzić utworzony blok (triggery (KEY-DELREC sprawdza możliwość skasowania rekordu), kanwy (zlokalizuj nazwę okna we właściwościach), okna, ramki) 6. Uruchomić formularz, napełnić go danymi, przetestować przejścia rekordów i ich zmian. 7. Zapoznać się z plikiem formsweb.cfg (ścieżka np. C:\oracle\DevSuiteHome_1\forms\server\). Ustawić rozmiar okna (zastąpić linie width=750 i height=600 na width=100% i height=100%) i brak ekranu tytułowego (splashscreen=no). 8. Zwiększyć odstępy pomiędzy polami, zmienić rozmiar ramki, wyrównać elementy do lewej (np. Layout Align Components ), zmienić położenie widocznego fragmentu okna (czarna ramka), zmienić rozmiar kanwy (jasna ramka). 9. Dodać i oprogramować przyciski Poprzedni, Następny, Zapisz, Wyjdź. Sprawdzić działanie aplikacji. 10. Dodać zapełnienie pól danymi z bazy danych od razu przy uruchomieniu wykorzystując odpowiedni wyzwalacz. 11. Zmodyfikować wyzwalacz dla przycisku następny wpisując: if :SYSTEM.LAST_RECORD='FALSE' then Next_Record; else message('to juŝ ostatni rekord');

IF :System.Cursor_Record = '1' then message('to pierwszy rekord'); END IF; 12. Stwórz blok STUDE CI_LISTA oparty o tabelę STUDE CI z polami Id_student, imie, nazwisko, PESEL. Wymuś integralność danych. Stwórz nową kanwę i wybierz układ tabeli z liczbą rekordów 5 i widocznym paskiem przewijania. 13. Zmienić ilość wyświetlanych reko umber of Item Displayed), dodać przycisk Wyjdź, dodać wyzwalacz WHE - EW-BLOCK-I STA CE. 14. Dodać przycisk Szczegóły zawierający: :global.id_student_rob:=:studenci_lista.id_student; go_block('studenci'); set_block_property('studenci',default_where,'studenci.id_student=:glo bal.id_student_rob'); execute_query; set_block_property('studenci',default_where,''); 15. Zmodyfikować wyzwalacz przycisku Wyjdź w bloku Studenci: hide_window('studenci'); go_block('studenci_lista'); 16. Usunąć wyzwalacz WHE - EW-BLOCK-I STA CE z bloku STUDE CI. 17. Utworzyć blok STUDE CI_LISTA zawierający Id_student, imie, nazwisko, kontrolujący poprawność danych. Elementy bloku umieścić na nowej kanwie. Dane powinny być przedstawione w układzie tabelarycznym (5 rekordów) w ramce o nazwie Lista studentów. Włączyć wyświetlanie paska przewijania. Do wyświetlanych pól dodać PESEL (Z menu kontekstowego należy ponownie uruchomić kreatory). 18. Utworzyć blok EGZAMI Y_STUDE TA oparty na tabeli EGZAMI Y zawierający wszystkie pola tabeli. Podczas tworzenia dodać relację łączącą z blokiem STUDE CI_LISTA (opcja Auto-join data blocks włączona, blok STUDE CI_LISTA wybrać jako nadrzędny). Nowy blok wyświetlić na tej samej kanwie co blok STUDE CI_LISTA. Zastosować układ tabeli z ramką o nazwie Egzaminy studenta. 19. Utworzyć nowe okno i powiązać kanwę z tym oknem. 20. W nawigatorze obiektów przesunąć blok STUDE CI_LISTA na początek listy bloków. 21. Uruchomić aplikację i sprawdzić nowopowstałe triggery (O -POPULATE-DETAILS, O -CHECK-DELETE-MASTER) oraz relację (STUDE CI_LISTA_EGZAMI Y_STUDE). 22. Utworzyć blok STUDE CI_SZCZEGOLY oparty na tabeli STUDE CI w układzie formularza. Dodać do bloku wszystkie pola tabeli z wyjątkiem IMIE, AZWISKO, PESEL. Podczas tworzenia powiązać go relacją z blokiem STUDE CI_LISTA (wyłączyć opcję Auto-join data blocks, wybrać Create Relationship Based on a join condition STUDE CI_LISTA, w polu Detail Item i Master Item wybrać ID_STUDE T). Elementy bloku umieść na istniejącej kanwie, wyświetlić wszystkie elementy bloku w układzie formularza w ramce Dane studenta. 23. Do bloku STUDE CI_SZCZEGOLY dodać możliwość wyboru miasta za pomocą odpowiednio stworzonej listy wartości o nazwie LISTA_MIAST i tytule Lista miejscowości. Lista wartości (LOV) powinna być utworzona za pomocą kreatora, z użyciem zapytania, z wyborem kolumny Miasto (grupa rekordów do wyświetlania w LOV). Wybrać opcję Automatically size columns, użyć Look up return item i wybrać

element STUDE CI_SZCZEGOLY.MIASTO (i przypisać LOV do wybranego elementu (właściwość List of Values)). 24. Lista powinna być uruchamiana na przycisk umieszczony obok pola miasto z opisem. Do przycisku dodać trigger o treści: 25. Utworzyć blok o nazwie STUD_LIST_DLA_EGZ. Blok ma zawierać następujące elementy: Id_student, nazwisko, imie, PESEL. Ma być wyświetlony na nowej kanwie w układzie tabeli (5 rekordów, pasek przewijania). 26. Utworzyć również blok EGZ_STUDA odzwierciedlający wszystkie pola z tabeli Egzaminy powiązany relacją z blokiem STUD_LIST_DLA_EGZ, wyświetlony na tej samej kanwie w układzie tabeli po 5 rekordów z paskiem przewijania. 27. Zamienić pole Zdał na listę rozwijaną (właściwość Item Type ustawić na List Item, właściwość List Style na Poplist). Ustawić odwzorowanie wartości Elements In List (Tak->Y, Nie->N), właściwość Maximum Length można ustawić na 3 oraz Mapping of Other Values na N. 28. Dodatkowo dodać przycisk do wywołania LOV dla przedmiotów (ma być wyświetane Id_przedmiot i nazwa). Powiązać LOV z polem i przyciskiem. 29. Utworzyć blok o nazwie EGZAMI Y_LISTA. Blok ma zawierać wszystkie pola tabeli. Ma być wyświetlony, na nowej kanwie w układzie tabeli (5 rekordów, pasek przewijania). 30. Zamienić pole Zdał na pola typu Check Box (właściwość Item Type), ustawić odwzorowanie wartości Value when Ckeched -> Y, Value when Unckeched ->, Check Box Mapping of Other Values -> Uncheched. 31. Utworzyć blok o nazwie EGZAMI w nowej kanwie w układzie formularza z dodanymi wszystkim polami tabeli Egzaminy. 32. Zmienić typ pola zdał na Radio Group (właściwość Item Type). 33. W nawigatorze obiektów wybrać element ZDAL Radio Buttons i dodać 2 radiobuttony (zielony +). Sprawdzić położenie nowych radiobuttonów. 34. Ustawić właściwości obu radiobuttonów: Label (Tak, ie), Radio Button Value (Y, ). 35. Ustawić właściwość grupy radiobuttonów (ZDAL): Mapping of Other Values ->. 36. Utworzyć blok o nazwie PRZEDMIOTY. Zmniejszyć rozmiar pola Opis i umieścić obok niego przycisk Opis_edycja, do którego podpiąć nowoutworzony edytor (nazwa: EDYTOR_OPISU). 37. Włączyć w Nawigatorze obiektów edytora Scroll Bar (właściwość Show Vertical Scroll Bar ->Yes). 38. Utworzyć wyzwalacz dla przycisku:

39. Utworzyć nową klasę właściwości (Property Classes) o nazwie PRZYCISK_FUNK oraz do jej właściwości dodać i ustalić wysokość, szerokość, rozmiar czcionki. Zastosować tą klasę do np. trzech stworzonych przycisków o różnej wielkości na dowolnej kanwie. Wybrać General Subclass Information -> Propety Class i wybrać PRZYCISK_FUNK. 40. Utworzyć nowy alert o nazwie pytanie z treścią Czy na pewno zapisać zmiany?, ze stylem alertu Caution (Functional Alert Style) oraz dwoma przyciskami z napisami Tak i Nie (przycisk Nie ustawić jako domyślny Default Alert Button). Do bloku EGZ_STUDA dodaj przycisk Wyjdź z wyzwalaczem: 41. Wykorzystując właściwości avigation zmienić nawigację pomiędzy elementami tak, aby z ostatniego elementu bloku STUD_LIST_DLA_EGZ przejść do EGZ_STUDA, a z pola Zdal z bloku EGZ_STUDA do przycisku Wyjdz. Dla STUD_LIST_DLA_EGZ ustawić avigation ext avigation Data Block na EGZ_STUDA oraz avigation avigation Style na Change Data Block. Dla EGZ_STUDA ustawić avigation ext avigation Data Block na STUD_LIST_DLA_EGZ oraz avigation avigation Style na Change Data Block. 42. Spowodować, aby z listy rozwijanej pola Zdal następowała nawigacja do przycisku Wyjdz a potem do bloku STUD_LIST_DLA_EGZ. (Dla pola Zdal ustawić avigation ext avigation Item na WYJDZ) 43. Utworzyć blok STUDE T o układzie formularza z uwzględnieniem wszystkich pól tabeli. W edytorze układu dodać element Tab Canvas i umieścić na pierwszej zakładce elementy bloku (wykorzystać właściwości Physical Canvas oraz Physical Tab Page). Zakładce nadać opis: Dane studenta. Dodać odpowiedni wyzwalacz tak, aby zapytanie wykonywało się zaraz po przejściu do bloku.

44. Utworzyć drugi blok EGAZAMI Y połączony relacją z Dane studenta, zawierający wszystkie pola tabeli i wyświetlające je w układzie tabelarycznym wyświetlającym 5 rekordów wraz z paskiem przewijania. Podczas tworzenia bloku umieścić go na drugiej zakładce. 45. Na zakładce Egzaminy studenta dodać ramkę o tytule Dane studenta. Do bloku STUDE T dodać 3 pola. Pola te mają być wyświetlane na tej samej kanwie co lista egzaminów i mają synchronizować się z polami odpowiednio: Id_student, Imię, Nazwisko (właściwość Data Synchronize with Item). 46. Dodaj blok PRZEDMIOTY umieszczając go na kolejnej zakładce. Dodaj do bloku odpowiedni wyzwalacz tak, aby zapytanie wykonywało się zaraz po przejściu do bloku. 47. Aby umożliwić uruchamianie wyzwalacza od razu po zmianie zakładki należy dodać dla całego modułu wyzwalacz WHEN-TAB-PAGE-CHANGED o treści: DECLARE tp_name varchar2(30); BEGIN tp_name := GET_CANVAS_PROPERTY('CANVAS4',topmost_tab_page); IF tp_name = 'PAGE5' then GO_ITEM('STUDENCI.ID_STUDENT'); ELSIF tp_name = 'PAGE14' then GO_ITEM('PRZEDMIOTY.ID_PRZEDMIOT'); END IF; 48. Utworzyć dwa moduły. Nadać im nazwy PIERWSZY, DRUGI. W pierwszym module utworzyć blok oparty na tabeli STUDE CI. Dodać pola ID_STUDE T, AZWISKO, IMIE. Ustawić układ tabeli, 5 elementów, scrollbar. Dodać odpowiedni wyzwalacz WHEN-NEW-BLOCK-INSTANCE oraz dwa przyciski Egzaminy (nazwa: P_EGZAMI Y) i Wyjdź (nazwa: P_WYJDZ). 49. W drugim module utworzyć blok oparty na tabeli EGZAMINY. Również wybrać układ tabeli, dodać przycisk Wróć (nazwa: D_WROC) oraz wyzwalacz WHEN-NEW- BLOCK-INSTANCE. We właściwościach bloku ustawić warunek (Database Where Clause) zapytania 50. Do przycisku P_EGZAMI Y dodać wyzwalacz o treści: Oprogramuj też przyciski P_WYJDZ i D_WROC(Exit_Form ), oraz dodaj przycisk Zapisz (nazwa: D_ZAPISZ) do modułu DRUGI (Commit_Form). 51. Umożliwić dokonywanie zmian w obu blokach (Zastąpić Commit_Form przez POST). 52. Dodać do wywołania EXIT_FORM w przycisku D_WROC parametry ASK_COMMIT, NO_ROLLBACK) 53. Dodać dodatkowy blok BLOK2 do modułu PIERWSZY. Wyzwalacz przycisku P_EGZAMI Y zamienić na 54. W module DRUGI w bloku EGZAMI Y dodać przycisk BLOK2 z wyzwalaczem:

55. Utworzyć blok Studenci w układzie tabeli zawierający pola id_student, imie, nazwisko, miasto. Dodać wyzwalacz WHE - EW-BLOCK-I STA CE oraz grupę RadioButton o nazwie SORTUJ_WG. Ustawić właściwość Records umber of Items Displayed na 1 oraz Database Database Item na o. Dodać 3 radio buttony, ustawić ich nazwy odpowiednio na: id, nazwisko, imie, miasto (oraz analogicznie właściwość Radio Button Value). We właściwościach grupy przycisków ustawić Data Initial Value na id_student, Mapping of Othe Values na id_student (opcjonalnie) oraz Database Item na o. 56. Do grupy przycisków dodaj wyzwalacz reagujący na zmianę wybranego przycisku: message(:studenci.sortuj_wg); set_block_property('studenci',order_by,:studenci.sortuj_wg); execute_query; 57. Utworzyć blok STUDENCI oparty na tabeli Studenci zawierający listę studentów (id_student, imie, nazwisko) oraz ręcznie blok STUDENCI_SZUK zawierający dwa pola tekstowe (Imię IMIE_SZUK, Nazwisko - AZWISKO_SZUK) oraz przyciski Szukaj i Kasuj. Dla pól tekstowych ustawić: dla pierwszego Prompt Prompt na Imię, dla drugiego Nazwisko. Ustawić właściwość Prompt Aligment na Center oraz odpowiednią nazwę i opis dla przycisków. 58. Dla bloku Studenci dodać warunek zapytania (Database WHERE Clause): UPPER(imie) like UPPER(:studenci_szuk.imie_szuk '%') AND UPPER(nazwisko) like UPPER(:studenci_szuk.nazwisko_szuk '%') Dla przycisku Szukaj: go_block('studenci'); execute_query; go_block('studenci_szuk'); Dla przycisku Kasuj: clear_block(no_validate); go_block('studenci'); execute_query; go_block('studenci_szuk'); Dla formularza utworzyć wyzwalacz WHE - EW-FORM-I STA CE go_block('studenci_szuk'); clear_block(no_validate); go_block('studenci'); execute_query; 59. Wyświetlanie złączonych tabel. Utworzyć blok EGZAMI Y_LISTA oparty na tabeli Egzaminy (bez walidacji, z dodanymi wszystkimi polami w układzie tabeli na nowej kanwie z 5 rekordami). Dodać wyzwalacz uruchamiający zapytanie. 60. Dodać do bloku nowe pole tekstowe ( azwa_przedmiotu). Ustawić odpowiednio następujące właściwości: Database Column ame na AZWA_P, Data Maximum Length na 200. 61. W bloku ustawić: Database Query Data Source ame na Egzaminy, Przedmioty; Database WHERE Clause (warunek złączenia): Egzaminy.id_przedmiot=Przedmioty.id_przedmiot; Advanced Database DML Data Target ame na Egzaminy 62. Ustawić: - dla pola id_przedmiot: Database Column ame na EGZAMI Y.ID_PRZEDMIOT

- dla pola nr_egz: Database Primary Key na Yes - dla wszystkich pól: Required na o - dla pola AZWA_PRZEDMIOTU: Database Insert Allowed oraz Insert Update Allowed na o a Query Only na Yes - dla bloku: Database Insert Allowed na o oraz Database Enforce Primary Key na Yes 63. Utworzyć listę wartości NAZWY_P wybierającą id_przedmiot oraz nazwa_p z przedmiotów. Zwracane wartości ustawić na EGZAMI Y_LISTA.ID_PRZEDMIOT oraz EGZAMI Y_LISTA. AZWA_PRZEDMIOTU 64. Dodać przycisk (5x) oraz wyzwalacz o treści: 65. Wypełnianie Combo-Boxów. Utworzyć pustą kanwę o nazwie KA WA_LISTA oraz manualnie (bez użycia kreatora) utworzyć pusty blok o nazwie BLOK_LISTA. Do bloku BLOK_LISTA dodać element typu List Item i umieścić go na kanwie KA WA_LISTA i nadać mu nazwę ELEME T_LISTA 66. Ustawić właściwość Database Database Item na o oraz właściwości Functional Elements in list dowolne wartości 67. Utworzyć wyzwalacz WHE - EW-BLOCK-I STA CE wpisując poniższy kod i uruchomić aplikację: DECLARE nazwa_gr VARCHAR2(40):='gr_przedmioty'; id_gr RecordGroup; kod_bledu NUMBER; BEGIN id_gr:=find_group(nazwa_gr); IF id_null(id_gr) THEN /*sprawdzenie czy grupa juz istnieje */ id_gr:=create_group_from_query(nazwa_gr,'select nazwa_p,to_char(id_przedmiot) from przedmioty'); END IF; kod_bledu:=populate_group(id_gr); populate_list('blok_lista.element_lista',id_gr); END; 68. Aby wypełnić Combo boxy dowolnymi danymi należy po powtórzeniu punktu 63 ustawić właściwość Database Database Item na o oraz ustawić we właściwości Functional Elements in list dowolne wartości 69. Utworzyć wyzwalacz WHE - EW-BLOCK-I STA CE wpisując poniższy kod i uruchomić aplikację: declare i NUMBER; id_listy ITEM:=find_item('blok_lista.element_lista');

begin clear_list(id_listy); i:=1; while i<=10 loop add_list_element(id_listy,i,'etykieta ' to_char(i), to_char(i)); i:=i+1; end loop; end; 70. Przejściówki. Utworzyć kanwę z zakładkami (Canvases w nawigatorze obiektów). We właściwościach ustawić w Ganeral Canvas Type -> Tab. Dodać dwie zakładki (Tab Pages w awigatorze Obiektów). Na pierwszej zakładce umieścić blok STUDE CI zawierający wszystkie dane studenta (włączyć walidację danych, wybrać układ formularza). Na drugiej zakładce umieścić blok EGZAMI Y oparty na tabeli Egzaminy (wszystkie pola, walidacja danych włączona) powiązany za pomocą relacji z blokiem STUDE CI. Wybrać układ tabeli (5 rekordów, pasek przewijania). Umieścić blok STUDE CI na początku listy bloków i dodać wyzwalacz WHE - EW-BLOCK-I STA CE 71. Do bloku EGZAMI Y dodać pole tekstowe nazwa_p oraz ustawić w tym bloku właściwość Database Query Data Source ame na EGZAMI Y,Przedmioty 72. Ustawić: - warunek złączenia tabel we właściwości Database WHERE Clause na Egzaminy.id_przedmiot=Przedmioty.id_przedmiot - właściwość Database Column ame pola AZWA_P na AZWA_P; - właściwość Data Maximum Length na 200 - właściwość Database Query Only na Yes - właściwość Database Column ame pola ID_PRZEDMIOT na EGZAMI Y.ID_PRZEDMIOT - właściwość bloku Advanced Database DML Data Target ame na Egzaminy - właściwość Database Primary Key elementu R_EGZ na Yes 73. Dodać do bloku EGZAMI Y wyzwalacz WHE -CREATE-RECORD o treści declare CURSOR nast_id_egz IS SELECT s_egzaminy_id.nextval FROM dual; CURSOR nast_id_przedm IS SELECT s_przedmioty_id.nextval FROM dual; begin OPEN nast_id_egz; FETCH nast_id_egz INTO :egzaminy.nr_egz; CLOSE nast_id_egz; OPEN nast_id_przedm; FETCH nast_id_przedm INTO :egzaminy.id_przedmiot; CLOSE nast_id_przedm; :egzaminy.id_student:=:studenci.id_student; :egzaminy.id_egzaminator:='0004'; :egzaminy.data_egz:='01-jan-2000'; :egzaminy.id_osrodek:='1'; :egzaminy.zdal:='y'; end;

74. Usunąć wyzwalacz WHE -VALIDATE-ITEM dla elementu ID_PRZEDMIOT w bloku EGZAMI Y i zmienić jego właściwość Data Required na o. 75. Dodać do bloku EGZAMI Y przycisk owy. Dla przycisku utworzyć wyzwalacz WHE -BUTTO -PRESSED o treści create_record; Dodać do bloku EGZAMI Y przycisk Zapisz. Dla przycisku utworzyć wyzwalacz WHE -BUTTO -PRESSED o treści określonej poniżej i uruchomić aplikację: declare cursor kur_przedm(id_przedm number) is select 'x' from przedmioty p where p.id_przedmiot=id_przedm; dummy_var1 char(1); biezacy_rek number; begin --zapisywanie lub uaktualnianie przedmiotów go_block('egzaminy'); biezacy_rek:=:system.cursor_record; first_record; loop if (:system.record_status<>'query') then open kur_przedm(:egzaminy.id_przedmiot); fetch kur_przedm into dummy_var1; if (kur_przedm%found) then if (:egzaminy.id_przedmiot is not NULL) then update przedmioty set nazwa_p=:egzaminy.nazwa_p where id_przedmiot=:egzaminy.id_przedmiot; else if (:egzaminy.nazwa_p is not NULL) then insert into przedmioty values (:egzaminy.id_przedmiot,:egzaminy.nazwa_p,'opis'); close kur_przedm; if (:system.last_record='true') then exit; else next_record; end loop; go_record(biezacy_rek); --zapisanie innych danych commit_form; --usunięcie przedmiotów, do których nie ma odwołań delete from przedmioty where id_przedmiot not in (select distinct id_przedmiot from egzaminy); commit; end; 76. Utworzyć nowy moduł MENU oraz nowe menu MENU_GLOWNE (Menus Menus). W Menu editor dodać: kategorie Plik z dodaną opcją Wyjdź. Dodać również kategorię

Rekord z opcjami Następny i Poprzedni oraz Formularz z poleceniami do wykonywania zapytania, zapisywania zmian oraz czyszczenia formularza bez potwierdzania zmian (clear_form(no_validate)). Powiązać formularz z menu. 77. Utworzyć blok STUDE T o układzie formularza z uwzględnieniem wszystkich pól tabeli (włączyć walidację danych oraz dodać wyzwalacz WHE - EW-BLOCK- I STA CE (wywołanie zapytania). W edytorze układu dodać dwa elementy Stacked Canvas. Kanwy nazwać odpowiednio Pierwsza, Druga, Trzecia. Ustawić im różne kolory. Dodatkowo Drugiej i Trzeciej wyłączyć widzialność. Przenieść elementy: DATA_UR, MIEJSCE, TEL, FAX, E_MAIL, R_ECDL, DATA_ECDL na drugą kanwę. Na pierwszej kanwie umieścić przyciski o nazwach P_DALEJ, D_DALEJ, D_WSTECZ, T_WSTECZ, T_ZAKO CZ (P=pierwsza, D=druga, T=trzecia). Nadać im odpowiednie etykiety. Przyciskom: D_DALEJ, D_WSTECZ, T_WSTECZ, T_ZAKO CZ ustawić właściwość Physical Visible na o. 78. Do P_DALEJ dodać wyzwalacz WHE -BUTTO -PRESSED o treści: Do D_WSTECZ dodać wyzwalacz WHE -BUTTO -PRESSED o treści: Do T_WSTECZ dodać wyzwalacz WHE -BUTTO -PRESSED o treści: Do T_ZAKO CZ dodać wyzwalacz WHE -BUTTO -PRESSED o treści: 79. Ustawić kanwom Druga i Trzecia identyczny rozmiar i położenie. Ustawić je tak aby przykrywały pola znajdujące się na pierwszej kanwie. Ustawić przyciski: P_DALEJ, D_DALEJ, T_ZAKO CZ tak aby się pokrywały. Ustawić przyciski: D_WSTECZ, T_WSTECZ tak aby się pokrywały. 80. Dodawanie/wyświetlanie obrazka. Wyświetlenie obrazka (np. w komponencie Image) możliwe jest po użyciu funkcji: READ_IMAGE_FILE('ścieŜka_do_pliku','ANY','BLOK.ELEMET_DOCELOWY );

'A Y' w wywołaniu procedury READ_IMAGE_FILE oznacza dowolny rozpoznawany format obrazka np. JPG, TIFF, BMP