Einführung
Im letzten Workshop haben wir den Praxisteil zum selbstprogrammierten
Datenzugriff behandelt. Nun wollen wir unser Programm noch etwas verfeinern,
in dem wir eine weitere Technologie einsetzen, die mit dem selbstprogrammierten
Datenzugriff einfach zu nutzen ist. Es handelt sich um SQL, das ist eine
Abfragesprache, die nur dafür entworfen wurde Abfragen in Datenbanken
zu erstellen. SQL heißt ausgeschrieben, Structured Query Language, also strukturierte Abfragesprache, wie ich eben gesagt
habe. Abfragen sind - für alle die den Access-Workshop nicht gelesen
haben - eine Schablone von Bedingungen die die Datensätze erfüllen
müssen um angezeigt zu werden, so könnte eine Bedingung lauten,
dass alle Datensätze angezeigt werden sollen die mit S beginnen.
Solche Anzeigeroutinen kann man natürlich auch mit Visual Basic erstellen,
doch SQL bietet auch noch einige Features wie eine Sortierroutine, die
in Visual Basic einige Arbeit bedeuten würde.
SQL
in Visual Basic embedden
SQL Befehle, die für Abfragen erstellt werden, beginnen immer mit
SELECT, so erkennt Visual Basic automatisch, dass es sich um eine SQL-Anweisung
handelt.
Um also eine SQL-Anweisung in Visual Basic einzubinden definiert man eine
Variable vom Typ String. Dieser weist man dann anschließend die
SQL-Befehlsphrase zu. Danach wird die SQL-Anweisung ausgeführt, indem
man beim Zuweisen einer Recordsetvariable statt des Tabellennamens die
Variable einträgt. Eine typische SQL-Anweisung incl Aufruf sieht
also so aus:
Dim sql as String
sql = "SELECT Name, EGebot FROM ebay WHERE Name LIKE '"& eingabe & "*'"
Set Tb = Db.OpenRecordset(sql)
In diesem Beispiel wird eine Tabelle erstellt, bei der
alle Datensätze mit einer Zeichenfolge die in eingabe gespeichert ist übereinstimmen müssen, es dürfen aber noch
Zeichen folgen.
Wenn du die Tabelle nun auf der Form ausgeben möchtest, so schreibe
eine Do While-Schleife, die so aussehen könnte:
Do While Not (Tb.EOF)
Print Tb!Name, Tb!EGebot
Tb.MoveNext
Loop
Die
Syntax einer SQL-Anweisung
Ich habe zwar eben ein Beispiel mit einer SQL-Anweisung gemacht, trotzdem
dürftest du davon noch nicht sehr viel verstanden haben. Nun mal
im Einzelnen, wie eine SQL-Anweisung aufgebaut ist:
SELECT Datenfelder FROM Tabelle WHERE Bedingung
Bei Datenfeldern handelt es sich um solche, die später
in der erstellten Tabelle vorkommen sollen. Die Tabelle ist dann selbstverständlich
die Tabelle in der sich die Felder befinden.
Mit INNER JOIN kann man mehrere Tabellen einbeziehen, die ein Verknüpfungsfeld
haben, die Syntax sähe so aus:
[..] FROM ebay INNER JOIN tab2 ON ebay.Name = tab2.Name [...]
[...] bedeutet, dass die obigen Befehle weggelassen wurden.
Sortierroutine
Ich sprach in der Einführung den Sortieralgorithmus an, den bindet
man folgendermaßen ein:
[...] ORDER BY Name
Hänge das einfach an die bisherige SQL-Anweisung
an und jetzt werden die Datensätze ausgehend von dem Feld Name automatisch
nach dem Alphabet sortiert. Wenn du absteigend nach dem Alphabet sortieren
möchtest, hänge hinten DESC an.
War
das alles?
Nein, wenn du die vollen Möglichkeiten von SQL entdecken willst,
dann werfe mal einen Blick in die msdn-Library. Dort findest du noch einige
Optionen und auch die restlichen möglichen Befehle von SQL: ADD NEW
mit dem neue Tabellen erzeugt werden können, DELETE mit dem Tabellen
gelöscht werden können, INSERT mit dem eine Insertabfrage (beim
Vergleich von zwei Tabellen fehlende Datensätze ergänzen) gestartet
wird. Es gibt aber noch einige mehr.
|