Frage

Ich kann bereits verwenden Excel (2007) Daten aus SQL Server importieren 2005. Ich eine Datenverbindung hinzufügen, und ich geben Sie eine benutzerdefinierte SQL-Abfrage, die meine gewünschten Daten abruft. Cool.

Aber was ich mag ist hinzuzufügen, die Fähigkeit, diese Abfrage zu parametrieren basierend auf einem Wert in einer bekannten Zelle in der Kalkulationstabelle gefunden.

Meine Frage würde von

SELECT * FROM dbo.MyDataTable WHERE Col1 = 'apples'

, um so etwas wie

SELECT * FROM dbo.MyDataTable WHERE Col1 = 'Cell("B2")'

Ist das möglich? Wenn ja, wie?

War es hilfreich?

Lösung

Wenn Sie mit Microsoft Query die Daten in Excel, dieser Seite zu erhalten zeigt wie einen Wert aus einer Zelle als Parameter in der Abfrage auf dem Arbeitsblatt verwenden.

Andere Tipps

Versuchen Sie strukturieren Sie den Code wie folgt:

Dim strSQL as String
Dim strFruit As String

strFruit = CStr(ThisWorkbook.Sheets("Sheet1").Range("A1").FormulaR1C1)

strSQL = "SELECT * FROM dbo.MyDataTable WHERE Col1 = '" & strFruit & "'"

Ich habe es für sinnvoll, die Parameter in eine Variable zu laden, zuerst, bevor es in die SQL-Abfrage zusammenführen.

Es macht Ihre SQL-Zeichenfolge besser lesbar und ermöglicht es Ihnen, die Parameter zu überprüfen / reinigen, bevor es zu benutzen.

Ich habe nicht mit Excel 2007, aber in früheren Versionen von Excel hasse ich wirklich die SQL Query Integration. Insbesondere fand ich es schwer, genau das zu tun, was über Sie bitten, Hacken zusammen, um eine Reihe von VBA-Code ohne Rückgriff. Ich habe einige Nachforschungen und schließlich beschlossen, Rob Van Gelders Excel Abfrage zu verwenden, fügen sich in:

http://vangelder.orconhosting.net.nz/excel/queryeditor.html

Der ‚Parameter‘ Abschnitt in seiner GUI ermöglicht es Ihnen, einen Parameter einzurichten und den Nutzen haben entweder den Benutzer für den Wert veranlassen oder den Wert aus einem Zellbezug ziehen. Ich glaube, das letztere ist genau das, was Sie tun möchten. Es hat auch die Fähigkeit, Auto-Refresh, wenn eine Zelle Wert ändert. Ich verwende die Auto-Refresh-Funktion eine Menge, wenn Daten in meiner DB validieren.

Ich habe ein paar Situationen gehabt, wo meine Anfragen korrupt geworden und ich konnte nicht mehr öffnen sie oder den Text sehen. Als Ergebnis, empfehle ich eine Registerkarte in der Excel-Tabelle für Ihre Fragen zu halten und kopieren Sie den Text der Abfragen in Zellen auf dieser speziellen Seite. Auf diese Weise, wenn die Abfrage-Tool Ihre Anfragen isst, wird man sie nicht von Grund auf neu aufbauen.

Ein Drittanbieter-Tool, wenn auch frei, vielleicht nicht, was Sie suchen, aber es funktioniert gut für mich. Viel Glück!

Dim SQLString as String

SQLString = "SELECT * FROM dbo.MyDataTable WHERE Col1 = '" & Cells("B2") & "'"

Es würde sich lohnen Blick auf SQL-Injection-Angriffe die Nachteile dieses Ansatzes zu sehen, aber es muß nicht unbedingt eine Überlegung sein für das, was Sie tun müssen,

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top