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

SQL-Anweisung mit Zellbezug?

Forumthread: SQL-Anweisung mit Zellbezug?

SQL-Anweisung mit Zellbezug?
09.09.2022 10:58:05
Martin
Hallo zusammen,
ich habe in Excel eine automatische SQL-Datenabfrage mit einer SQL-Anweisung.
Die Anweisung sieht in etwa so aus:
SELECT * FROM [FA_Journal] WHERE ERF_DAT > '09.01.2022'
Das Datum steht eigentlich für den 01.09.2022, allerdings muss ich es in dem obigen Format angeben damit es funktioniert.
Nun die Frage: Aus mehreren Gründen wäre es gut, wenn ich die SQL-Abfrage beim Datum mit einem Wert aus Excel füttern könnte.
Also so: SELECT * FROM [FA_Journal] WHERE ERF_DAT > Sheets("Tabelle1").Range("A1").Value
Kann mir da jemand von euch weiterhelfen?
Gruß
Martin
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
nur 1 Idee
09.09.2022 12:32:25
Oberschlumpf
Hi Martin,
änder mal...

Sheets("Tabelle1").Range("A1").Value
...um in...

Format(Sheets("Tabelle1").Range("A1").Value,"MM.DD.YYYY")
damit werden aus dem deutschen Datum Range("A1") Monat + Tag getauscht.
Hilfts?
Ciao
Thorsten
Anzeige
AW: nur 1 Idee
09.09.2022 13:02:04
Martin
Hallo Thorsten,
danke für deine Antwort. Ich habs gerade probiert, SQL-Anweisung sieht dann folgendermaßen aus:

SELECT * FROM [FA_Journal] WHERE ERF_DAT >= Format(Sheets("Tabelle1").Range("A1").Value, "MM.DD.YYYY")
Daraufhin bekomme ich aber die Fehlermeldung "Sheets is not a recognized built-in function name".
Anzeige
AW: nur 1 Idee
09.09.2022 13:14:30
Oberschlumpf
Hi Martin,
ok, Format kann auch ein SQL-Befehl sein - das weiß ich nicht.
Versuchs mal mit diesem Code

Dim ldtDatum As Date
ldtDatum = Format(Sheets("Tabelle1").Range("A1").Value,"MM.DD.YYYY")
SELECT * FROM [FA_Journal] WHERE ERF_DAT >= ldtDatum
oder vielleicht so

Dim lstrDatum As String
lstrDatum = Format(Sheets("Tabelle1").Range("A1").Value,"MM.DD.YYYY")
SELECT * FROM [FA_Journal] WHERE ERF_DAT >= lstrDatum
Mehr Ideen hab ich nicht.
Hilfts?
Ciao
Thorsten
Anzeige
AW: nur 1 Idee
09.09.2022 13:37:52
Heli
Hi,
in Deinem Anfangspost steht als Ziel das Datum in einzelnen 'Apostrophen' daher sollten diese vermutlich noch außen rum gebaut werden - vermutlich ist die Datenquelle als Text formatiert, dann erwartet SQL dieses Format

"'" & Format(Sheets("Tabelle1").Range("A1").Value,"MM.DD.YYYY") & "'"
VG, Heli
Anzeige
AW: SQL-Anweisung mit Zellbezug?
09.09.2022 14:07:37
ChrisL
Hi
Gehe ich richtig in der Annahme, dass das SQL-Statement direkt in den Verbindungseigenschaften definiert wurde?
(vorweg, dort kannst du kein VBA verwenden)
Handelt es sich beim Datum um eine manuelle Eingabe oder um eine Berechnung (z.B. fix Tagesdatum minus 8 Monate).
Um welche Art von Datenbank handelt es sich (z.B. SQL-Datenbank Server, Access-DB usw.)?
Die Apostroph würden darauf deuten, dass das Datum in der DB als Text-String definiert ist. Insofern erstaunt es mich, dass es so funktioniert.
Wenn meine Vermutungen richtig sind, müsstest du auf alternative Techniken ausweichen. Entweder die Verbindungseigenschaften per VBA anpassen, mit VBA bzw. ADODB auf die Datenbank zugreifen oder mittels Power-Query.
https://excelhero.de/power-query/power-query-ganz-einfach-erklaert/
cu
Chris
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

