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

Forumthread: SQL Abfrage mit > als VBA Variable

SQL Abfrage mit > als VBA Variable
11.02.2008 15:20:00
Marco
Hallo,
ich versuche aus Excel VBA einen Parameter an eine SQL Abfrage im Excel VBA zu übergeben, bei dem ein Datum nach größer als verglichen wird, leider erfolglos.
Hier mal detailliert das Problem:
Termin ' ist die Variable welche ein beliebiges Datum enthalten kann
Code:
'Abfrage:
SqlString = _
"SELECT `Vers$`.Nr, `Vers$`.AG, Ver$`.VersNr " & _
"FROM `Vers$` " & _
"WHERE `Vers$`.termin1 <= ' " & Termin & " ') & _
"ORDER BY `Vers$`.Nr"
~f~
So funktioniert meine Abfrage aber leider nicht. Wie muss ich das Kriterium richtig im Where Parameter einbinden?
Mit Like und Parametern als String funktionierte dies so:
~f~(`Versuchsdatenbank$`.AuftragNr Like ' " & Jahrgang & "%')" & _
Nur nun habe ich ja jetzt ein Datum was verglichen werden muss, da wird es mit Like ja sicher nicht funktionieren, oder?
Es ist ein Stück Code aus Excel und die abgefragte DB ist eine Tabelle im Excel. Alle anderen Abfragen funktionieren bestens.
Danke für Hinweise.

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: SQL Abfrage mit > als VBA Variable
11.02.2008 15:25:00
c0bRa
Hio...
Sicher dass es `sind und keine ' ?
Ansonsten fehlt dir ein " in der vorletzten Zeile:
VBA-Code aus Modul Modul1:
Option Explicit
Sub test()
    Dim sqlString As String
    Dim termin As String
    termin = "03.02.2008"
    sqlString = _
        "SELECT `Vers$`.Nr, `Vers$`.AG, Ver$`.VersNr " & _
        "FROM `Vers$` " & _
        "WHERE `Vers$`.termin1 <= ' " & termin & " ') " & _
        "ORDER BY `Vers$`.Nr"
    Debug.Print sqlString
End Sub

Rückmeldung nicht vergessen...
c0bRa
Komplexe Probleme haben einfache, leichtverständliche aber falsche Lösungen.

Anzeige
AW: SQL Abfrage mit > als VBA Variable
11.02.2008 15:42:00
Marco
Die " habe ich nur im Beispiel vergessen am Ende.
Bei dem Aufruf des Datenbanknamens muss ein ` und kein ' zum Einsatz kommen. Habe ich so erfolgreich wo übernommen.
Der Code von Dir führt daher ebenso zum Error: -Laufzeitfehler 1004 SQL Syntaxfehler.

AW: SQL Abfrage mit > als VBA Variable
11.02.2008 15:58:43
Tom
Hallo Marco,
wo machst du die Klammer auf, die du hinter "& Termin &" schließt?
Vielleicht liegt's daran?
Gruß
Tom

Anzeige
AW: SQL Abfrage mit > als VBA Variable
11.02.2008 16:18:00
Marco
OK. da habe ich beim Abschreiben des verkürzten Codes was vergessen, so müsste es richtig sein und es liegt nicht an der Klammer, da diese in meinem Hauptcode vorhanden ist.
SqlString = _
"SELECT `Vers$`.Nr, `Vers$`.AG, Ver$`.VersNr " & _
"FROM `Vers$` " & _
"WHERE (`Vers$`.termin1 <= ' " & Termin & " ') " & _
"ORDER BY `Vers$`.Nr"
So müsstes es nun aber passen. Nun müsste ich nur noch wissen was falsch ist, damit es auch funktioniert.

Anzeige
AW: SQL Abfrage mit > als VBA Variable
11.02.2008 17:58:00
Peter
Hallo Marco,
bei mir hat es mit einer Variablen ebenfalls nicht funktioniert, wohl aber so:


.termin1 <= DateSerial(Year(Termin), Month(Termin), Day(Termin))" }


Gruß Peter

