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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Visual Basic(VBA) データベースから絞り込んでデータを読み込み 1 2023/02/21 19:51
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- JavaScript Typescript が必要な理由 1 2023/01/07 11:45
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- Visual Basic(VBA) エクセルのマクロで対象ごとにシート分けしてその内容をセルに書き込みたい 9 2022/08/24 13:23
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【VB】コンボボックスにデータ...
-
UPDATE時にSETしたい日本語文字...
-
複数SQL発行について
-
VB2005でmdbに接続するには?
-
ListviewにDB内容を表示し方に...
-
VBA 変数名に変数を使用したい。
-
2の補数の計算について
-
WORD VBA プログラム修正をお願...
-
CString型 全角半角を意識せず...
-
AccessのDAOでフィールド名を配...
-
DBから取得した値を配列へ代入する
-
AccessからExcelへエクスポート...
-
エクセルのCSV読み込みについて
-
エクセルで13,410円を数値の134...
-
C#でbyte配列から画像を表示さ...
-
エクセルのマクロ コンボボッ...
-
accessでフィールド追加のあと...
-
構造体配列の一部初期化!!!
-
エクセルでXY座標に並べられた...
-
VBからID3タグをいじる方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【VB】コンボボックスにデータ...
-
UPDATE時にSETしたい日本語文字...
-
初心者ですデータベースの形式 ...
-
VB6.0でSQLServerへ・・・Recor...
-
複数SQL発行について
-
データベースの接続ができない
-
ExcelVBAでのAccessデータベー...
-
vb.netでデータベース(Access)...
-
VBSでADOを使ってaccessのテー...
-
ListviewにDB内容を表示し方に...
-
OracleDataReaderについて…
-
名前'dbOpenDynaset'は宣言され...
-
VB6でデータベースを変えるとテ...
-
PHP+ACCESSのデータベース接続...
-
VB6.0とaccessのDBを接続する
-
VB6.0でアクセス2000...
-
VB6からAccess2000のテーブル使用
-
ASP.NET(VB.NET)でADO.NETを使...
-
エクセルVBAでアクセスのテーブ...
-
StrutsでDataSourceの切り替え
おすすめ情報