GetTable
Syntax
GetTable(Tabelle)
GetTable(Tabelle, IndexName, IndexFeld1, IndexWert1)
GetTable(Tabelle, IndexName, IndexFeld1, IndexWert1, IndexFeld2, IndexWert2)
GetTable(Tabelle, IndexName, IndexFeld1, IndexWert1, IndexFeld2, IndexWert2, IndexFeld3, IndexWert3)
GetTable(Tabelle, IndexName, IndexFeld1, IndexWert1, ..., IndexFeld6, IndexWert6)
GetTable(Tabelle, IndexName, IndexFeld1, IndexWert1, ..., IndexFeld6, IndexWert6, Reverse)
Beschreibung
Mittels der GetTable Anweisung lassen sich Daten aus einer Büro+ Tabelle selektieren, indem die Filterkriterien auf bis zu sechs Feldern gesetzt werden. Wird die Anweisung ohne Filterkriterien aufgerufen, werden alle Daten der Tabelle geladen.
Parameter
•Tabelle: Name der Tabelle.
•IndexName: Name des Indexes. Damit ein Filter gesetzt werden kann, muss zwingend ein Index auf den gewünschten Feldern definiert sein. Fehlt ein solcher Index, so muss ein solcher im Büro+ Datenbank Manager angelegt werden. Ist ein Index über mehrere Felder definiert, so müssen die Felder in der gleichen Reihenfolge wie im Index definiert im Filter verwendet werden. Dabei müssen aber nicht alle Felder eines Indexes verwendet werden. Ist z.B. ein Index über drei Felder festgelegt, so kann nur das erste Feld oder das erste und zweite Feld für den Filter verwendet werden, nicht aber nur das zweite Feld oder das erste und dritte Feld usw.
•IndexFeld1: Das erste Feld im Index.
•IndexWert1: Der Wert des ersten Feldes.
•IndexFled2 (Optional): Das zweite Feld im Index.
•IndexWert2: Der Wert des zweiten Feldes.
•IndexFled3 (Optional): Das dritte Feld im Index.
•IndexWert3: Der Wert des dritten Feldes.
•...
•IndexFled6 (Optional): Das vierte Feld im Index.
•IndexWert6: Der Wert des vierten Feldes.
•Rückgabewert: True: Es wurde mindestens ein Datensatz gefunden / False: Keine Daten gefunden.
•Reverse: true=Reihenfolge der Daten wird umgekehrt
Nach dem Ausführen des Befehls steht der erste gefundene Datensatz im Zugriff und kann mittels [Tabellenname].[Feldname] zugegriffen werden. Daten können gelesen und geschrieben werden.
Achtung! Falls kein Datensatz gefunden wird, wird beim Zugriff auf ein Feld ein Fehler ausgelöst! Vor dem Zugriff muss also mittels dem Rückgabewert oder mit EOF("Tabelle") geprüft werden, ob auch ein Datensatz selektiert wurde. Nicht notwendig bei Verwendung der Loop Anweisung.
Beispiele
Über den Trigger wird ein Vorgang selektiert und mittels der GetTable Anweisung werden alle zugehörigen Vorgangspositionen selektiert. Index = "Nr", Feld = "BelegNr".
GetTable("VorgangPosition", "Nr", "BelegNr", Vorgang.BelegNr)
Der folgende Befehl selektiert einen Artikel anhand der Lieferanten-Nummer und der Artikel-Nummer. Index = "StdLiefNr", Feld1 = "LiefNr", FEld2 = "ArtNr".
GetTable("Artikel", "StdLiefNr", "LiefNr", LiefNr, "ArtNr", ArtNr)
Vorgangspositionen in umgekehrter Reihenfolge auslesen:
GetTable("VorgangPosition", "Nr", "BelegNr", "2023010001", , , , , , ,true)
Hinweis:
Bei der Suche mit GetTable müssen die Text-Inhalte exakt mit dem Suchkriterium übereinstimmen, auch Gross- und Kleinschreibung. Dies erschwert die Suche enorm, wenn die Schreibweise nicht klar ist, wie z.B. die Suche nach einer EMail Adresse. Dabei kann die Suche mittels FilterTable, FilterTableWildcardRange oder FilterTableFree bessere Resultate liefern.
Beispiel
GetTable("Anschriften", "EMail1", "EMail1", "test@firma.com")
=> Gibt nur Anschriften zurück, wo die EMail Adresse exakt so geschrieben ist, also kein "Test@Firma.com"
Folgende Abfragen führen dagegeben zum gewünschten Resultat:
FilterTableWildcardRange("Anschriften", "EMail1", "test@firma.com")
oder
FilterTable("Anschriften", "EMail1", "EMail1", "test@firma.com", 100)
oder
FilterTableFree("Anschriften", "EMail1 >= 'test@firma.com' and EMail1 <= 'TEST@FIRMA.COM'", 100)