Benutzer mit den meisten Antworten
SQL Abfrage in Excel Filtern mit Eingabe Zellen

Frage
-
Hallo zusammen
Ich habe mittels Excel eine SQL Server Anbindung. Diese funktioniert tadellos.
Für die Daten habe ich eine SQL Query eingefügt damit ich einen kleinen Report generieren kann.Nun der Report sollte sich eigentlich auf einen gewünschten Zeitraum filtern können.
Meine Frage ist hierfür, kann ich mittels Eingabe Feld oder so was die Where Klausel der Daten Query verändern?Man könnte manuell den Befehlstext selber ändern. Aber einen Otto Normal Excel Benutzer lass ich nicht gerne an die Query. Das gibt meines Wissens nur Problem...
Beispiel einfach eine Eingabemaske machen neben der Tabelle die aktiv zur DB verbunden ist.Ich habe bereits mitbekommen, dass die Zellen Parametrisieren kann. Nur die Parameter sollen auch in der where Klausel geändert werden können.
Wie backe ich das.Ausserdem habe ich genau diese Abfrage:
Select LEFT(pid,1) as [PID] ,grund] as [Grund für die Erneuerung] ,COUNT(grund) as [Wie oft] from dbo.badgehistory where datum between '20130101' and '20130131' group by LEFT(pid,1),grund
Für die Aufmerksamkeit bedanke ich mich im Voraus.
Beste Grüsse
Mehmet
Antworten
-
Hallo Mehmet,
ich habe es bisher immer nur mit Abfrage über MS Query verwendet, sollte mit der neuen direkt SQL Server Verbindung aber auch gehen.
Das ist eine OleDB Abfrage und dort verwendet man das Fragezeichen ? als Parameterwert; also Deine beiden Datumswerte in der Abfrage durch ? ersetzt. Das sollte dann auch automatisch erkannt werden und der Button "Parameter" aktiviert werden; darüber kannst Du den Zellenbezug zum SQL Parameter definieren.
Olaf Helper
Blog Xing- Als Antwort markiert Mehmet.B Mittwoch, 17. April 2013 13:25
Alle Antworten
-
Hallo Mehmet,
ich habe es bisher immer nur mit Abfrage über MS Query verwendet, sollte mit der neuen direkt SQL Server Verbindung aber auch gehen.
Das ist eine OleDB Abfrage und dort verwendet man das Fragezeichen ? als Parameterwert; also Deine beiden Datumswerte in der Abfrage durch ? ersetzt. Das sollte dann auch automatisch erkannt werden und der Button "Parameter" aktiviert werden; darüber kannst Du den Zellenbezug zum SQL Parameter definieren.
Olaf Helper
Blog Xing- Als Antwort markiert Mehmet.B Mittwoch, 17. April 2013 13:25
-
Hallo Mehmet,
nuja, wenn das SQL Statement so falsch ist, kann das auch nicht gehen.
Korrekt wäre es wohl so:
WHERE <Spalte> BETWEEN ? AND ?
<Spalte> musst Du natürlich mit deinem Spaltennamen belegen (wobei "datum" ein schlecht gewählter Spaltenname ist).
Ob das Statement nun innerhalb deiner Umgebung funktioniert, kann ich dir nicht sagen, grundsätzlich wäre es so, dass eine SQL Abfrage so klappt.
SELECT * FROM <Tabelle> WHERE <Spalte> BETWEEN '20130101' AND '20130331'
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Hallo Mehmet,
nuja, wenn das SQL Statement so falsch ist, kann das auch nicht gehen.
Korrekt wäre es wohl so:
WHERE <Spalte> BETWEEN ? AND ?
<Spalte> musst Du natürlich mit deinem Spaltennamen belegen (wobei "datum" ein schlecht gewählter Spaltenname ist).
Ob das Statement nun innerhalb deiner Umgebung funktioniert, kann ich dir nicht sagen, grundsätzlich wäre es so, dass eine SQL Abfrage so klappt.
SELECT * FROM <Tabelle> WHERE <Spalte> BETWEEN '20130101' AND '20130331'
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
Hallo Stefan
Dies habe ich genau wie du es ausgefüllt. Nur da kriege ich den Fehler, dass der dann einen Parameter möchte. Nur kann ich dann keinen Parameter eingeben.
Ich habe das gleiche auch über MS Query gemacht. Nur wenn ich da bei der Tabelle meine Query von ob einfüge kann ich keine Kriterienfelder angeben.
-
Ich habe das gleiche auch über MS Query gemacht. Nur wenn ich da bei der Tabelle meine Query von ob einfüge kann ich keine Kriterienfelder angeben.
Hallo Mehmet,
was meinst Du mit "Kriterienfelder"? Bei MS Query muss man zunächst (irgendeine) Tabelle auswählen; dann klickt man einfach bis zum Ende durch, auf der letzten Seite gibt es die Option "... in MS Query bearbeiten". Dort kannst Du dann nach Belieben die Abfrage inkl der ? Parameter eingeben. MS Query jammert dann zwar immer, das es die Abfrage nicht grafisch anzeigen kann, aber was soll's. Hat bisher immer problemlos funktioniert.
Olaf Helper
Blog Xing -
Hi Olaf
Diese meine ich als Kriterienfelder sind diese wo du die Filter im MS Query einsetzten kannst.
Ich habe es genau wie du beschrieben gemacht.
Nur wenn ich die ? in MS Query schon einfüge, dann kriege ich diesen Fehler:
Deshalb habe ich versucht beim einfügen meiner Query bisschen anders vorzugehen. Die where Klausel habe ich ganz gewöhnlich mit '20130301' eingegeben und dann abgeschlossen. Nun kann ich das Ausgabefeld meiner Abfage wählen. Hier habe ich in der Bearbeitung den Befehlstext durch ? geändert.
Als ich zum Schluss abschliessen will, muss ich die 2 parameter Felder anwählen. Wenn ich diese definiere und abschliesse bekomme ich diesen Fehler:
Das kann doch nicht ein so schwierig sein eigentlich. Also egal wie ich es versuche geht es nicht.
WEnn ich das ganze als SQL Server versucht, da kann ich die Parameter nicht eingeben. das Feld aktiviert sich einfach nicht.
Gruss
Mehmet
-
Hallo Zusammen,
ich habe im Prinzip das selbe Problem wie Mehmet damals, dass ich in meiner OLE DB Abfrage variable Parameter festlegen möchte, die ich durch Eingaben in Tabelle1 in Q8 und Q9 ändern kann.
Die hier bisher vorgeschlagenen Lösungsansätze haben mich nicht weitergebracht. Gebe ich statt der beiden Zahlen (41640 & 41670) ein ? ein, so kommt die Fehlermeldung, dass die Parameter nicht festglegt sind was aber nicht geht, da der Button nicht aktiv ist. Weiß da jemand weiter?
Hätte gerne noch einen Screenshot von der Abfrage eingefügt aber dazu fehlen mir hierzu noch die Rechte.