![Wie erstellt man in Excel 2007 eine SQL-Abfrage mit einem dynamischen Datumsbereich?](https://rvso.com/image/1317557/Wie%20erstellt%20man%20in%20Excel%202007%20eine%20SQL-Abfrage%20mit%20einem%20dynamischen%20Datumsbereich%3F.png)
Ich versuche, eine Berichtstabelle zu erstellen, mit der Berichte für einen bestimmten Zeitraum gedruckt werden können. Die folgende Abfrage funktioniert, aber wenn ich versuche, ?
anstelle des Datums einen Parameter zu verwenden, erhalte ich nach Auswahl einer Zelle mit meinem Datum einen Fehler. Wenn ich einfache Anführungszeichen verwende, ('?')
tritt bei der Konvertierung von Zeichenfolge in Datum/Uhrzeit ein Fehler auf, wenn ich dies nicht tue, (?)
erhalte ich einen Syntaxfehler in der Nähe von @p1
.
Irgendwann brauche ich entweder ein Start- und Enddatum oder eine Formel, die einen Monat oder eine Verschiebung zum Startdatum/der Startzeit hinzufügt, um die Daten auf wichtige Informationen zu filtern. Die Abfrage wurde in Microsoft Query erstellt.
SELECT FloatTable.DateAndTime,
TagTable.TagName
FROM master.dbo.FloatTable FloatTable,
master.dbo.TagTable TagTable
WHERE FloatTable.TagIndex = TagTable.TagIndex
AND (( FloatTable.DateAndTime >= {ts '2012-06-01 00:00:00'} ))
Ich wäre für jede Hilfe sehr dankbar.
Antwort1
Sie müssen die Abfrage als Formel statt als Text eingeben und das Datum aus der ausgewählten Zelle erstellen, damit eine gültige SQL-Anweisung erstellt wird.
Angenommen, Sie haben ein Datum in Zelle A1, geben Sie die folgende Formel in Zelle B1 ein:
="SELECT FloatTable.DateAndTime, TagTable.TagName FROM master.dbo.FloatTable _
FloatTable, master.dbo.TagTable TagTable WHERE FloatTable.TagIndex = _
TagTable.TagIndex AND ((FloatTable.DateAndTime>={ts '" & YEAR(A1) & "-" _
& MONTH(A1) & "-" & DAY(A1) & " 00:00:00'}))"
Beachten Sie, dass die Unterstriche am Ende jeder Zeile eine Fortsetzung anzeigen. Sie müssen diese und die Zeilenumbrüche löschen, damit die Formel funktioniert. Die gesamte Formel ist in einer einzigen Zeile unten eingerichtet. (Auf dieser Site schwer zu lesen, aber Excel mag das!)
="SELECT FloatTable.DateAndTime, TagTable.TagName FROM master.dbo.FloatTable FloatTable, master.dbo.TagTable TagTable WHERE FloatTable.TagIndex = TagTable.TagIndex AND ((FloatTable.DateAndTime>={ts '" & YEAR(A1) & "-" & MONTH(A1) & "-" & DAY(A1) & " 00:00:00'}))"