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でどんな設定をしなくてはならないでしょう?
説明が悪かったらごめんなさい。やりたいのにできなくて、かなり悩んでます。
No.1ベストアンサー
- 回答日時:
一般的には、
ある問い合わせをレコードセットでした時、
その件数は、
Rs.RecordCount
で調べることができます。
(1)の場合、count(*)で数えているので
結果はレコードが1つしかなくフィールドが1つしかないので
Rs.Fields.Item(0)
又は
Rs(0)
で結果を得ることができます。
GetRowsは複数のレコードを配列で得る方法です。
この場合は、必要ありません。
とりあえず(1)だけ・
感激です。今やってみて、できました。
ありがとうございます。
このことに関連することも、しっかり理解したいですが、分かりやすい本などありますか?私は見つけられなかったのです。
No.3
- 回答日時:
失礼します。
「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;
だけでも良いのではないでしょうか。
データベースの接続文字列でDNS=~を特別設定しなくても使えているようです。でもこれも興味があるので、また調べようと思います♪
データベースの操作 楽しいです。賢いなぁと思います(あたりまえ?笑)
Excelでないと使えない方法より、いろんなところで応用できそうな方法に興味があったので、上手なSQL文と、上手な取り出し方を求めていました。
いろいろ解説ありがとうございます。
No.2
- 回答日時:
こんにちは。
(1)に関しては回答が出ているので・・・。
SERVERを変えればいいですよ。
それでダメな場合は、ほかの設定を教えてもらわないとわかりません・・・。
とりあえず(2)だけ。
(^^ゞ
ありがとうございます。
へぇ それだけなんですね。それは少し安心です。
(まだ複数台で実験できてないです)
しかし、SERVERを何に変えるのかが分からないです。IPアドレスでしょうか?それとも”コンピュータ名”でしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelVBAでのAccessデータベー...
-
初心者ですデータベースの形式 ...
-
名前'dbOpenDynaset'は宣言され...
-
UPDATE時にSETしたい日本語文字...
-
【VB】コンボボックスにデータ...
-
OracleDataReaderについて…
-
VB6でデータベースを変えるとテ...
-
PHP + Postgres エラーのハンド...
-
ASPでoracleの接続について教え...
-
VBでAccessにSQL文を実行して値...
-
VBA 変数名に変数を使用したい。
-
エクセルでXY座標に並べられた...
-
C#でbyte配列から画像を表示さ...
-
Accessのフィールド名に半角括...
-
VB.NETで1→A、2→B、26→Z、27→AA...
-
機種依存文字と特殊文字について
-
SQLを発行とは?クエリの作成と...
-
2つ目のレコードの値を取得す...
-
INT64対応のprintf系関数はあり...
-
『列名 '担当者CD' があいま...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【VB】コンボボックスにデータ...
-
データベースの接続ができない
-
UPDATE時にSETしたい日本語文字...
-
VB6.0でSQLServerへ・・・Recor...
-
複数SQL発行について
-
初心者ですデータベースの形式 ...
-
VB6.0とaccessのDBを接続する
-
名前'dbOpenDynaset'は宣言され...
-
ListviewにDB内容を表示し方に...
-
OracleDataReaderについて…
-
StrutsでDataSourceの切り替え
-
PHP+ACCESSのデータベース接続...
-
エクセルVBAでアクセスのテーブ...
-
VB6からAccess2000のテーブル使用
-
VBSでADOを使ってaccessのテー...
-
vb.netでデータベース(Access)...
-
VB6でデータベースを変えるとテ...
-
VB2005でACCESSの処理
-
Excel VBA : Accessのデータを検索
-
VB6.0でアクセス2000...
おすすめ情報