none
SQL Abfrage in Excel Filtern mit Eingabe Zellen RRS feed

  • 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

    Mittwoch, 27. März 2013 12:53

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
    Mittwoch, 27. März 2013 13:13

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
    Mittwoch, 27. März 2013 13:13
  • Hallo Olaf

    where datum between (Tabelle.datum Like ?+'%') and (Tabelle.datumLike ?+'%') 

    Dann kriege ich diesen Fehler

    

    Und der Parameter Button wird nicht aktiv....

    Gruss Mehmet

    Mittwoch, 27. März 2013 13:40
  • 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

    Mittwoch, 27. März 2013 13:48
    Moderator
  • 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. 

    Mittwoch, 27. März 2013 15:50
  • 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

    Mittwoch, 27. März 2013 18:01
  • 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

    Donnerstag, 28. März 2013 12:36
  • Hi Olaf

    Ich habe den Fehler gefunden. 
    Die Parameter Felder habe ich einfach befüllt mit Datum und die Zelle als Datum Datentyp geändert und wummm es funktioniert.

    Besten Dank noch für die Unterstützung

    Grüsse

    Mehmet

    Mittwoch, 17. April 2013 13:26
  • 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.

    Montag, 17. Februar 2014 13:47