アプリ版:「スタンプのみでお礼する」機能のリリースについて

ExcelのVBAとMySQLを使っていろいろ実験してます。
ひとりでは、どうしても解決に時間がかかったり、分からないことがあるので、分かる方に教えていただけたらと思います。

Excelにデータベースのデータを読み込んだり、Excelで入力したり、計算したしたものを、またデータベースに入力したりしています。どうしても解決したいことが、以下の(1)(2)です。

(1)プログラムの一部ですが、

Set Rs = New ADODB.Recordset
sql="select count(*) from yotei"
Rs.Open sql, Cn 'Cnはデータベースへの接続 ADODB.Connection
Rs.MoveFirst
Range("A1").CopyFromRecordset Rs 'いったんワークシートに結果を転送
count = Range("A1").Value 'ワークシートから値を取得

結果のレコードセットから希望の1行1列を取り出す方法でつまづきました。Rs.GetRowsなど使い方が分かりませんでした。
例えばテーブルのレコード数などを調べたときの結果は1行1列しかないんですけど、上を見ての通り、不効率なことをしてしのいでます。

(2)LANでつないだ他のパソコンから、このパソコンのデータベースに接続したいです。何が(どうすることが)必要ですか?
接続文字列
DRIVER={MySQL ODBC 3.51 Driver}; SERVER=localhost; DATABASE=test; UID=root; OPTION=3
のSERVER=のところを変えるだけで済むのでしょうか?これだけではだめですよね?パソコンやLANでどんな設定をしなくてはならないでしょう?

説明が悪かったらごめんなさい。やりたいのにできなくて、かなり悩んでます。

A 回答 (3件)

一般的には、


ある問い合わせをレコードセットでした時、
その件数は、
Rs.RecordCount
で調べることができます。

(1)の場合、count(*)で数えているので
結果はレコードが1つしかなくフィールドが1つしかないので
Rs.Fields.Item(0)
又は
Rs(0)
で結果を得ることができます。

GetRowsは複数のレコードを配列で得る方法です。
この場合は、必要ありません。
とりあえず(1)だけ・
    • good
    • 0
この回答へのお礼

感激です。今やってみて、できました。
ありがとうございます。
このことに関連することも、しっかり理解したいですが、分かりやすい本などありますか?私は見つけられなかったのです。

お礼日時:2004/11/09 22:33

失礼します。

「MySQL」は解りませんが。

(1)
>Range("A1").CopyFromRecordset Rs 'いったんワークシートに結果を転送
が解っているなら、
>sql="select count(*) from yotei"
これを
sql="select * from yotei"
とかで試して下さい。
>Rs.GetRows
これはExcelの感覚からは行列が逆なので
かえって扱いにくいです。
むしろ、行ごとにチマチマ転記する
http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub0 …
このような方法を覚えた方が応用が利きます。
(このサンプルはMDBです。)

(2)
まずはコンパネ(管理ツール)の「ODBCデータソース」で
接続を確認(テストができないならMSクエリ等でテスト)
した上(認証の登録もすませる)で、
DSN=HOGEHOGE;
だけでも良いのではないでしょうか。
    • good
    • 0
この回答へのお礼

データベースの接続文字列でDNS=~を特別設定しなくても使えているようです。でもこれも興味があるので、また調べようと思います♪

データベースの操作 楽しいです。賢いなぁと思います(あたりまえ?笑)
Excelでないと使えない方法より、いろんなところで応用できそうな方法に興味があったので、上手なSQL文と、上手な取り出し方を求めていました。

いろいろ解説ありがとうございます。

お礼日時:2004/11/21 00:30

こんにちは。



(1)に関しては回答が出ているので・・・。

SERVERを変えればいいですよ。
それでダメな場合は、ほかの設定を教えてもらわないとわかりません・・・。
とりあえず(2)だけ。
(^^ゞ

この回答への補足

お礼を書いたあとこれを書いてますが、
あっけないほど簡単にできました。ありがとうございました。

補足日時:2004/11/21 00:22
    • good
    • 0
この回答へのお礼

ありがとうございます。
へぇ それだけなんですね。それは少し安心です。
(まだ複数台で実験できてないです)

しかし、SERVERを何に変えるのかが分からないです。IPアドレスでしょうか?それとも”コンピュータ名”でしょうか?

お礼日時:2004/11/09 22:25

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