smartsuitefaq.martinholz.de

SQL in Approach mit nicht-SQL Datenquellen verwenden

Das folgende ist ein (abgesehen von der Übersetzung ins deutsche) unverändertes Posting von Jerry Sykes:

Dies ist eine Anleitung für eine SQL-Abfrage mit Approach für Nicht-SQL Datenquellen wie z.B. dBaseIV. Eine SQL-Abfrage enthält in der Regel vier Definitionen (mindestens jedoch SELECT und FROM):

SELECT <Felder>
FROM <Tabelle(n)>
WHERE <Bedingungen / Suchkriterien> (optional)
ORDER BY <Sortierung> (optional)

Wie jeder andere Script-String (Ausdruck) auch, wird die SQL-Anweisung in doppelte Anführungszeichen eingeschlossen:

q.SQL = ""<SQLAnweisung>""

Bevor wir uns dem SELECT-Teil zuwenden schauen wir uns erst die "FROM"-Anweisung an. "FROM" besteht aus zwei Teilen:

FROM ""<vollständiger Pfad zur Tabelle>"" <Alias>

Der Alias ist hier das Wichtigste. Der Alias stellt einen Kurznamen für die Datenquelle dar, mit dem Sie die Datenquelle abfragen können. Hier ein vollständiges Beispiel:

FROM ""F:\Programs\RawMaterials\BoxTrans.dbf"" BoxTrans

nun das Beispiel aus der Hilfe, das die Ersetzung mit Variablen zeigt:

FROM """+Q.Tabellenname+""""+tname + "

Falls es Ihnen aufgefallen ist, steht in meinem Beispiel nur der vollständige Pfad zu meiner Datenbank in doppelten Anführungszeichen, nicht jedoch der Alias. Approach wird dies in folgendes Format umsetzen:

FROM "F:\Programs\RawMaterials\BoxTrans.dbf" BoxTrans

Die äußeren Anführungszeichen werden entfernt. Im zweiten Beispiel ist 'Q.Tabellenname' die Variable, die dazu dient den vollständigen Pfad zur Datenbank-Tabelle zu enthalten.

Vorausgesetzt daß Q.Tabellenname bereits vorher im Script zugewiesen und als Variable definiert wurde, ist das dritte Paar Anführungszeichen notwendig, damit Approach die Variable korrekt interpretiert. Aus dem selben Grund muß der Alias in doppelte Anführungszeichen eingschlossen werden. Der Aliasname muß nicht notwendigerweise der Datenbankname sein. Jede eindeutige Zeichenkombination (außer Script-Schlüsselwörtern) ist zulässig, wie z.B.:

FROM "F:\Programs\RawMaterials\BoxTrans.dbf" B

Sie müssen nur aufpassen, daß Sie in allen ALIAS.FELDNAME-Bezügen den benannten Alias verwenden.

Fassen wir zusammen. Wenn Sie den Pfad in einer SQL-Anweisung verwenden wollen, dann:

""Laufwerk:\..\Datenbankname"" Alias

sonst:

""" + Scriptvariable + """ " + Aliasvariable + "

wobei die Scriptvariable den kompletten Pfad und Datenbanknamen enthält und die Aliasvariable Ihnen sozusagen als Kurzform auf den Pfad und somit als Name der Datenquelle in Ihrem Script zur Verfügung steht.

Nachdem Sie den Umgang und die Benennung des Alias verstanden haben,wird der Alias nun in den folgenden Abschnitten verwendet.

Benötigen Sie alle Felder einer Datenbank, dann wählen Sie:

SELECT * FROM

Wobei das * als Platzhalter (Wildcard) für alle Felder steht

Benötigen Sie nicht alle Felder, dann wählen Sie:

SELECT alias.feldname1, alias.feldname2 ... alias.feldnameN FROM

Dem letzten gewählten Feld darf kein Komma folgen, sondern lediglich ein Leerzeichen und dann FROM.

Ein Beispiel:

SELECT BoxTrans.ItemNum, BoxTrans.JobNum, BoxTrans.TransDate, BoxTrans.FoldWeekOf FROM

Verwenden Sie den Variablen-Alias wie im folgenden Beispiel ...

FROM """"+Q.Tabellenname+""""+tname+"

... dann müssen Sie den Alias als

"+tname+".feldname1

einsetzen. Ich ziehe es vor den "+tname+"-Typ von Aliasen zu vermeiden, da es wesentlich mehr Aufmerksamkeit bei der Eingabe erfordert und sich Fehler leichter einschleichen können. Wenn Sie lange Feldnamen in Ihrer Tabelle verwenden, ist es unter Umständen nötig, daß Sie diese in doppelte Anführungszeichen einschließen:

SELECT BoxTrans.""Item Number"", BoxTrans.""Job Number"", BoxTrans.""Transaction Date"", BoxTrans.""Fold Week Of"" FROM

Weiter geht's, der Syntax Ihrer WHERE-Bedingung folgt exakt den Regeln des Alias.feldname-Abschnitts, allerdings ist eine kleine Änderung nötig.

Beispiel aus der Script-Hilfe [Approach Objects]-[SQL]-[Example]:

WHERE ("& TNAME &".""Room Name/Number"" = "&DeletedRooms(i)&"')"

und eins von mir:

WHERE (BoxTrans.TransDate = '""' and BoxTrans.FoldWeekOf = '"+MySQL+"')

In beiden Beispielen hat der rechte Teil eine etwas andere Syntax. Statt doppelter Anführungszeichen verwenden Sie:

alias.feldname = einfaches Anführungszeichen doppeltes Anführungszeichen + Variable + doppeltes Anführungszeichen einfaches Anführungszeichen

& und + sind innerhalb von String-Kombinationen austauschbar.

Die beste Methode um fehlerhaften Syntax einer SQL-Anweisung zu finden, ist es sog. 'Breakpoints' (Haltepunkte) im LotusScript nach der SQL-Anweisung zu setzen. Wählen Sie aus der Variablen-Liste die SQL-Anweisung des Abfrage-Objekts. Klicken Sie in der Variablen-Liste auf die SQL-Anweisung. Das Laufzeit/Ersetzungs-Konstrukt der SQL-Anweisung wird in der unteren Zeile der Variablen-Liste sichtbar. Das folgende komplette Script:

qu.SQL = "SELECT * FROM ""F:\Programs\RawMaterials\BoxTrans.dbf"" BoxTrans

WHERE (BoxTrans.TransDate = '""' and BoxTrans.FoldWeekOf = '"+MySQL+"')

ORDER BY BoxTrans.ItemNum,BoxTrans.JobNUM"

zeigt folgenden in Variablen-Liste unter Laufzeit, während Sie das Abfrage-Objekt während eines Script-Stops per breakpoint ansehen:

SELECT * FROM "F:\Programs\RawMaterials\BoxTrans.dbf" BoxTrans

WHERE (BoxTrans.TransDate = '"'and BoxTrans.FoldWeekOf = '4/6/98')

ORDER BY BoxTrans.ItemNum,BoxTrans.JobNum

Über diesen ArtikelArtikelbewertung
Stand: 28.11.2003
Autor(en): Jerry Sykes, Martin Holz
Durchschnittsnote: 1
1 2 3 4 5 6