推しミネラルウォーターはありますか?

はじめましてこんにちわ。

現在ExcelとSQLServerでADOを使ってデータを取得したいと思っています。

SQL文をワークシート上に書いてそれを読み込んでSQL文を実行するようにしたいのですが、それを取得したあと、データをExcelワークシートに表示させる方法が思いつきません。
SQL文で指定するデータは任意の文です。そのため取得されたフィールドがいくつできるかわからない状態です。
例えば、SQL文であったら

SELECT 商品ID,商品名,価格 from 商品テーブル

なりますが、商品ID,商品名,価格フィールドを自動的に
Excelフォーム上に作りたいということです。
・基本的にSELECT文しか使わない
・SQL文は任意のSQL文である
の条件がありますがそれはできるのでしょうか?
よろしくお願いします。

A 回答 (2件)

もともとSQLはSELECTを例にとると、一括で条件に合うものを返され、見せてくれるが、各行(レコード)単位では捉えさせる考えはなかった。

80年代ぐらい?までの標準SQL。
それでは不便なので、抽出結果を引き取って、1レコードづつ返してくれる仕組み(レコード処理)が備わった。
(1)カーソル処理や
(2)ADOで処理などとの連携である。
Accessはカーソル処理の仕組みはない。
後者は
http://www.geocities.jp/ak09z/vec/vba/ado.htm
などの例参照。
一方エクセルのシートにデータをセットするときは
行(レコードごと)列ごと(項目ごと)に分離しないとインポート出来ない(セルに値をセットできない)ので、(2)のようなものの利用経験が必要でしょう。結構勉強が必要と思う。
>SQLServerを使う、でなければMSクエリ(エクセルでデーター外部データの取り込み)
http://www11.plala.or.jp/koma_Excel/contents6/ma …
http://office.microsoft.com/ja-jp/excel/HA100996 …
http://www.ie.reitaku-u.ac.jp/~ykago/lectures/db …
などもある。
    • good
    • 0

参考になりますかね。


http://support.microsoft.com/kb/246335/ja

要するに、こういう風にオブジェクトをVBA上で定義し

Dim DBCNC As New ADODB.Connection
Dim DBREC As New ADODB.Recordset

こういう風にコネクションを作成し

DBCNC.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=xxx.mdb"

こういう感じでシートに貼り付けるんです。

DBREC.Open "SELECT xxx FROM xxxDB", DBCNC
Worksheets("Sheet1").Range("A2").CopyFromRecordset DBREC

詳細は「CopyFromRecordset」で検索すると色々出てくると思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!