SQL-Anweisung mit Zellbezug in Excel nutzen


Schritt-für-Schritt-Anleitung

  1. Öffne deine Excel-Datei und gehe auf das Arbeitsblatt, wo du dein Datum eingeben möchtest, z.B. Tabelle1.

  2. Gib das gewünschte Datum in Zelle A1 ein.

  3. Erstelle deine SQL-Anweisung in einem VBA-Modul oder in der Verbindungseigenschaft.

  4. Nutze den folgenden Code, um das Datum aus der Excel-Zelle in deine SQL-Anweisung einzufügen:

    Dim lstrDatum As String
    lstrDatum = "'" & Format(Sheets("Tabelle1").Range("A1").Value, "MM.DD.YYYY") & "'"
    Dim sqlQuery As String
    sqlQuery = "SELECT * FROM [FA_Journal] WHERE ERF_DAT >= " & lstrDatum
  5. Führe die SQL-Anfrage aus und überprüfe, ob die Daten korrekt abgerufen werden.


Häufige Fehler und Lösungen

  • Fehler: "Sheets is not a recognized built-in function name."

    • Lösung: Achte darauf, dass du im richtigen Kontext arbeitest, z.B. in einem VBA-Modul. SQL selbst kann keine Excel-Funktionen direkt verwenden.
  • Fehler: Ungültiges Datumsformat.

    • Lösung: Stelle sicher, dass das Datum im richtigen Format vorliegt. Verwende Format wie oben beschrieben, um das Datum korrekt zu formatieren.
  • Fehler: Apostrophe fehlen um das Datum.

    • Lösung: Füge Apostrophe um das Datum hinzu, wie im Beispiel gezeigt, um sicherzustellen, dass SQL das Datum als Text interpretiert.

Alternative Methoden

Falls du Schwierigkeiten mit der Verwendung von VBA hast oder die SQL-Anweisung direkt in den Verbindungseigenschaften definieren möchtest, kannst du auch Power Query nutzen:

  1. Lade deine Daten über Power Query in Excel.
  2. Verwende die Datumsfilter in Power Query, um die gewünschten Datensätze zu filtern.
  3. Du kannst auch Parameterabfragen erstellen, die auf Zellwerte basieren.

Hier findest du eine detaillierte Anleitung zu Power Query: Power Query einfach erklärt.


Praktische Beispiele

  • Beispiel 1: Einfache SQL-Anweisung mit Datum

    Dim lstrDatum As String
    lstrDatum = "'" & Format(Sheets("Tabelle1").Range("A1").Value, "MM.DD.YYYY") & "'"
    Dim sqlQuery As String
    sqlQuery = "SELECT * FROM [FA_Journal] WHERE ERF_DAT >= " & lstrDatum
  • Beispiel 2: SQL-Anweisung mit dynamischem Datum

    Angenommen, du möchtest die Daten der letzten 30 Tage:

    Dim lstrDatum As String
    lstrDatum = "'" & Format(Date - 30, "MM.DD.YYYY") & "'"
    Dim sqlQuery As String
    sqlQuery = "SELECT * FROM [FA_Journal] WHERE ERF_DAT >= " & lstrDatum

Tipps für Profis

  • Verwende die ADODB-Bibliothek für effizientere Datenabrufe aus SQL-Datenbanken.
  • Stelle sicher, dass die Datenbankverbindung korrekt eingerichtet ist, um Fehler wie "is not a recognized built-in function name" zu vermeiden.
  • Teste deine SQL-Anweisung in einem SQL-Editor, um sicherzustellen, dass sie korrekt ist, bevor du sie in Excel implementierst.

FAQ: Häufige Fragen

1. Wie kann ich ein Datum im deutschen Format verwenden?
Du kannst die Funktion Format nutzen, um das Datum entsprechend zu formatieren. Beispiel: Format(Sheets("Tabelle1").Range("A1").Value, "MM.DD.YYYY").

2. Kann ich SQL-Anweisungen direkt in den Verbindungseigenschaften verwenden?
Ja, allerdings kannst du dort kein VBA verwenden. Für eine dynamische SQL-Anweisung musst du VBA oder Power Query verwenden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige