Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Query Abfrage mit Parameter?!

Query Abfrage mit Parameter?!
03.06.2009 17:22:06
Horst
Hallo zusammen,
lange nicht hier gewesen. Schön, dass es dieses Forum noch gibt.
Ich hole mir Daten über eine ODBC-Schnittstelle mit Hilfe des Microsoft Query.
Um die Datenmenge einzugrenzen, setzte ich als Kriterium [Datum] und fülle die folgende Parameterabfrage mit DD.MM.YYYY (z.B. 19.04.2002).
Soweit auch kein Problem, funktioniert. Doch wenn ich dieselbe Abfrage aus Excel heraus starte, die Parameterabfrage nach dem Kriterium fragt und ich das Datum genauso eingebe wie oben beschrieben, wird die Abfrage mit "allgemeiner ODBC-Fehler" abgebrochen.
Offensichtlich interpretiert Excel die Eingabe anders als Query. Auch hab ich es noch nicht geschafft das Datum direkt als Kriterium im Query (also ohne Parameterabfrage) vorzugeben.
Das Ganze können wir auch verkürzen, wenn mir jemand sagen kann wie die folgende CommandText aussehen soll:
"SELECT * FROM MeineTabelle MeineTabelle where BuchDatum= ?")
Ich hab bereits sämtliche mir geläufigen Formatierung (format("19.04.2002", "YYYY-MM-DD")) probiert. Kein Erfolg!
Folgendermaßen sehen die Daten im Query aus:
Nummer BuchDatum
12RR00019 2002-04-19 00:00:00,000
12RR03241 2002-07-17 00:00:00,000
12RR11325 2003-05-05 00:00:00,000
12RR29848 2004-08-26 00:00:00,000
12RR29862 2004-08-26 00:00:00,000
12RR37296 2005-03-26 00:00:00,000
12RR40898 2005-06-16 00:00:00,000
12RR52025 2006-04-29 00:00:00,000
12RR54735 2006-06-13 00:00:00,000
12RR57416 2006-08-14 00:00:00,000
12R000472 2002-04-19 00:00:00,000
12R007919 2002-04-19 00:00:00,000
12R019342 2002-04-19 00:00:00,000
Hoffe auf eure Hilfe.
Gruß Horst
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Query Abfrage mit Parameter?!
03.06.2009 17:39:09
fcs
Hallo Horst,
etwa so:

"SELECT * FROM MeineTabelle MeineTabelle where BuchDatum=" &  Format("19.04.2002", "YYYY-MM-DD") _
)


"19.04.2002" kannst du natürlich auch durch eine Variable vom Typ Date ersetzen.
evtl. als Format "YYYY-MM-DD hh:mm:ss"
verwenden.
Gruß
Franz

