3

既に Excel (2007) を使用して SQL Server 2005 からデータをインポートできます。データ接続を追加し、目的のデータを取得するカスタム SQL クエリを入力します。涼しい。

しかし、私が追加したいのは、スプレッドシートの既知のセルで見つかった値に基づいて、そのクエリをパラメーター化する機能です。

私のクエリは

SELECT * FROM dbo.MyDataTable WHERE Col1 = 'りんご'

のようなものに

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

これは可能ですか?もしそうなら、どのように?

4

4 に答える 4

3

MS Queryを使用して Excel にデータを取得している場合、このページでは、ワークシートのセルの値をクエリのパラメーターとして使用する方法を示します。

于 2009-03-11T14:45:57.803 に答える
1

次のようにコードを構造化してみてください。

Dim strSQL as String
Dim strFruit As String

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

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

SQLクエリにマージする前に、最初にパラメーターを変数にロードすると便利であることがわかりました。

これにより、SQL 文字列が読みやすくなり、使用する前にパラメーターをチェック/クリーンアップできます。

于 2009-03-05T11:49:42.350 に答える
1

私は Excel 2007 を使用していませんが、以前のバージョンの Excel では、SQL クエリの統合が本当に嫌いです。特に、たくさんの VBA コードをハッキングすることに頼らずに、あなたが求めていることを正確に行うのは難しいと感じました。私はいくつかの調査を行い、最終的に Rob Van Gelder の Excel クエリ アドインを使用することにしました。

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

彼の GUI の「パラメーター」セクションでは、パラメーターを設定し、ユーティリティでユーザーに値を要求するか、セル参照から値を引き出すことができます。後者はまさにあなたがやりたいことだと思います。また、セルの値が変更されたときに自動更新する機能もあります。DB のデータを検証するときに、自動更新機能をよく使用します。

クエリが破損し、クエリを開けなくなったり、テキストが表示されなくなったりする状況がいくつかありました。結果として、Excel スプレッドシートにクエリ用のタブを保持し、クエリのテキストをその特別なページのセルにコピーすることをお勧めします。そうすれば、クエリ ツールがクエリを食べてしまった場合でも、クエリを最初から再構築する必要がなくなります。

無料とはいえ、サードパーティのツールはあなたが探しているものではないかもしれませんが、私にとってはうまく機能します. 幸運を!

于 2009-03-05T13:52:33.130 に答える
0
Dim SQLString as String

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

このアプローチのマイナス面を確認するためにSQL インジェクション攻撃を検討する価値はありますが、何をする必要があるかを必ずしも考慮する必要はありません。

于 2009-03-04T22:48:55.033 に答える