Eigenen Valuelist Provider definieren
Manchmal benötigt man in Auswahlfeldern (Combobox) nur eine bestimmte Menge aller Daten, die zur Auswahl angeboten werden sollen. Diese sollen sich dann abhängig eines anderen ausgewählten Wertes zusammensetzen.
Anwendungsbeispiele:
- Auswahl einer KFZ Marke. In einer Combobox sollen die entsprechend passenden Modelle zur Auswahl stehen.
- Auswahl eines Gebäudes. In einer Combobox sollen alle dazugehörigen Räume zur Auswahl stehen.
- etc.
Dieses Verhalten kann in Nuclos mit Hilfe von Datenquellen realisisert werden.
Fallbeispiel: Artikel eines Lieferanten
In den Stammdaten einer Anwendung gibt es Lieferanten, die eine bestimmte Produktpalette im Angebot haben. Diese Produktpalette ist in einem Unterformular des Lieferanten organisiert.
In der Bestellung wird nun ein Lieferant ausgewählt. Im Unterformular der Bestellung sollen dann die bestellten Artikelpositionen eingetragen werden können. Dabei sollen in der Combobox für die Auswahl des Artikels nur Artikel auswählbar sein, die auch zu diesem Lieferanten gehören.
Um das zu realisieren, gehen Sie folgendermassen vor:
[Bearbeiten] Schritt 1: Definition der Datenquelle
Menüaufruf: (Administration) - (Datenquellen) - (Valuelist Provider)
In einer neuen Datenquelle (ValuelistProvider) wird das Statement erzeugt, dass die Daten für den Valuelist Provider zur Verfügung stellt. Dabei werden folgende Spaltendefinitionen benötigt (im Screenshot von Links nach Rechts):
- INTID der Entität, die für die Abfrage die Bedingung liefert. Im Beispiel ist das also die ID des Lieferanten, für den die Abfrage die jeweiligen Artikel liefern soll. Als Bedingung muss hier ein Parameter übergeben werden, dessen Wert dann später im Layout entsprechend übergeben wird (siehe Schritt 2). Der Parameter muss in der Datenquelle auch definiert werden (links unten).
- INTID der Entität, die das Ergebnis der Abfrage darstellt. Die ID ist deshalb wichtig, damit neben dem Wert auch die Referenz abgespeichert wird. Im Beispiel ist das die INTID des Artikels.
- Wert der Entität, die das Ergebnis der Abfrage darstellt. Dieser Wert wird im Zielfeld dargestellt. Im Beispiel ist das die Artikelnummer.
- ...evtl. weitere Abfragebedingungen, je nach Anwendungsfall
Diese Einstellungen ergeben dann folgende Datenquelle:
[Bearbeiten] Schritt 2: Layouteditor -> Valuelist Provider im Zielfeld einrichten
In den Eigenschaften des Zielfeldes (im Beispiel das Feld Artikel) müssen Sie nun folgende Einstellungen vornehmen:
40px Achtung: Stellen Sie das Layout auf Expertenmodus um den Valuelist Provider eintragen zu können.
- Komponenten Typ muss auf combobox stehen
- Valuelist-Provider: Tragen Sie hier die Eigenschaften des eben angelegten Valuelist Providers ein. Name des Valuelistprovider: in der Auswahlliste stehen alle verfügbaren Valuelist Provider zur Auswahl. ID Feld: die INTID des Ergebniswertes der Abfrage. Anzeigename: die als Anzeigename definierte Spalte des Abfrageergebnisses. Parameter Name/Wert: hier können Sie bei Bedarf einen festen Wert an die Abfrage übergeben.
Im Beispiel sieht das dann so aus:
[Bearbeiten] Schritt 3: Layoutregel anlegen
Definieren Sie nun auf dem Ausgangsfeld eine Regel:
Ereignis: Wenn Wert sich ändert
Aktionstyp: Werteliste aktualisieren
Entität: Entiät der Zielkomponente, falls es sich um ein Unterformular handelt. Wenn sich das Zielfeld in der gleichen Entität befindet, bleibt dieses Feld leer.
Zielkomponente: Feld (Combobox), dessen Werte aktualisiert werden sollen.
Parameter: Parametername, der in der Datenquelle definiert wurde als Bedingung definiert wurde.
Im Beispiel sieht diese Einstellung so aus:
Nun haben Sie die Werte in der Combobox entsprechend eingeschränkt.
[Bearbeiten] Vordefinierte Valuelist Provider
[Bearbeiten] status
Dieser ValuelistProvider wird verwendet, um die Werteliste (Attribut für Status) des Statusfeldes auf bestimmte Entitäten einzugrenzen.
Eigenschaften der Komponente bearbeiten:
Parameter Name | Parameter Value |
---|---|
entitäten | Name der Entität(interner Name) |
[Bearbeiten] process
Dieser ValuelistProvider wird verwendet, um die Werteliste (Attribut für Aktion) des Aktionsfeldes auf bestimmte Entiäten einzugrenzen.
Eigenschaften der Komponente bearbeiten:
Parameter Name | Parameter Value |
---|---|
entitäten | Name der Entität (interner Name) |
[Bearbeiten] parameters
In Spaltendefinitioinen von Unterformulardaten lassen sich mit diesem ValuelistProvider Wertelisten hinterlegen.
Parameter Name | Parameter Value |
---|---|
showValue | Wert, der angezeigt werden soll |
Ergebnis: