1. Tree
1.1. SQl Code
select 0 as status,
3 as einrueck,
(select s.starname from star s where s.starnum = m.starnum) as title,
null as icon,
m.mvnum as mvnum,
null as tooltip,
apex_util.prepare_url('f?p='||:app_id||':1:'||:app_session||':T:::P1_Starnum:'|| m.starnum) as link from movstar m
-- :1: ist die Page Seite | :P1_Starnum: ist der Parameter (Löschen beim einfügen bitte)
union
select 1,
1,
'alle filme' as title,
null,
0 as mvnum,
null,
null from dual
union
select -1,
2,
mvtitle as title,
null,
mvnum,
null,
null from movie order by mvnum
-
1 ist der Stamm (oberste)
-
-1 sind die Äste
-
0 sind die Blätter
Wenn man überprüfen will, ob ein Ast Null ist, verwenden wir Folgendes: |
select -1, -- -1 bei exists damit der Ast angezeigt wird
2,
...
null from irgendwas
where exists (...)
union
select 0, -- 0 bei not exists
2,
..
null from irgendwasAnderem
where not exists (...)
Der Tree sollte mit den gebrauchten Tabellen dann so aussehen:
Wenn man auf einen Actor drückt, wird nur die Id mitgegeben. Um den Namen oder etwas anderes in den Textfields zu bekommen, muss man das dann ein Select ausführen.
4. Images ("POST")
Der Post wird verwendet, um Bilder zu den Schauspielern hinzuzufügen. Also eigentlich ein Update.
Man erstellt einen Process der z.B. Update heißt. Hier weist man dann den Button zu, welcher dann der Auslöser des Processes ist.
Der folgende Save Code sieht so aus:
declare
v_blob blob;
v_thum blob;
v_mimeType varchar2(4000); --Braucht man nicht unbedingt
v_count number;
v_oi_bild ordimage := null;
v_oi_thumb ordimage := null;
begin
apex_debug.message('P1_UPLOAD: %s', :P1_UPLOAD); --debug option optional
select count(*) into v_count from apex_application_temp_files
WHERE name = :P1_UPLOAD; -- gibts eine file?
if v_count != 0 then
SELECT blob_content , mime_type -- optional | file wird selected
INTO v_blob, v_mimeType
FROM apex_application_temp_files
WHERE name = :P1_UPLOAD; -- UPLOAD ist die file
v_oi_bild := ordimage(v_blob);
v_oi_bild.setproperties();
v_oi_thumb := ordimage(v_thum);
-- Thumbnail generieren
v_oi_bild.processcopy(
command => 'maxScale=100 100',
dest => v_oi_thumb
); --maxScale -> größe
v_thum := v_oi_thumb.getContent(); -- zuweisung
end if;
UPDATE star
SET STARNAME = :P1_STARNAME,
BIRTHPLACE = :P1_BIRTHPLACE,
CNTRYID = :P1_CNTRYID,
STARBORN = :P1_STARBORN,
STARDIED = :P1_STARDIED,
SEX = :P1_SEX,
DEATHCAUSE = :P1_DEATHCAUSE,
THUMBNAIL = v_thum --,
--MIMETYPE = v_mimeType
where STARNUM = :P1_STARNUM;
end;
Die einzelnen Felder müssen gleich sein |
5. Allgemein Wichtiges
5.1. Classic Report
Report findet man unter:
Regions→Classic Report
Rechts unter Source Findet man auch die SQL Query um den Report zu füllen.
5.2. Diagramme
Diagramme findet man unter Layout → Regions → Chart
Unter Atributes kann man auswählen was für ein Diagramm es sein soll.
Atributes→(rechts) Chart→Type→`Auswahl Diagramtyp`
Unter Series kann man die Diagramme dann "Zeichnen". Wenn man z.B. eine neue Serie erstellt wird eine neue Linie gezeichnet.
Wenn man auf eine Serie Clicky Clicky macht, hat man die Option eine SQL Query einzugeben.
Series→New→(rechts) Source→Type: SQL Query→SQL Query
Beispiel für Linien Diagramm mit SQL Query:
Select umsatz_eur,CONCAT(CONCAT(Monat, ' '), Jahr) AS X from verkauf
Weitere Diagram Queries:
Select "verkaufid", "JAHR", "MONAT", "UMSATZ_EUR", "WERBUNG_TV_EUR", "WERBUNG_ZEITG_EUR", "ANZAHL_VERKAEUFER",
sum(umsatz_eur) over (partition by jahr order by monat rows between unbounded preceding and current row) as kum_umsatz from "VERKAUF"
select CONCAT(CONCAT(Monat, ' '), Jahr) AS X, avg(UMSATZ_EUR) over(order by jahr, monat rows between 1 PRECEDING and 1 following) test from verkauf;
5.3. Process
Um einen Process zu erstellen, geht man unter:
Component View→Page Processing→Process→+
Wenn man dann auf new Clicky Clicky macht, kann man rechts einstellen was der Process machen soll.
In dem PL/SQL Code Block schreibt man was der Process machen soll. Hier z.B. setzt er einen Text in ein Textfield.
Hier wird der Auslöser definiert:
Wenn man aber einen Process After Submit
auslösen möchte, stellt man das hier ein:
5.4. Images
Wenn man Bilder einfügen möchte, geht man rechts oben auf das Zeichen mit den Symbolen.
Location:
<img src="#WORKSPACE_IMAGES#Matt_CPU.jpg" width="800" height="600">
5.5. Redirect
Um einen Link zu erstellen, verwenden wir z.B. einen Report mit einer Column.
Rechts dann unter Identification→Type und dann die gewählte Zeile wählen.
Weiter unten auf der rechten Seite dann unter Link das auswählen was gemacht werden soll.
6. Wichtiges aus dem Doodle Beispiel
Credit: htl-profis-doodle
6.2. Create Tables
SQL Workshop→SQL Commands
Die Befehle nach der Reihe einfügen |
CREATE TABLE abstimmung(
kopfid NUMBER(5, 0) NOT NULL,
name VARCHAR2(100),
CONSTRAINT pk_abstimmung PRIMARY KEY(kopfid)
);
CREATE TABLE abstimmung_position(
kopfid NUMBER(5, 0) NOT NULL,
posid NUMBER(5, 0) NOT NULL,
termin DATE,
CONSTRAINT pk_abstimmung_position PRIMARY KEY(posid),
CONSTRAINT fk_abstimmung FOREIGN KEY(kopfid) REFERENCES abstimmung(kopfid)
)
CREATE TABLE abstimmung_ergebnis(
ergid NUMBER(5, 0),
posid NUMBER(5, 0),
name VARCHAR2(1000),
ergebnis VARCHAR2(1),
CONSTRAINT pk_abstimmung_ergebnis PRIMARY KEY(ergid),
CONSTRAINT fk_abstimmung_position FOREIGN KEY(posid) REFERENCES abstimmung_position(posid),
CONSTRAINT chk_abstimmung_ergebnis CHECK(UPPER(ergebnis) LIKE 'Y' OR UPPER(ergebnis) LIKE 'N')
)
7. Doodle komplett
7.1. Create Application
-
Desktop
-
Name: Doodle
-
Pages: Home-Page löschen
-
Add Page
-
Select Report
-
Add Page
-
Authentication Scheme: No Authentication
-
Date-Formats: optional auch leer sinds ok :)
-
Create Application
7.2. Master Detail Page
-
Create Page
-
Select Form
-
Select Single Page Master Detail
-
Create
-
KOPFID auswählen und in der Default-Section die Sequence angeben
-
Optional: Name links auswählen und als Textfeld
-
Columns von Detail links aufklappen
-
POSID auswählen
-
Vorgang wiederholen - andere Sequence natürlich :)
-
Datepicker auswählen
-
Rechts unter Settings → Show auf Both
7.3. Selbst Abstimmen
-
Neue Page erstellen
-
Report → Interactive Grid
-
Keinen neuen Navigation Entry
-
Create
-
Abstimmen Region links auswählen
-
Vorhandene SQL Query mit Folgender ändern
select ERGID,
POSID,
NAME,
ERGEBNIS
from ABSTIMMUNG_ERGEBNIS
where posid in (select posid from abstimmung_position where kopfid=:P3_KOPFID)
-
In Component View: Neues Page Item erstellen,
-
Region auswählen, gibt ja eh nur eine ;)
-
Columns links aufklappen
-
ERGID auswählen → zu Default
-
POSID auswählen
-
Type zu Select List ändern
-
Bei List of Values als Type SQL Query auswählen
select termin d, posid r from abstimmung_position where kopfid = :P3_KOPFID
d … display
r … return value oder so
-
Save
-
Name auswählen
-
Type zu Textfield ändern
-
Ergebnis auswählen
-
Type zu Select List ändern
-
Bei List of Values als Type Static Values auswählen
STATIC:Ja;Y,Nein;N
7.4. Graph
-
Neue Page erstellen → Chart → Bar
-
Keinen neuen Navigation Entry
-
Soll wie folgt ausschauen:
select null, to_char(TERMIN, 'DD-MM-YYYY') as Termin,
(select count(*) from ABSTIMMUNG_ERGEBNIS erg
where pos.POSID = erg.POSID and erg.ERGEBNIS='Y') as Count
from ABSTIMMUNG_POSITION pos where pos.KOPFID = :P4_KOPFID;
-
Create
-
Optional: Links Series 1 auswählen und umbennenen (z.B. zu Result)
-
Save
-
In Component View: Neues Page Item erstellen,
-
Region auswählen, gibt ja eh nur eine ;)
-
Save
7.5. Auf Page 1 wechseln
-
Abstimmung Region auswählen
-
SQL Query auf Folgende ändern
select name, kopfid, 'Ergebnis' as Ergebnis from abstimmung
-
Columns links aufklappen
-
KOPFID auswählen → Type auf Hidden Column
-
Name auswählen → Type auf Link ändern → No Link Defined Button betätigen und zu folgendem ändern
-
Linktext in der Select List auf das 1. ändern (NAME)
-
Ergebnis auswählen → Type auf Link ändern → No Link Defined Button betätigen und zu folgendem ändern
-
Linktext in der Select List auf das 1. ändern (ERGEBNIS)
Credits für doodle:
-
Jonas Birklbauer
-
Nico Bojer
-
Tarik Hošić