Back to Sagegmbh

Datenquellen

wiki-spaces-s1-pages-402882591-datenquellen.md

latest20.5 KB
Original Source

Datenquellen

By Andreas Langmaack (Unlicensed)

Apr 25, 2024

13 min

Add a reaction

Datenquellen sind die Basis von Elementen mit lesenden Daten. Die Datenquellen können manuell angelegt, als SQL-Abfrage oder als Tabelle importiert werden. Für den Tabellenimport stehen nur Tabellen zur Verfügung, die in der Datenbank in der Tabelle "USysCatalog" eingetragen sind.

In der Regel werden die Daten via SQL-Anweisung ermittelt. Ist dies nicht möglich können die Daten auch via Geschäftsprozess verändert oder ermittelt werden.

Datenquellen können den folgenden Elementen zugeordnet werden:

  • Listen-Element

  • Diagramm-Element

  • Baum-Element

  • Links

  • Pivot-Element

  • Berichte

Eigenschaften Datenquellen

|

Bereich

|

Eigenschaft

|

Wert

| | --- | --- | --- | |

Allgemeines

|

Name

(Name)

|

Name der Datenquelle

| |

|

Titel

(Title)

|

Titel der Datenquelle

| |

Ab Version

(9.0.6)

|

Tooltipp
(Tooltip)

|

Optionaler Tooltipp des Feldes

wird in Listen- und Baum-Elementen angezeigt

| |

|

Verweise auf benutzerdefinierte Felder

(UserDefinedFieldsSources)

|

Verweisliste auf im Administrator definierte benutzerdefinierte Felder (Definition in Tabelle „USysSetup“, Einträge "Tree"="UserFields"; z.B. "Adresse" oder "Artikel"), die dem Anwender zur Verfügung stehen sollen:

  • Name (OL-Klasse): (siehe Tabelle "UsysSetup", Spalte "Token" (z.B. "Adressen", "Artikel" oder "VKBeleg")

  • Abweichende Tabelle: Optional ein abweichender Tabellenname für die Felderliste (Verwendung für Sonderfälle, in denen die Tabelle von der über die Tabelle "USysSetup" definierten Tabelle abweicht, z.B. bei den "tKHK"-Belegtabellen beim Druck oder auch bei verschachtelten Abfragen)

Achtung: Die Definition wird bei Diagramm- und Pivot-Elementen nicht genutzt.

| |

Ab Version (9.0.4)

|

Verweise auf benutzerdefinierte Felder ignorieren

(IgnoreUDFSourcesForDataFilter)

|

Verweisliste auf im Administrator definierte benutzerdefinierte Felder (Definition in Tabelle "USysSetup"):

  • Name (Verweise auf benutzerdefinierte Felder):
    Name (siehe Tabelle "USysSetup" , Spalte "Token" (z.B. "Adressen", "Artikel" oder "VKBeleg")

Die Definition dient dazu, einzelne bei "Verweise auf benutzerdefinierte Felder" definierte Verweise für die Berücksichtigung bei den benutzerabhängigen Datenfiltern auszuschließen.

| |

Ab Version (9.0.1)

|

Partner-Kennung Sachmerkmal-Klasse

(SMLClassPartnerId)

Lösungs-Kennung Sachmerkmal-Klasse

(SMLClassPackageId)

Name Sachmerkmal-Klasse

(SMLClassName)

|

Partner-Kennung, Lösung, Name der Sachmerkmal-Klasse

| |

Ab Version (9.0.1)

|

Schlüsselfeld Sachmerkmal-Klasse

(SMLClassKeyField)

|

Feld in dieser Datenquelle, welches für den Schlüsselvergleich mit den Suchergebnis-Schlüsseln der Sachmerkmal-Klasse verwendet wird.

Feld in dieser Datenquelle, welches für den Schlüsselvergleich mit den Schlüsseln der Sachmerkmal-Klasse verwendet wird.

| |

|

Anhängen an Datenquelle der Partner-Kennung

(AppendToPartnerId, AppendToPackageId)

|

Partner- und Lösungs-Kennung der gleichnamigen Datenquelle, an der diese Definition angehängt werden soll;

Einsatzzwecke:

  • Eigenschaften von Datenquellen erweitern (anhängen)

  • zusätzliche Felder an die Datenquelle anhängen

  • Eigenschaften von Standardfeldern überschrieben

Hinweis: Anhängen ist immer einstufig, Verkettungen sind nicht möglich.

| |

|

Kommentar

(Comment)

|

Beliebiger Kommentar zur Dokumentation.

Der Kommentar wird nicht zum Client übertragen und dient nur zur Dokumentation von Besonderheiten, Hinweisen, etc. Bei Auslieferung/Weitergabe der Lösung wird der Kommentar eingeschlossen, so dass der Empfänger ihn im AppDesigner sieht.

| |

SQL

|

globale Datenbank verwenden?

(UseGlobalDatabase)

|

Soll die globale Datenbank (anstelle der Mandanten-Datenbank) verwendet werden?

| |

|

SQL-Tabellen

(Tables)

|

Tabelle(n) (Komma-separiert) oder komplette JOIN inkl. ON (ist „SQL-Tabellen“ leer, erfolgt keine SQL-Abfrage und es wird nur eine leere Datenquelle mit den definierten Datenfeldern aufgebaut. Das Füllen der Datenquelle muss in diesem Fall von einem Geschäftsprozess übernommen werden und ein Listen- oder Baum-Element, das diese Datenquelle verwendet, unterstützt keine Permanentfilter)

Hinweis: Sollen benutzerdefinierte Felder genutzt werden, sind hier nur Tabellennamen und diese nur ohne Alias zulässig

| |

|

SQL-Distinct verwenden?

(UseDistinct)

|

Soll die Abfrage als SQL-DISTINCT ausgeführt werden. Bei der Verwendung ist die Performance zu prüfen.

| |

|

SQL-Top-Wert

(SqlTop)

|

Default-Anzahl der Datensätze:

  • 0: kein TOP

  • >0: TOP konfigurierbar

| |

|

SQL-Where-Bedingung

(WhereClause)

|

SQL-Where der Abfrage

| |

|

SQL-Where-Bedingung für alle Knoten (Ab Version 9.0.4)

(WhereClauseAllNodes)

|

SQL-Clause, die alle Knoten eines Baum-Elementes lädt

Hinweis: Nur für Datenquellen von Baum-Elementen, wenn dort das Attribut "LoadSubNodesOnExpand" = True ist.

Erweiterungen können bei angehängten Datenquellen (siehe „AppendToPartnerId“ und „AppendToPackageId“) definiert werden. Sie müssen mit "AND" bzw. "OR" beginnen und korrekt geklammert sein. Die SQL-Clause, an die angehängt wird, wird automatisch in Klammern gesetzt.

| |

|

SQL-Gruppierung

(GroupBy)

|

Group By der Abfrage

| |

|

Sortieren nach Feld

(SortFieldName)

|

Name des Feldes für die Default-Sortierung.

Bei Diagramm-Elementen wird hierüber die (nicht im UI anpassbare) Sortierung im Diagramm definiert.

Bei Berichten ist dies die Standard-Sortierung, die über den Parameter "$SortFieldName“ übersteuert werden kann.

| |

|

Absteigend sortieren?

(SortDesc)

|

Mit dieser Eigenschaft kann die Sortierreihenfolge des Feldes aus der Eigenschaft "Sortieren nach Feld" überschrieben werden (alle angegebenen Felder werden absteigend sortiert).

| |

|

Ergänzende Sortierung

(AdditionalOrder)

|

Ergänzende Sortieranweisung in Form einer Liste (wird automatisch an die bei den einzelnen Feldern definierte Sortierung angehängt, um immer gleichlautende Unter-Sortierungen nicht bei jedem Feld angeben zu müssen; doppelte Sortierungen werden entfernt, wenn das Sortierfeld des Feldes bereits ein solches Sortier-Kriterium besitzt):

  • angegeben werden jeweils Feldname (d.h. ein Feld-Verweis; „Name“) und „ASC“ bzw. „DESC“ für aufsteigende bzw. absteigende Sortierung (nachfolgende Felder definieren jeweils Untersortierungen; „Direction“)

  • im Beispiel „f1;ASC;f2;DESC“ wird zunächst nach Feld „f1“, danach nach Feld „f2“ sortiert

  • soll ein Feld, das für die Sortierung benötigt wird, ausschließlich hierfür benutzt werden und nicht angezeigt werden, ist es mit „IsInternal“ zu markieren

  • wenn leer, ist keine Sortierung der Spalte möglich

Achtung: Da der SQL-Datentyp Text nicht sortiert werden kann, muss der Inhalt eines solchen Feldes bei Bedarf mit „CONVERT(varchar(max), feldname)“ explizit konvertiert werden, was allerdings Performance-relevant ist

| |

|

Ergänzende Sortierung absteigend

(AdditionalOrderDesc)

|

Ergänzende Sortieranweisung für absteigende Sortierung analog zur normalen ergänzenden Sortieranweisung;

die ergänzende absteigende Sortierung erfolgt normalerweise mit der ergänzenden Sortieranweisung in „AdditionalOrder“ und umgekehrter Sortierung für das erste Feld („DESC“ statt „ASC“ bzw. „ASC“ statt „DESC“) – nur wenn dies nicht gewünscht ist, ist „AdditionalOrderDesc“ erforderlich

| |

|

SQL-Where-Bedingung für Child-Elemente

(ChildWhereClause)

|

SQL-Clause-Erweiterung bei Einsatz als Child-Part (d.h. bei Einsatz als Drilldown-Part bzw. als Detail-Part in einem Master-Detail-Part. Ist bei Pivot-Elementen und Links nicht relevant).

| |

Geschäftsprozess

|

Geschäftsprozess

(BusinessProcessPartnerId, BusinessProcessPackageId, BusinessProcessName)

|

Partner-Kennung, Lösungs-Kennung und Name des Geschäftsprozesses

| |

|

SQL-Sortierung vor Geschäftsprozess-Aufruf?

(BusinessProcessOrderBefore)

|

SQL-Order-String, der anstelle des normalen Order-Strings bei der ersten Ermittlung der Daten verwendet wird, um eine definierte Sortierung für den Geschäftsprozess zu gewährleisten.

Hinweis: In diesem Fall werden intern immer alle Datensätze vom SQL-Server geladen, was bei großen Datenbeständen zu Performance- und ApplikationServer-Speicher-Problemen führen kann. Die Anwendung dieser Einstellung sollte daher speziellen Fällen vorbehalten bleiben.

| |

|

Geschäftsprozess-Parameter

(BusinessProcessParameters)

|

Parameterliste für Parameter -gesteuerte Geschäftsprozesse (mit Eigenschaft "IsParameterControlled" = True).

  • Parametername

  • Parameterwert

Die Parameter überschreiben die Werte gleichnamiger Parameter des durch "BusinessProcessName" referenzierten Geschäftsprozesses. Ist der Parameter im referenzierten Geschäftsprozess nicht vorhanden, wird er ignoriert.

Die Parameter stehen zur Laufzeit im Geschäftsprozess in der Eigenschaft "IBusinessProcess.Parameters" zur Verfügung.

| |

|

Geschäftsprozess vor SQL-Abfrage aufrufen?

(CallBusinessProcessBeforeSql)

|

Soll der Geschäftsprozess vor der SQL-Abfrage aufgerufen werden? Dieser muss dann Daten in einer Tabelle erzeugen, die von der SQL-Abfrage verwendet wird.

Anmerkungen für Berichte:

Der vorlaufende Geschäftsprozess wird nur für die Hauptdatenquelle des Berichtes aufgerufen.

Der vorlaufende Geschäftsprozess kann eine Positiv-Liste der genutzten Neben-Datenquellen zurückgeben. In diesem Fall werden dann alle anderen Datenquellen bei der nachlaufenden Verarbeitung ignoriert, wodurch sich die Performance erhöht. Diese Funktionalität wird insbesondere beim Druck der Wawi-Korrespondenzbelegen genutzt.

| |

Summenzeile

|

Summenzeile

(TotalLine)

|

Soll eine Summenzeile angezeigt werden? (nur für Listen-Elemente sowie bei „Berechnungsmodus Zusammenfassungsrubrik“ = „Rückwärtsberechnung über Summenzeile" in Diagramm-Elementen)

0 = keine Summenzeile

1 = automatische Ermittlung gemäß Feld-Attributen (präferierte Methode für alle einfachen Fälle). Die SQL-Abfrage wird auf Basis des Datenquellen-Feld-Attributes „Art der Summenzeilen-Addition“ automatisch erzeugt. Es werden nur die Felder in die SQL-Feldliste aufgenommen, die über „Art der Summenzeilen-Addition“ entsprechend markiert sind.

2 = Ermittlung der Summenzeile durch den Geschäftsprozess (es wird lediglich eine Summenzeile mit leeren Feldern erzeugt).

Anmerkungen: In der Summe werden immer alle Datensätze berücksichtigt.

| |

Schlüsselfelder

|

Schlüsselfeld 1-9

(KeyFieldName1-9)

|

Feldname der Keyfelder

Es darf keine Lücken geben. Die Keyfelder sind in der Reihenfolge 1 bis 9 zu vergeben.

Verwendung in

  • Kontextmenüs via Platzhalter $[KeyField()] oder $[ParentKeyField()]

  • Daten-Edit-Elementen als Keyfelder für "Datensatz bearbeiten" (Auswahl aus Navigationsliste)

Werte ab Schlüsselfeld 2 werden ignoriert, wenn die Datenquelle in einem das Listen-Element verwendet wird, das als Unterelement in einem Selektions-Element-Feld verwendet wird.

| |

Lizenzierung

|

Lizenz-Kürzel

(LicenseTokens)

|

Applikationskürzel der zu prüfenden Lizenz (nur in Nicht-Sage-Lösungen verwendbar und änderbar)

| |

|

Lizenz-Kürzel für Sage

(SageLicenseTokens)

|

Applikationskürzel der zu prüfenden Lizenz (nur in Sage-Lösungen verwendbar und änderbar)

|

Eigenschaften Datenquellenfelder

|

Bereich

|

Eigenschaft

|

Wert

| | --- | --- | --- | |

Allgemeines

|

Feldname

(Name)

|

Eindeutiger Feldname (muss eine korrekte SQL-Feldbezeichnung sein, da der Wert direkt für den Alias-Namen der SQL-Abfrage benutzt wird). Der Feldname ist für Anwender nicht sichtbar.

| |

|

Feldtitel

(Title)

|

Titel des Feldes (für den Anwender sichtbar, ist z.B. die Spaltenüberschrift in Listen-Elementen)

| |

|

Feld-Attribute anhängen?

(DoAppendTo)

|

Sollen Eigenschaften an das gleichnamige Feld der in "Anhängen an..." referenzierten Datenquelle angehängt werden?

Hinweis: diese Eigenschaft ist nur editierbar, wenn in der Datenquelle in der Eigenschaft "Anhängen an Datenquelle der Partner-Kennung" eine gültige Kombination aus Name, PartnerId und LösungsId hinterlegt ist (der Name muss identisch dem Metadatenobjekt sein, an dem man sich Anhängen möchte).

| |

|

Priorität

(Precedence)

|

Priorität des Datenfeldes zur Nutzung bei wenig Platz zur Anzeige:

0 = keine Priorität

1 bis n = aufsteigende Priorität (1 ist die höchste Priorität)

| |

|

nur Filter-Feld?

(IsOnlyForFilter)

|

Das Feld soll nicht in der SQL-Select-Klausel verwendet werden, d.h. es wird nur im Filter verwendet und steht weder für einen Geschäftsprozess noch für ein Oberflächen-Element zur Verfügung. Bei Verwendung von Aggregat-Funktionen muss das Feld dann aber in die Group-By-Klausel aufgenommen werden der Geschäftsprozess ist nachfolgend für eventuell erforderliche Datenbereinigungen verantwortlich.

| |

|

internes Feld?

(IsInternal)

|

Datenfeld ermitteln, aber nicht nach außen (Oberflächen-Element) geben (falls das Feld nur als Basis für Berechnungen in einem Geschäftsprozess genutzt werden soll)

| |

|

berechnetes Feld?

(IsFieldCalculated)

|

Für Geschäftsprozess-Datenermittlung (bei vordefinierten parametergesteuerten Geschäftsprozessen wird dieser Wert in der Definition des Geschäftsprozesses festgelegt).

Datenfeld wird berechnet, daher werden die Datensätze

  • erst nach der Berechnung sortiert, wenn nach diesem Feld sortiert wird,

  • nach der Berechnung nochmals gefiltert, wenn nach diesem Feld gefiltert wird, und

  • es werden alle Datensätze ermittelt und nach der Berechnung, ggf. abgeschnitten, wenn nach diesem Feld gefiltert wird oder dieses Feld in der Summenzeile vorkommt.

Hinweis: In diesem Fall werden (sobald der Anwender nach dem Feld filtert oder sortiert) intern immer alle Datensätze vom SQL-Server geladen, was bei großen Datenbeständen zu Performance- und ApplikationServer-Speicher-Problemen führen kann. Besser ist daher die SQL-Server-seitige Berechnung. Alternativ kann das Feld auch nicht für Sortierung und Filterung angeboten werden.

| |

SQL

|

SQL-Abfrage

(SqlQuery)

|

SQL-Abfrage für das Feld (im einfachsten Fall der Feldname der Tabelle).

Bei Abfragen mehrerer Tabellen muss der Tabellenname vorangestellt werden. Unterabfragen sind möglich, Alias darf hier nicht angegeben werden, da dafür „Feldname“ verwendet wird.

Muss leer sein, wenn „SQL-Tabellen“ der Datenquelle auch leer ist, ansonsten erforderlich (das Füllen der Datenquelle wird dann von einem Geschäftsprozess übernommen).

| |

|

SQL-Abfrage ist ein Aggregat

(IsSqlQueryAnAggregate)

|

Markierung von SQL-Abfragen, die ein Aggregat enthalten und daher über die SQL-HAVING-Suchbedingung gefiltert werden müssen.

Darf nicht zusammen mit „Filter in innerer Abfrage anwenden?“ gesetzt werden.

| |

Datentyp

|

Datentyp

(DataType)

|

Datentyp:

  • 1 = Boolean

  • 2 = Integer

  • 3 = Decimal

  • 4 = Date

  • 5 = String

  • 6 = DateTime

  • 7 = Time

  • 8 = Duration

  • 15 = indizierter String

  • 16 = indiziertes Bild

  • 23 = Currency

  • 100 = Schlüssel einer Datenklasse

(wird intern als Datentyp „String“ behandelt (z.B. in Makros), unabhängig vom konkreten Datentyp des Schlüssels in der Datenklassen-Definition bzw. der Datenbank)

Indizierter String und indiziertes Bild stehen bei der Nutzung in Diagramm-Elementen nicht zur Verfügung.

| |

|

Datentyp-Ergänzung

(DataTypeIndexedInfos)

|

Liste mit Key sowie mit "PackageId", "PartnerId", "Name" und "Id" zur Referenzierung eines Strings aus "StringResources.xml";

bei Datentyp 16 (indexed Image) zusätzlich:

  • "Value" als Verweis auf ein Bild in „Shared\Bitmaps\UI“ (bei Datentyp 15 (indexed String) leer; "empty" = leere Anzeige, d.h. kein Icon; Dateinamen ohne Erweiterung, Standard ist automatisch hier ".png")

Anzeigereihenfolge gemäß der Liste

Tipp:

  • Soll eine Liste fester Texte (analog Werteliste im Aufgabencenter) verwendet werden, kann stattdessen eine Datenreferenz mit "FROM (VALUES ..." erstellt werden.

| |

|

Datenklasse

(DataClassPartnerId, DataClassPackageId, DataClassName)

|

Leer oder gültiger Verweis auf eine Datenklasse.

Wird nur bei Datentyp = "Schlüssel einer Datenklasse" freigeschaltet und ist dann ein Pflichtfeld.

| |

|

Nachkommastellen

(DecimalPlaces)

|

Anzahl Nachkommastellen

-1 = variable Nachkommastellen (d.h. Nachkomma-Nullen ausblenden)

für mehr als 4 Nachkommastellen ist der Datentyp "FLOAT" in der SQL-Datenbank erforderlich;

Wird nur bei Datentyp = "Decimal" oder "Schlüssel einer Datenklasse" (mit Datentyp Decimal) freigeschaltet und ist dann ein Pflichtfeld.

| |

|

Nachkommastellen-Definition in übergeordnetem Element?

(IsDecimalPlacesDefinitionInParent)

|

Erfolgt die Definition der Anzahl der Nachkommastellen über ein Feld des jeweils übergeordneten Elementes (bzw. deren jeweiligen Datenquelle)?

| |

|

Nachkommastellen gemäß Feld

(DecimalPlacesDefinedByField)

|

Name des Feldes, das zur Laufzeit die Anzahl der Nachkommastellen enthält.

das referenzierte Feld muss Int16, Int32 oder Indexed String als Datentyp haben;

Wird bei Berichten nicht verwendet.

  • bei angehängten Feldern (siehe „DoAppendTo“) wird der Wert verwendet, da das benutzerdefinierte Feld keine Festlegung enthält (beim Anhängen aus mehreren Lösungen heraus aber nur für die Lösung mit der niedrigsten Partner-/Lösungs-ID); nicht für Kombinationsfelder

| |

|

Datenreferenz

(DataReferencePartnerId, DataReferencePackageId, DataReferenceName)

|

Partner-Kennung, Lösungs-Kennung und Name für die Datenreferenz, die als Grundlage für ein Auswahllisten-Eingabefeld (z.B. bei Filtern oder Stammdaten) dienen soll.

Hinweis: über „Filterwert 1“ kann auch ein Default-Wert für Filter gesetzt werden.

Zulässig nur für Datentypen 1 (Boolean), 2 (Int32) und 5 (String).

| |

Filterung

|

Filtertyp

(FilterType)

|

Default-Wert Filterdefinition:

  • -1 = kein Filter möglich (nur für Sonderfälle)

  • 0 = kein Standard-Filter

  • 1 = Filter „gleich“

  • 2 = Filter „ungleich“

  • 3 = Filter „größer“

  • 4 = Filter „größer-gleich“

  • 5 = Filter „kleiner“

  • 6 = Filter „kleiner-gleich“

  • 7 = Filter „beginnt mit“ (ähnlich „LIKE“)

  • 8 = Filter „zwischen“

  • 9 = „Berechneter Filter“ (z.B. letzte n Tage)

  • 10 = Mehrfachselektion

  • 11 = Filter „enthält“ (ähnlich „LIKE“)

  • 12 = Filter „ist leer“ (Prüfung auf NULL)

  • 13 = Filter „ist nicht leer“ (Prüfung auf Nicht-NULL)

Die Filtertypen -1 und 0 sind immer zulässig.

Bei Datenreferenzen (Eigenschaft „Datenreferenz*“) sind zusätzlich unabhängig vom Datentyp die Filtertypen 1 und 10 zulässig.

In allen anderen Fällen sind abhängig vom Datentyp folgende Filtertypen zulässig:

  • 1 für alle Datentypen

  • 2, 3, 4, 5, 6, 8, 9, 12 und 13 für alle Datentypen außer „indizierter String“ und „indiziertes Bild“

  • 7 und 11 nur für „String“

  • 10 nur für „Boolean“, „indizierter String“ und „indiziertes Bild“

| |

|

Filterwert 1

(FilterValue1)

|

Default-Wert für Filter (automatische Konvertierung in Datentyp, Gleitkommawerte mit Punkt, Datum im ISO-Format ("yyyy-mm-dd"); , bei Like-Filtern muss "%“ enthalten sein, bei Multiselect Semikolon-separierte Liste)

Bei gesetztem Wert, wird automatisch ein Permanent-Filter für das Feld erzeugt und aktiviert.

| |

|

Filterwert 2

(FilterValue2)

|

Zweiter Default-Wert für den Zwischen-Filter (Formatierung analog „FilterValue1“).

Freigeschaltet nur bei Filtertyp 8 und dann ein Pflichtfeld.

| |

|

Filter in innerer Abfrage anwenden?

(UseFilterInInnerClause)

|

Soll der Filter in einer inneren SQL-Abfrage angewendet werden? Bei Nein wird der Filter an die normale SQL-Where-Bedingung angehängt. Bei Ja wird der Filter nicht an die normale SQL-Where-Bedingung angehängt, sondern steht über den Platzhalter „$[InnerClause]“ (siehe Platzhalter für Metadaten) zur Verfügung.

Dieses Attribut wirkt sich nur auf den "Permanent-Filter" und nicht auf den zur Laufzeit zusätzlich möglichen Adhoc-Filter aus.

| |

|

Titel berechneter Filter

|

Collapse action bar

View all comments

Open Details Panel

Create page

Open Rovo Chat

Add a comment

Add a reaction