Skip to main content
Skip table of contents

p$TDV:SMPAPI:L_xTabel


p$TDV:SMPAPI:L_xTabel

Erweiterte Suche in einer beliebigen Datenbanktabelle oder Abfrage (siehe auch den Datenaustausch mit Anwender-Datenbanken über den SalesManager NG). Im Unterschied zu p$TDV:SMPAPI:L_Tabell können hier direkt SQL-Suchvorgaben („Where-Klausel") sowie eine Sortierung „Order By" angegeben werden. Alternativ ist auch die Angabe eines vollständigen SQL-Befehls möglich.

Die Bestimmung der zu lesenden Datensätze (d.h. der Suchvorgabe) kann auf mehrere Arten erfolgen:

·über eine Parametergruppe (Übergabeparameter SuchPG). Diese Parametergruppe muss mit dem Typnamen der Parametergruppe, die die Datenbanktabelle beschreibt, definiert sein. Die Werte in dieser Parametergruppe werden als Suchvorgabe (mit „gleich") verwendet. Ein Parameter im Zustand LEER bewirkt keine Einschränkung der Suche. Eine Suche mit Platzhaltern („Wildcards") ist hier im Gegensatz zu den folgenden Punkten nicht möglich.

·Tipp: Die Definition der für den Datenaustausch benötigten Parametergruppe erfolgt am einfachsten mit Hilfe der ePOS-Menüfunktion „Datei - Import - ODBC Tabelle".

·über die Angabe einer Where-Klausel. Hier kann die vollständige SQL-Syntax verwendet werden. Die Angabe erfolgt ohne das Schlüsselwort Where (siehe Beispiele). Diese Vorgabe kann auch mit der SuchPG kombiniert werden. Die eigentliche Where-Klausel wird dann intern aus beiden Vorgaben zusammengesetzt.

·Tipp: Über die Funktionen p$TDV:SMPAPI:SVNVglx und p$TDV:SMPAPI:SVTVglx kann die Where-Klausel auch „automatisch" zusammengesetzt werden. Dies ist nicht nur für Anwender ohne SQL-Kenntnisse sinnvoll.

·innerhalb eines vollständigen SQL-Befehls mit allen Funktionalitäten, die die angeschlossene Datenbank bereitstellt.

·Bitte beachten: wenn ein vollständiger SQL-Befehl übergeben wird (d.h. der Übergabeparameter ist ungleich ’’), werden die Übergabeparameter SuchPG, SQLWhere und SQLOrder ignoriert.

Abhängig von den Suchkriterien können ein oder mehrere Datensätze gefunden werden. Diese Datensätze werden in die über DatenPG gegebene Parametergruppe geschrieben. Damit mehrere Datensätze gespeichert werden können, sollte diese PG einfach indiziert sein. Die Anzahl der gefundenen Datensätze wird (indirekt) in dem über NameAnzahl übergebenen Parameternamen zurückgegeben.

Bei Suche und Sortierung wird im Regelfall bei SalesManager NG-Datenbanken nicht zwischen Groß- und Kleinschreibung unterschieden. Im Einzelfall mag es jedoch hiervon Abweichungen geben.

Beachten Sie bitte, dass Textwerte in der Where-Klausel immer in das Zeichen „’" (gerades Hochkomma) eingeschlossen werden - genau wie in der Entscheidungstabelle. Wenn das Zeichen „’" daher in den Text selbst aufgenommen werden soll, muss ihm das Zeichen „\" vorangestellt werden, z.B.:

SQLWhere = ’Gebiet = \’Hessen\’ and Umsatz > 200000’


Bitte beachten:

·Der Parameter SQLBefehl kann auch als Zeichenketten-Feld definiert sein. Die einzelnen FeldIndizes werden dann intern zu einem Befehlstext zusammengesetzt.

·Die Parametergruppen, die in DatenPG und SuchPG übergeben werden, sowie die Parameter, die in NameAnzahl und SQLBefehl übergeben werden, werden indirekt in einer Zeichenkette übergeben, also in Anführungszeichen eingeschlossen. Außerdem müssen die Definitionen global sein!

Dies könnte wie folgt aussehen:

Syntax:

Status = p$TDV:SMPAPI:L_xTabel( DatenPG, Tabelle, SuchPG, NameAnzahl, SQLWhere, SQLOrder, SQLBefehl )

 

Argument

Typ

Bedeutung

 

DatenPG

Zeichenkette

Name einer Parametergruppe mit den zu lesenden Daten; die PG ist i.d.R. einfach indiziert, die Angabe erfolgt jedoch ohne Index. Die Parametergruppe braucht nicht indiziert zu sein, wenn maximal nur ein Datensatz gefunden werden kann.

 

Tabelle

Zeichenkette

Name der Datenbanktabelle oder Abfrage. Es muss immer eine Tabelle angegeben werden, außer bei gefülltem SQLBefehl.

 

SuchPG

Zeichenkette

Name einer PG mit der Suchvorgabe. Der Typname der PG sollte dem Typnamen von DatenPG entsprechen. Wenn SuchPG indiziert ist, muss ein fester Index angegeben werden. Es kann auch ein Leerstring ('') übergeben werden.

 

NameAnzahl

Zeichenkette

Name eines (globalen) Ganzzahl-Parameters, der die Anzahl der gelesenen Datensätze in DatenPG enthält. Es kann auch ein Leerstring ('') übergeben werden.

 

SQLWhere

Zeichenkette

Text mit der Where-Klausel bzw. ein leerer Text (''). Das Schlüsselwort Where selbst darf nicht im Text stehen.

 

SQLOrder

Zeichenkette

Angabe der Sortierreihenfolge bzw. ''. Es sind alle Angaben für die Order By – Klausel möglich (ohne die Schlüsselworte Order By selbst).

 

SQLBefehl

Zeichenkette

Name eines Parameters, der einen vollständigen SQL-Befehl enthält, bzw. ''. Anstelle eines einfachen Parameters kann auch ein einfach indizierter Feldparameter übergeben werden. Der Befehl wird dann aus allen(!) Feldwerten bis zur definierten Feldlänge zusammengesetzt.
Wenn dieser Parameter angegeben wird, werden die Übergabeparameter SuchPG, SQLWhere und SQLOrder ignoriert.

Anmerkung: Dieser Parameter muss Global sein.

Ergebnis:

Ganzzahl

Status der Operation
0: Daten erfolgreich gelesen
<0: Fehler gemäß ePOS-Fehler-Liste
>0: Fehler gemäß SMP-Fehlerstatus-Liste
Der Rückgabestatus in SalesManager NG-Funktionen

Beispiel 1:

Suche aller Auslandsvertretungen in Frankreich in einer separaten Niederlassungstabelle, sortiert nach dem Merkmal Stadt:

F$PGLeer( 'Vorgabe' )
Vorgabe.Land = 'Frankreich'

Status = p$TDV:SMPAPI:L_xtabel( 'Liste', 'Niederlassungen', 'Vorgabe', 'Anzahl', '', 'Stadt', '')

àAnzahl = 3, damit enthalten die Parametergruppen Liste[1], Liste[2] und Liste[3] die Daten der Niederlassungen.

Beispiel 2:

Dieselbe Suche unter Verwendung der Where-Klausel:

P$TDV:SMPAPI:SVTVglx( 'SQLText', 'Land', '=', 'Frankreich' )
àSQLText = 'Land = \'Frankreich\''

Status = p$TDV:SMPAPI:L_xtabel( 'Liste', 'Niederlassungen', '', 'Anzahl', SQLText, 'Stadt', '' )

Beispiel 3:

Dieselbe Suche unter Verwendung eines direkten SQL-Befehls:

SQL = 'select * from Niederlassungen where Land = \'Frankreich\' order by Stadt' )

Status = p$TDV:SMPAPI:L_xtabel( 'Liste', '', '', 'Anzahl', '', '', 'SQL' )

Beispiel 4:

Dieselbe Suche unter Verwendung eines direkten SQL-Befehls in einem Feld:

f$PGLeer( 'SQLText[]' )
SQLText[1] = 'select * from Niederlassungen where '
SQLText[2] = ''

p$TDV:SMPAPI:SVTVglx( 'SQLText[2]', 'Land', '=', 'Frankreich' )
SQLText[2] = 'Land = \'Frankreich\''

SQLText[3] = ' order by Stadt'

Status = P$TDV:SMPAPI:L_xtabel( 'Liste', 'Niederlassungen', '', 'Anz', '', '', 'SQLText' )

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.