ZAJĘCIA X
Transkrypt
ZAJĘCIA X
ZAJĘCIA X
FORMULARZE
Zad. 1
Stworzyd kopię tabeli Ksiazka (każdy nadaje kopii własną nazwę). Stworzyd nowy formularz oraz blok danych bazujący
na tabeli Kopia_Ksiazka (formularz będzie używany do wstawiania nowych książek, wyświetlad wszystkie kolumny
oprócz daty wydania i oprawy). Po uruchomieniu formularza powinno zostad wykonane zapytanie. Dla pola
id_wydawcy, id_dostawcy stworzyd menu podręczne pozwalające na wyświetlenie listy wartości z nazwami
dostawców i wydawców, po wybraniu wartości z listy: id_wydawcy, id_dostawcy powinny znaleźd się na kanwie.
Listy powinny wyświetlad tylko nazwy wydawców i nazwy dostawców (ale wybierad zarówno nazwy, jak i identyfikatory).
Stworzyd dwa przyciski:
- umożliwiający wpisywanie danych (tworzy pusty rekord za ostatnim rekordem będącym już w bazie),
- zatwierdzający rekord
Po przejściu do nowego rekordu pole id_ksiazki powinno zostad automatycznie wypełnione (kolejny numer). Po
wstawieniu rekordu powinien pojawid się komunikat (zastąpienie systemowego). Powinno byd możliwe wyjście z
formularza poprzez zamknięcie okna.
Zad. 2
Stworzyd nowy moduł formularza. Stworzyd blok kontrolny z dwoma polami wyboru (check box) i jednym przyciskiem.
Pola wyboru "mają nadzorowad" wyświetlanie odpowiednich bloków danych. Opis pól:
- oprawa: oprawa=TWARDA (jeśli zaznaczone, to wybierane będą książki w twardej oprawie) (1),
- zamowienie: co najmniej raz zamówiona (jeśli zaznaczone, to wybierane będą książki co najmniej raz
zamówione) (2)
Stworzyd cztery perspektywy:
s1s2: spełnione (1) i (2)
s1: spełnione (1) i niespełnione (2)
s2: spełnione (2) i niespełnione (1)
nots1s2: niespełnione (1) i niespełnione (2)
Na kanwie głównej stworzyd cztery kanwy typu nakładana. Mają one znajdowad się w tym samym miejscu (wszystkie), a
na każdej z nich ma znajdowad się inny blok danych (bazujący na jakiejś perspektywie). Po uruchomieniu formularza
żadne z pól wyboru nie może byd zaznaczone i żadna kanwa z blokiem bazującym na perspektywie nie powinna byd
widoczna. Po naciśnięciu przycisku pojawid powinna się kanwa z odpowiednim blokiem danych (odpowiednim ze
względu na zaznaczenia pól) i powinno wykonad się w danym bloku zapytanie.
Gdy jakieś z pól zostanie zmienione, to uprzednio wyświetlona kanwa ma zniknąd.
W przypadku, gdy w wyniku wykonania zapytanie nie zostaną zwrócone żadne wiersze należy zastąpid komunikat
systemowy własnym.
Zad. 3
Stworzyd formularz, na kanwie którego znajdowad się będzie element listy z elementami id_wydawcy nazwa,
id_wydawcy (id_wydawcy druga wartośd będzie niewidoczna). Wybranie elementu z listy oraz naciśnięcie przycisku
powinno spowodowad wyświetlenie tytułów książek wydawanych przez danego wydawcę. Po naciśnięciu kolejnego
przycisku w dwóch polach wyświetlania powinny pojawid się informacje: jaki procent wydawców, którzy wydawali
książkę o danym tytule stanowią wydawcy o identyfikatorze różnym od aktualnie wyświetlanego na liście oraz ilu jest
takich wydawców. Przy zmianie wartości listy pola powinny byd ”czyszczone”.
Zadanie 1
1. Nowy moduł formularza.
2. Kopia tabeli Ksiazka: Kopia_Ksiazka (plus np. inicjały tworzącego).
3. Blok danych Kopia_Ksiazka.
4. Wyzwalacz When-New-Form-Instance.
5. Listy wartości; w palecie właściwości dla list wartości można ustawid szerokośd kolumn, ustawiając szerokośd
kolumny na 0 sprawiamy, że dana kolumna nie będzie wyświetlana (pod nazwą grupy rekordów w palecie
właściwości dla listy).
6. Menu podręczne (podczepienie pod odpowiednie elementy).
7. Przycisk a)
if(:system.record_status = 'QUERY') then
if(:system.last_record='FALSE') then
last_record;
end if;
create_record;
end if;
Przycisk b)
zatwierdzenie zmian
commit_form;
8. Wyzwalacz On-Insert
→ wstawienie rekordu (bierzemy pod uwagę sytuację, że w formularzu jest za mało danych, tzn. nie są
określone wartości dla kolumn wymaganych: data_wydania)
9. Wyzwalacz On-Message (podczepiony pod formularz)
→ komunikat po wstawieniu rekordu
10. Wyzwalacz When-New-Item-Instance podczepiony pod id_ksiazki
→ ustawienie wartości dla id_ksiazki
:system.record_status = 'NEW' and :system.mode<>'ENTER-QUERY'
11. Wyzwalacz When-Window-Closed
Zadanie 2
1. Nowy moduł formularza.
2. Blok KONTROLNY z przyciskiem i dwoma polami wyboru. Pierwsze pole o nazwie OPRAWA, drugie o nazwie
ZAMOWIENIE.
3. Perspektywy.
4. Nowa kanwa (główna).
5. Cztery kanwy nakładane: PIERWSZA (s1s2), DRUGA (s1), TRZECIA (s2), CZWARTA (nots1s2). Należy je
umieścid niżej niż przyciski, i w tym samym miejscu.
6. Utworzenie bloków bazujących na perspektywach i umieszczenie na odpowiednich kanwach. Blok KONTROLNY
powinien znajdowad się najwyżej w nawigatorze obiektów.
7. Paleta właściwości dla pól wyboru, ustalenie wartości gdy zaznaczony=1, wartości gdy nie zaznaczony=0, i
wartości początkowej=0.
8. Wyzwalacz When-New-Form-Instance
→ ukrycie widoków
hide_view
9. Wyzwalacz When-Button-Pressed
→ ukrycie i pokazanie odpowiednich kanw
get_view_property, hide_view
10. Wyzwalacz When-Check-Box-Changed
11. Wyzwalacz On-Message
→ zastąpienie komunikatu systemowego o niewybraniu wierszy
Zadanie 3
1. Blok KONTROLNY1 z elementem typu lista o nazwie EL. Umieszczenie bloku na kanwie.
2. Paleta właściwości EL.
→ elementy na liście:
→ nazwa, wartośd elementu=1
→ id_wydawcy, wartośd elementu=2
→ styl listy: pole kombi
3. Grupa rekordów o nazwie GR. Zapytanie:
select id_wydawcy||' '||nazwa, to_char(id_wydawcy)
from wydawca
4. Paleta właściwości GR
→ specyfikacje kolumn:
→ nazwa
→ id_wydawcy
5. Wyzwalacz When-New-Form-Instance
declare
err number;
begin
err:=populate_group('GR');
populate_list('KONTROLNY1.EL','GR');
end;
6. Blok KONTROLNY2 z przyciskiem P, etykieta “Pokaż wydane książki”. Blok na kanwę. KONTROLNY1 ma leżed w
nawigatorze obiektów najwyżej.
7. Wyzwalacz When-Button-Pressed podpięty pod P
declare
zm varchar(50);
begin
if :system.cursor_block<>'KSIAZKA' then
go_block('KSIAZKA');
end if;
execute_query;
end;
8. Blok KONTROLNY3 z elementami:
→ ILE, typ elementu: pole wyświetlania, typ danych: number, etykieta: Ilość innych wydawców
→ PROCENT, typ elementu: pole wyświetlania, typ danych: number, etykieta: Procent innych wydawców
→ P2, typ elementu: przycisk, etykieta: Pokaż dane o książce
Umieszczenie bloku na kanwie.
9. Blok danych KSIAZKA. Elementy: id_ksiazki, tytul, id_wydawcy. Na kanwie umieszczamy tylko
tytul, w tej samej ramce, co elementy bloku KONTROLNY3.
10. Paleta właściwości dla bloku KSIAZKA.
→ warunek WHERE
id_ksiazki in (select id_ksiazki from ksiazka where
id_wydawcy=:kontrolny1.el)
11. Funkcja ILE wyznaczająca ilu innych wydawców wydawało książki o danym tytule.
12. Funkcja PROCENT wyznaczająca procent innych wydawców.
13. Wyzwalacz When-Button-Pressed podpięty pod P2.
:KONTROLNY3.PROCENT:=PROCENT(:KONTROLNY1.EL,:KSIAZKA.TYTUL);
:KONTROLNY3.ILE:=ILE(:KONTROLNY1.EL,:KSIAZKA.TYTUL);
14. Wyzwalacz When-List-Changed podpięty pod formularz
declare
zm varchar(20);
begin
zm:=:kontrolny1.el;
:kontrolny3.procent:='';
:kontrolny3.ile:='';
go_block('KSIAZKA');
clear_block;
end;