Anzeige
AW: Query Abfrage mit Parameter?!
03.06.2009 17:49:57
Horst
Hallo Franz,
Wenn´s so einfach wäre: genau das funktioniert eben nicht.
Ich bekomm die Abfrage aus VBA (bzw. Excel) mit keiner Formatierung hin, lediglich im Query und auch da nur mit der oben beschriebenen Parameter-Abfrage.
Hab auch schon "where (BuchDatum<={d '04-19-2002'})"~f~ in unzähligen Kombinationen getestet.
Auch folgende Schreibweise verursacht einen Fehler: ~f~"where (BuchDatum<='#19.04.2002#')"
Vielleicht noch 'ne Idee.
Anzeige
Ist das nicht #04/19/2002# ? _oT
03.06.2009 17:57:26
NoNet
_oT = "ohne Text"
AW: Ist das nicht #04/19/2002# ? _oT
03.06.2009 18:07:59
Horst
Hallo NoNet,
läuft auch nicht, ergibt einen SQL-Syntaxfehler (in VBA) und einen Syntaxfehler in Datum (in Query).
Laut Datenbank (Navision) ist das Feld BuchDatum vom Typ Date.
Als Makro aufzeichnen klappt leider auch nicht, beim zurückgeben an Excel wird abgebrochen und ein Bericht soll an Microsoft gesendet werden. (Vielleicht wäre das keine schlechte Idee, wenn sich daraufhin ein kompetenter Gates-Mitarbeiter telefonisch bei mir melden würde und sagt wie´s geht!) :-)
Anzeige
AW: Ist das nicht #04/19/2002# ? _oT
03.06.2009 21:59:04
fcs
Hallo Horst,
wen das Aufzeichnen des Makros schon nicht funktioniert, dann ist das natürlich nicht sehr schön. So hat man die Grund-Syntax fürs VBA-Modul natürlich auch nicht komplett. Leider erzeugt der Recorder ja für den Commandstring ein unübersichtliches, geschachteltes Array, das aber auch in eine "einfache" Stringvariable umgesetzt werden kann. Bei komplexen sehr langen Querryanweisungen kann hier der Recorder aussteigen wegen zuviel Zeichen in einer Programmzeile.
Den Text des Querry-Commands soltest du zumindest teilweise unter den Eigenschaften der Querry wiederfinden, nachdem du sie manuel über Daten importieren erzeugt hast.
Diesen SQL-Text am besten als zusammengebastelten Textstring im Code erzeugen und dann in den Command-Befehl einbauen.
Evtl. helfen dir meine Hinweise ja weiter.
Gruß
Franz
Anzeige
AW: Ist das nicht #04/19/2002# ? _oT
04.06.2009 08:52:47
Horst
Das Zusammenbasteln des SQL-Strings ist kein Problem, Filtern über andere Felder (z.B. String) läuft auch, mir fehlt lediglich die Schreibweise für dieses Datum-Feld.
Die Eigenschaften des SQL-Strings im Query sagt mir leider auch nicht mehr, denn die einzige bisher laufende Möglichkeit über Parameterabfrage wird ja doch nur als "?" angezeigt.
Anzeige
Hier ist die Lösung
04.06.2009 10:00:24
Horst
In einem kleinen Beitrag im Forum unter "Mibuso.com" steckte die Erlösung!
Damit nachfolgende Generationen auch noch was davon haben, hier die Lösung des Problems:
(http://mibuso.net/forum/viewtopic.php?t=2205&f=1)
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Excel SQL Abfrage mit Parameter: Schritt-für-Schritt-Anleitung


Schritt-für-Schritt-Anleitung

  1. ODBC-Datenquelle einrichten:

    • Stelle sicher, dass die ODBC-Schnittstelle korrekt konfiguriert ist, um die Excel-Datenbank abfrage mit parameter zu ermöglichen.
  2. Microsoft Query öffnen:

    • Gehe in Excel zu "Daten" > "Daten abrufen" > "Aus anderen Quellen" > "Microsoft Query".
  3. Tabelle auswählen:

    • Wähle die entsprechende Tabelle aus, die du abfragen möchtest.
  4. Parameterabfrage einrichten:

    • Füge ein Kriterium hinzu, indem du die Spalte auswählst (z.B. BuchDatum).
    • Wähle "Parameter" aus und gib den Datumswert im Format DD.MM.YYYY ein.
  5. SQL-Abfrage anpassen:

    • Um die SQL-Abfrage mit einem Parameter zu gestalten, nutze folgenden Code:
      "SELECT * FROM MeineTabelle WHERE BuchDatum= ?"
  6. Formatierung überprüfen:

    • Stelle sicher, dass das Datum im richtigen Format eingegeben wird. Verwende die Formatierungsoption Format("19.04.2002", "YYYY-MM-DD"), um sicherzustellen, dass Excel die Eingabe korrekt interpretiert.
  7. Abfrage ausführen:

    • Starte die Abfrage und überprüfe, ob die Daten korrekt angezeigt werden.

Häufige Fehler und Lösungen

  • Allgemeiner ODBC-Fehler:

    • Überprüfe die Datumsformatierung. Excel benötigt möglicherweise eine andere Eingabe als Microsoft Query.
  • SQL-Syntaxfehler:

    • Achte darauf, dass das Datum in der SQL-Abfrage korrekt formatiert ist. Versuche es mit:
      WHERE (BuchDatum <= {d '2002-04-19'})
  • Parameterabfrage funktioniert nicht:

    • Stelle sicher, dass die Parameterabfrage korrekt eingerichtet ist und das Format genau eingehalten wird.

Alternative Methoden

  • Direkte Eingabe in die SQL-Abfrage:

    • Anstatt eine Parameterabfrage zu verwenden, kannst du das Datum direkt in die SQL-Abfrage einfügen:
      "SELECT * FROM MeineTabelle WHERE BuchDatum = '2002-04-19'"
  • Verwendung von Excel-Zellen als Parameter:

    • Du kannst auch eine Zelle in Excel als Parameter nutzen, indem du den Zellbezug in die SQL-Abfrage einfügst:
      "SELECT * FROM MeineTabelle WHERE BuchDatum = '" & Worksheets("Tabelle1").Range("A1").Value & "'"

Praktische Beispiele

  • Beispiel einer Excel-Datenbank abfrage mit parameter:

    • Angenommen, du möchtest alle Einträge für den 19. April 2002 abfragen. Deine SQL-Abfrage könnte folgendermaßen aussehen:
      "SELECT * FROM MeineTabelle WHERE BuchDatum = ?"
  • Parameterabfrage Access:

    • In Access kann eine ähnliche Abfrage wie folgt formuliert werden:
      "SELECT * FROM MeineTabelle WHERE BuchDatum = [Bitte Datum eingeben]"

Tipps für Profis

  • Verwende Named Ranges:

    • Definiere benannte Bereiche für die Zellen, die du als Parameter nutzen möchtest, um die Übersichtlichkeit zu verbessern.
  • Fehlerprotokollierung aktivieren:

    • Aktiviere die Fehlerprotokollierung in deinem VBA-Code, um schnell herauszufinden, wo Probleme auftreten.
  • Daten validieren:

    • Stelle sicher, dass die Eingabedaten vor der Abfrage validiert werden, um SQL-Injection oder andere unerwünschte Eingaben zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich die Parameterabfrage in Excel anpassen? Du kannst die Parameterabfrage anpassen, indem du die SQL-Abfrage im Microsoft Query-Editor öffnest und die Parameter entsprechend veränderst.

2. Welche SQL-Formate sind für Excel geeignet? Für Excel sind die Formate YYYY-MM-DD oder DD.MM.YYYY geeignet. Achte darauf, das Format konsistent zu verwenden.

3. Kann ich mehrere Parameter in einer Abfrage verwenden? Ja, du kannst mehrere Parameter in einer Abfrage verwenden, indem du sie in der WHERE-Klausel entsprechend kombinierst.

4. Wie funktioniert eine Abfrage mit Datumsparametern in Excel? Eine Abfrage mit Datumsparametern in Excel funktioniert, indem du sicherstellst, dass das Datum korrekt formatiert ist und die Parameterabfrage ordnungsgemäß eingerichtet ist.

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