APEX 19.1 Interactive Grid (IG) - zusätzliche Spalten

Mit Version 19.1. werden die IG in APEX noch besser benutzbar (Detail u.a. bei Carsten hier: https://blogs.oracle.com/apex/new-declarative-options-for-interactive-grid)

Ein Problem bleibt:
Wenn über der Tabelle myTAB1 das IG aufgesetzt wird funktioniert alles super.
Will man aus myTAB2 weitere Daten auch nur anzeigen wirds schwierig: APEX reklamiert fehlende Berechtigungen für myTAB2, obwohl es hier nur select-Rechte benötigt.

Also ein select für das Grid auf eine Tabelle ist kein Problem:

SELECT Col1_A
     , Col1_B
     , Col1_C
  FROM myTAB1;


Soll aus myTAB2 z.B. eine Summe angezeigt werden, wirds spannender:

SELECT Col1_A
     , Col1_B
     , Col1_C
     , D.Anz
  FROM myTAB1
       JOIN (  SELECT Col2_A, COUNT (*) Anz
                 FROM myTAB2
             GROUP BY Col2_A) D
          ON D.Col2_A = myTAB1.Col1_C;

Folgende ToDo's helfen:
Grid-Eigenschaften
1) Spalte auf "Query Only" setzen (Spalte -> Source / Query Only = Yes)
2) ggfs. Spalte auf "Display only" setzen (Spalte -> Identification / Type = Display only)
Prozess-Eigenschaften:
3) Row-Locking abschalten (Prozess -> Settings / Lock Row = No)



Hat APEX keine Schreibrechte auf myTAB2 (und soll/darf diese auch nicht bekommen) geht es so leider nicht. Meine Lösung:

Grid wieder auf "einfach SQL" setzen:

SELECT Col1_A
     , Col1_B
     , Col1_C
     , col1_D
  FROM myTAB1;

Dann zusätzlich eine Spalte anlegen (Create Column). Diese mit "Display only" und "Query only" erstellen. Als Source aber SQL Expression (statt Database Column) einstellen. Damit wird diese Spalte wirklich nur gelesen, weitere Rechte sind nicht nötig.
Als Column-SQL sowas eintragen:

(
WITH sel AS
    (
    SELECT Col2_A
         , Col2_B
      FROM myTAB2
    )
SELECT sel.Col2_B
  FROM sel
 WHERE sel.Col2_A = Col1_C
)

Wobei Col1_C den "Link" zur Grid-Abfrage herstellt.
Das äußere Select darf nur eine Spalte zurückgeben.
Das Ganze muss in Klammern gesetzt sein, sonst ist es kein SQL Expression.

Evtl. geht das auch einfacher. Entsprechende Hinweise gern als Kommentar hinterlassen.

Damit klappts auch mit Zusatzspalten :-)

Kommentare

Beliebte Posts aus diesem Blog

trunc(sysdate) - nette Spiele mit dem Datum

Zufallszahlen und -text generieren - DBMS_RANDOM

Laufzeiten umrechnen, Sekundenangaben lesbar darstellen