FAQ 0006: Wie kann ich eine Zeichenkette an eine Datenbank übergeben?
von Helge Rex
Frage
Wie kann ich eine Zeichenkette an eine Datenbank übergeben?
Grundlagen
Zeichenketten müssen immer in einfache Hochkommata verpackt werden, wenn sie an eine Datenbank übergeben werden sollen:
Dim strSQL As String Dim strSuche As String strSuche = "Hugo" strSQL = "SELECT * FROM Personen WHERE Vorname LIKE '" & strSuche & "';"
Ein Problem ergibt sich, wenn die Zeichenkette selbst Hochkommata enthält. Dann muß das enthaltene Hochkomma verdoppelt werden:
Dim strSQL As String Dim strSuche As String strSuche = "Andreas' Computer" strSuche = Replace$(strSuche, "'", "''") strSQL = "SELECT * FROM Verleih WHERE Quelle LIKE '" & strSuche & "';"
Laut Eckhart Wörner erwarten einige DBS, daß Apostrophen im Text nicht verdoppelt, sondern mit einem BackSlash maskiert werden. Statt "''" muß dann "\'" als dritter Parameter bei Replace$ übergeben werden (siehe auch Ersatz für einige Stringfunktionen).
Ein beliebiges Zeichen
Ein beliebiges Zeichen wird mit ADO mit dem Zeichen _, mit DAO mit dem Zeichen ? gesucht. Dieser Joker steht für exakt ein beliebiges Zeichen.
Dim strSQL As String ' ADO (ActiveX Data Objects) und ein beliebiges Zeichen strSQL = "SELECT * FROM Personen WHERE Nachname LIKE 'Me_er';" ' DAO (Data Access Objects) und ein beliebiges Zeichen strSQL = "SELECT * FROM Personen WHERE Nachname LIKE 'Me?er';"
Mehrere beliebige Zeichen
Mehrere Zeichen können mit ADO mit dem Zeichen %, mit DAO mit dem Zeichen * gesucht werden. Zu beachten ist, daß eine Zeichenkette nicht unbedingt Text an der Stelle des Jokers enthalten muß. So liefert die Abfrage auch alle Varianten von Stefan, die in der Tabelle gespeichert sind.
Dim strSQL As String ' ADO (ActiveX Data Objects) und mehrere beliebiges Zeichen strSQL = "SELECT * FROM Personen WHERE Vorname LIKE 'Ste%an%';" ' DAO (Data Access Objects) und mehrere beliebige Zeichen strSQL = "SELECT * FROM Personen WHERE Vorname LIKE 'Ste*an*';"
Ihre Meinung
Falls Sie Fragen zu dieser FAQ haben, Ihre Erfahrung mit anderen Nutzern austauschen möchten oder auf eine Ergänzung hinweisen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.