2009-08-16 2 views
28

私はMS Excelを使用してODBCを介してMySQLデータベースからデータを取得しています。
SQLクエリを使用してデータを正常に取得しました。しかし、今私はそのクエリをパラメータ化したい。
このようなクエリのパラメータとしてセル値(スプレッドシートセル)を使用できるかどうかは疑問です。例えば
は、このクエリのために:Excel:SQLクエリのパラメータとしてセル値を使用します。

select name from user where id=1 

私は、スプレッドシート内のセルD4、たとえば、からid値を取得したいのですが。

クエリをパラメータ化する適切なアプローチですか?どうしたらいいですか?

ありがとうございました。

答えて

30

私はあなたと同じ問題を抱えていましたが、ノービーは私を理解することができますが、私はこのように解決しました。あなたは他のシートにパラメータを挿入する必要がある

SELECT NAME, TELEFONE, DATA 
FROM [sheet1$a1:q633] 
WHERE NAME IN (SELECT * FROM [sheet2$a1:a2]) 

、SQLは、あなたが情報を選択して、好きなパラメータにそれらを比較することができ、 などのデータベースのようにその情報を検討します。

+0

ありがとう、私はそれについて知りませんでした。私はそれを試してみます。 – GetFree

+0

こんにちは、遅れて申し訳ありませんが、名前付き関数/ named range/named cellをパラメータとして使用することもできますか? –

3
queryString = "SELECT name FROM user WHERE id=" & Worksheets("Sheet1").Range("D4").Value 
+0

私はVBAスクリプトでそれをしなければならないと思いますよね?私はその表現をSQLウィンドウの中に入力することはできないと思う。 – GetFree

+0

それはVBAです、はい – barrowc

10

マイクロソフトのクエリを使用している場合は、 "?"を追加できます。あなたの質問に...

ユーザーからの選択名id =?

これは、Excelに戻るときにセル/データ/などを尋ねる小さなウィンドウをポップアップ表示します。

ポップアップウィンドウでは、データを更新するたびにそのセルを定義する必要性を排除して、「このセルを常にパラメータとして使用する」を選択することもできます。これは最も簡単なオプションです。

1

SQLは、MS SQLの構文に多少似ています。

テーブル名が$記号で終わり、全体が角括弧に入れられていることが重要です。条件としては任意の値を使うことができますが、これまでExcelでは "SQL Apostrophes"( ')と呼ばれるものを使用できませんでしたので、1語の列タイトルをお勧めします。あなたは、「ユーザー」と呼ばれる表に記載されているユーザーがいる、とidが「ID」と「NAME」というタイトルの列の名前を題したコラムである場合

、クエリは次のようになります。

SELECT Name FROM [Users$] WHERE id = 1; 

これが役に立ちます。

関連する問題