Ok, wenn wir über einen HTML-Button gesprochen haben, meinten wir zwar dasselbe, aber doch irgendwie etwas anderes. Deshalb letzte Woche mein Beispiel mit der URL im Select.
Ich habe meinen Code mal auf dein Select angepasst:
select
'<a href="f?p=&APP_ID.:1:&SESSION.:AUSLEIHEN:NO::P1_BUCH_ID:' || buch.id || '"><img src="#WORKSPACE_IMAGES#ausleihen.gif" alt=""></a>' as Ausleihen,
buch.name Titel
, buch.auflage Auflage
, buch.jahr Erscheinungsjahr
, kategorie.name Kategorie
, buch.typ Typ
, LISTAGG(autor.name, ', ') WITHIN GROUP (ORDER BY autor.name)
AS Autor
, buch.MY_USERS_VORNAME_NAME besitzer
, buch.letzter_besitzer
, buch.AUS_DATUM Ausleihdatum
, buch.ruck_datum Rückgabedatum
Wichtig ist die zweite Zeile. Dort wird per HTMl ein Link erstellt und dann im Report angezeigt. Was du noch brauchst, ist ein Gif Namens ausleihen.gif, oder ähnlich. Sicher kann man es auch mit einem Input-Feld machen, aber da habe ich auf die Schnelle kein Beispiel parat.
Die Zeile setzt wie gesagt einen HTML-Link zusammen, der auf die gleiche Seite 1 verlinkt, den Request "AUSLEIHEN" mitschickt und gleichzeitig das Feld "P1_BUCH_ID" mit dem jeweiligen Wert in dieser Zeile füllt. Das das funktioniert, kannst du dir anschauen, wenn du den Report wie oben beschrieben anlegst, ausführst und dann mal den Quellcode der Seite anzeigst. Dann siehst du ein HTML-Gerüst deines Reports, in dem jede Zeile einen individuellen Wert bekommt.
Nun brauchst du nur noch zwei verschiedene Prozesse, die je nach mitgeschickten Request gestartet werden. Für den Ausleihe-Prozess hier mal ein Beispiel:
Ausleihen:
declare
v_user_name varchar (200);
v_user_id pls_integer;
begin
select vorname || ' ' ||name into v_user_name
from my_users
where upper(name) = upper(sys_context('my_context', 'username'));
select userid into v_user_id
from my_users
where upper(name) = upper(sys_context('my_context', 'username'));
---------------------------------------------------------------------------
--Ausgeliehen von
update buch
set MY_USERS_VORNAME_NAME = v_user_name
, aus_datum = sysdate
, verfuegbarkeit = 0
, fk_user_id = v_user_id
, ruck_datum = null
where id = :P1_BUCH_ID;
end;
Der Code ist beidemale im Editor zusammengestellt, also nicht praktisch getestet. Aber damit kommst du schon voran. :-)
--
Best regards,
Carsten mailto:carsten.cerny@cc13.com
My private gallery and blog [
cc13.com]
NEU: Meetup-Gruppe Oracle Apex Nürnberg [
www.meetup.com]