Anzeige
AW: SQL Abfrage mit > als VBA Variable
11.02.2008 18:00:19
Peter
Hallo Marco,
die geschweifte Klammer zu am Ende muss natürlich weg, das ist ein Relikt aus dem Syntax Highlighter
Gruß Peter
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

SQL Abfrage mit > als VBA Variable


Schritt-für-Schritt-Anleitung

Um eine SQL Abfrage in Excel VBA zu erstellen, bei der ein Datum mit „größer als“ verglichen wird, befolge diese Schritte:

  1. Erstelle eine neue Subroutine: Öffne den VBA-Editor (Alt + F11) und füge eine neue Subroutine hinzu.
  2. Definiere die Variablen: Lege die SQL-String-Variable und die Datumsvariable fest.
    Dim sqlString As String
    Dim termin As String
    termin = "03.02.2008" ' Beispieldatum
  3. Formuliere die SQL Abfrage: Achte auf die korrekte Verwendung von Backticks (`) für Tabellennamen und einfache Anführungszeichen (') für Datumswerte.
    sqlString = _
    "SELECT `Vers$`.Nr, `Vers$`.AG, `Vers$`.VersNr " & _
    "FROM `Vers$` " & _
    "WHERE `Vers$`.termin1 >= '" & termin & "' " & _
    "ORDER BY `Vers$`.Nr"
  4. Führe die Abfrage aus: Verwende die Debug.Print-Anweisung, um sicherzustellen, dass die SQL-Abfrage korrekt formuliert ist.
    Debug.Print sqlString

Häufige Fehler und Lösungen

  1. Syntaxfehler: Überprüfe, ob du die richtigen Anführungszeichen verwendest (Backticks für Tabellennamen, einfache für Strings).
  2. Datum nicht im richtigen Format: Stelle sicher, dass das Datum im Format „DD.MM.JJJJ“ vorliegt, wenn du es als String übergibst.
  3. Fehlende Klammern: Achte darauf, dass alle Klammern in der SQL-Abfrage korrekt gesetzt sind.

Alternative Methoden

Du kannst auch die DateSerial-Funktion verwenden, um Datumswerte in deiner SQL Abfrage zu verwenden. Dies kann helfen, das Datum korrekt zu formatieren:

sqlString = _
"WHERE `Vers$`.termin1 >= DateSerial(Year(termin), Month(termin), Day(termin))"

Diese Methode ist besonders nützlich, wenn du mit Variablen arbeitest, die aus verschiedenen Quellen stammen.


Praktische Beispiele

Hier sind einige Beispiele für SQL Abfragen in Excel VBA:

  1. Einfaches Beispiel mit Datum:

    Dim sqlString As String
    Dim termin As String
    termin = "01.01.2023"
    
    sqlString = _
    "SELECT * FROM `Vers$` WHERE `Vers$`.termin1 >= '" & termin & "'"
  2. Beispiel mit Like:

    sqlString = _
    "SELECT * FROM `Vers$` WHERE `Vers$`.AuftragNr LIKE '2023%'"

In diesen Beispielen wird die sql vba excel Syntax verwendet, um effektive Abfragen durchzuführen.


Tipps für Profis

  • Verwende immer Option Explicit in deinen Modulen, um sicherzustellen, dass alle Variablen deklariert sind.
  • Nutze Debug.Print, um deine SQL Abfragen vor der Ausführung zu überprüfen.
  • Halte deine SQL Abfragen organisiert und klar, um die Wartung zu erleichtern.

FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen = und >= in SQL?
= prüft auf Gleichheit, während >= auch Werte einschließt, die größer sind als der angegebene Wert.

2. Wie kann ich mehrere Bedingungen in einer SQL Abfrage kombinieren?
Du kannst die Bedingungen mit AND oder OR kombinieren, z.B.:

WHERE `Vers$`.termin1 >= '" & termin & "' AND `Vers$`.AG = 'some_value'

3. Warum funktioniert meine SQL Abfrage nicht?
Überprüfe die Syntax, die Anführungszeichen und das Format der Datumswerte. Auch fehlende Klammern können zu Fehlern führen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige