Inside Oracle APEX auf Deutsch (von Patrick Wolf)

Welche Tabular Form Spalte wird auf welches Apex_Application.g_fxx Array gemapped?

Habt Ihr Euch schon mach gefragt wie Oracle APEX die Spalten einer Tabular From auf die Apex_Application.g_fxx (alias Htmldb_Application.g_fxx, alias WWV_Flow.g_fxx) mapped?

Ich glaube die meisten Entwickler verwenden eine der folgenden Methoden um auf das korrekte Mapping zu kommen:
  • Den generierten HTML Code der Seite ansehen und beim "name" Attribut des INPUT Elements nachsehen was dort steht.
  • In Firebird die "Inspect" Funktion auf das Spalten Feld anwenden um wieder das "name" Attribute auszulesen.
Aber habt Ihr gewusst, dass der Algorithmus den APEX verwendet in Wirklichkeit sehr einfach ist?

APEX nimmt Euer Tabular Form Select Statement und basierend auf der Reihenfolge der Spalten wie sie im Select Statement stehen (nicht in der Reihenfolge wie Ihr sie am Report Attributes Tab sehen könnt!) beginnt es die Spalten zuzuordnen
  1. wenn es sich um eine persistente ("Saves state") Spalte handelt, das bedeutet sie wird als HTML Feld angezeigt und
  2. wenn die "Condition"/"Authorization" aufgeht
dann wird der Feld Zähler inkrementiert.

Hinweis: Wenn Ihr einen "Row-Selector" habt, dann wird dieser IMMER auf g_f01 gemapped!

Beispiel:

SELECT EMPNO, EMPNO AS EMPNO_DISPLAY, FIRST_NAME, LAST_NAME, HIRE_DATE FROM EMP

Nehmen wir an, alle Spalten ausser EMPNO_DISPLAY werden als HTML Felder angezeigt und LAST_NAME hat eine "Condition" welche nicht aufgeht, dann würde das Mapping wie folgt aussehen

EMPNO = g_f01
EMPNO_DISPLAY = nicht gemapped
FIRST_NAME = g_f02
LAST_NAME = nicht gemapped wegen der Condition
HIRE_DATE = g_f03

Wenn wir einen "Row Selector" haben

Row-Selector = g_f01
EMPNO = g_f02
EMPNO_DISPLAY = nicht gemapped
FIRST_NAME = g_f03
LAST_NAME = nicht gemapped wegen der Condition
HIRE_DATE = g_f04

Aber wenn Ihr Euch mit dem Mapping nicht herumärgern wollt, wo Ihr auch immer Conditions/Berechtigungen berücksichtigen müsst, dann schaut Euch vielleicht mal das Plug & Play Tabular Form Handling des ApexLib Framework an.

Labels: , ,