Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Langer SQL String ueber mehrere Zeilen

Langer SQL String ueber mehrere Zeilen
10.08.2004 10:43:03
Doro
Ich moechte gerne Daten aus einer Oracle DB aus Excel heraus abrufen und denke, QueryTable reicht vollkommen fuer meine Beduerfnise aus. Nun habe ich eine sehr komplexe SQL-Abfrage, die ueber mehrere Zeilen im VBA-Editor verlaeuft. Die mir bekannte Methode, den String in Haeppchen zu zerlegen mit "stringteil" &_ etc resultiert immer in der Fehlermeldung, dass _ ein unbekanntes Zeichen sei. Ausserdem, ergaenzt der Excel VBA Editor automatisch das Ende der ersten Zeile meines Strings mit einem " (wenn ich "String,_ eingebe und dann in der naechsten Zeile weiterschreiben moechte)
Mein Beispiel:
Dim qt As QueryTable
Set qt = ActiveSheet.QueryTables.Add(Connection:="ODBC;DSN=tnsname;UID=username;PWD=passwort", Destination:=Range("A1"))
With qt
.CommandType = xlCmdSql
.CommandText = "langer String"
Kann mir jemand helfen?
Danke!
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Langer SQL String ueber mehrere Zeilen
Doro
Okay, habe das Leerzeichen vergessen...
Aber nun markirt der Editor beim kompilieren den ersten Ausdruck meiner zweiten Zeile und gibt die Fehlermeldung heraus: "Erwartet: Anweisungsende".
Hat jemand eine Idee, wie ich diese Abfrage hinbekomme?
AW: Langer SQL String ueber mehrere Zeilen
EtoPHG
Beispiel
Dim strSQLText as string
strSQLText = "Teil 1 " & _
"Teil 2 " & _
"Teil 3 etc..."
Gruss Hansueli
Anzeige
AW: Langer SQL String ueber mehrere Zeilen
Doro
Genau das habe ich auch noch ausprobiert und dabei sagt mir der Editor, dass _ ein ungueltiges Zeichen sei. Und wenn ich nur ein Leerzeichen benutze a la "teil1 _
"Teil2 _ ... dann markiert er den ersten Ausdruck mit der Fehlermeldung, ein Anweisungsende sei erwartet?!
AW: Langer SQL String ueber mehrere Zeilen
Doro
Okay! Ich habe jetzt herausgefunden, wie das bei meinem Excel funktioniert! Fuer alle interessierten:
sql = "Teil1" _
& "Teil2" _
& "Teil3"
Die anderen Tipps haben nicht funktioniert und jetzt frage ich mich, warum?
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

SQL-Strings über mehrere Zeilen in Excel VBA


Schritt-für-Schritt-Anleitung

Um einen langen SQL-String über mehrere Zeilen in Excel VBA korrekt zu definieren, befolge diese Schritte:

  1. Deklariere die Variable für den SQL-String:

    Dim sql As String
  2. Setze den SQL-String zusammen, indem Du die Zeilen mit & _ verbindest:

    sql = "SELECT * FROM Tabelle WHERE Bedingung = 'Wert' " & _
         "AND AndereBedingung = 'Wert2' " & _
         "ORDER BY Spalte"
  3. Verwende den SQL-String in Deiner QueryTable:

    Dim qt As QueryTable
    Set qt = ActiveSheet.QueryTables.Add(Connection:="ODBC;DSN=tnsname;UID=username;PWD=passwort", Destination:=Range("A1"))
    With qt
       .CommandType = xlCmdSql
       .CommandText = sql
    End With

Häufige Fehler und Lösungen

  • Fehler: „VBS Anweisungsende erwartet“

    • Dies tritt häufig auf, wenn das _ nicht richtig verwendet wird. Achte darauf, dass nach dem _ kein weiteres Zeichen (außer Zeilenumbruch) folgt. Ein Beispiel:
      sql = "Teil1 " & _
        "Teil2 " & _
        "Teil3"
  • Fehler: „Ungültiges Zeichen“

    • Stelle sicher, dass Du nach der Verwendung von & _ ein Leerzeichen hinzufügst. Wenn Du nur & _ schreibst, könnte der Editor Probleme erkennen.

Alternative Methoden

Falls Du eine andere Methode ausprobieren möchtest, um SQL-Strings zu handhaben, kannst Du die Funktion Join verwenden. Dadurch kannst Du die Teile des SQL-Strings in einem Array speichern und anschließend zusammenfügen:

Dim sqlParts() As String
sqlParts = Split("SELECT * FROM Tabelle", " ")
sqlParts = Split("WHERE Bedingung = 'Wert'", " ")
sql = Join(sqlParts, " ")

Praktische Beispiele

Hier ist ein Beispiel, wie Du einen SQL-String für eine komplexe Abfrage zusammenstellen könntest:

Dim sql As String
sql = "SELECT Name, Alter FROM Personen " & _
      "WHERE Stadt = 'Berlin' " & _
      "AND Alter > 30 " & _
      "ORDER BY Name"

In diesem Beispiel wird der SQL-String sinnvoll in mehrere Zeilen aufgeteilt, was die Lesbarkeit verbessert.


Tipps für Profis

  • Nutze Kommentare, um Deine SQL-Strings zu dokumentieren. Dies hilft nicht nur Dir, sondern auch anderen, den Code leicht zu verstehen.
  • Achte darauf, dass Du immer die korrekten Anführungszeichen verwendest. In SQL sind einfache Anführungszeichen für Werte wichtig, während doppelte Anführungszeichen für Strings in VBA verwendet werden.

FAQ: Häufige Fragen

1. Warum funktioniert sql = string nicht in meinem Code? Es könnte sein, dass Du das _ nicht korrekt verwendest. Stelle sicher, dass Du nach & _ ein Leerzeichen hast und die Zeile korrekt fortsetzt.

2. Wie kann ich einen SQL-Substring bis zu einem bestimmten Zeichen verwenden? Verwende die Funktion Left oder Mid, um Teile eines Strings zu extrahieren. Beispiel:

Dim substring As String
substring = Left(sql, InStr(sql, " ") - 1)

3. Was ist der Unterschied zwischen Dim sql As String und sql = string? Dim sql As String deklariert die Variable, während sql = string den Wert zuweist. Beide Schritte sind notwendig, um einen SQL-String korrekt zu verwenden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige