こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

データベースの内容を変数に入れる。

アクセスで作成したデータをVB側の変数に(配列)入れたいのですが、どうすればいいのかよく分かりません

VB.2003です。
JET4.0


ちなみにデータベースとの連携は初めてです。
またDB側には一応連番を振っています。

本はありますが、記載されていないようです。

なにか不足している点があれば補足要求をしてください。

投稿日時 - 2004-08-16 23:09:22

QNo.964499

暇なときに回答ください

質問者が選んだベストアンサー

MDB を開くところとレコードセットを開くところは、↓の参考URL を参照してください。
OpenRecordset は、テーブル名やクエリー名を指定できるだけでなく、SQL を指定することもできますし、2番目以降のパラメータは dbOpenDynaset 以外にもいろいろありますので、そのあたりの詳細は DAO のヘルプを参照してください。

配列に入れるというのは、あるフィールドの内容をレコード数の分だけ、ということでしょうか?
勝手にそういう前提で書きますけど、

Dim db As Database
Dim rs As Recordset
Dim v() As Variant
Dim i As Long

Set db = ...
Set rs = ...
i = 0
Do Until rs.EOF
ReDim Prevserve v(i)
v(i) = rs.Fields("なんとか").Value
i = i + 1
rs.MoveNext
Loop
Set rs = Nothing
という感じでしょうか。
ループの中で ReDim Preserve をするのは効率が悪い、というのであれば、
最初に Set rs2.OpenRecordSet("SELECT COUNT(*) FROM ...") のように、別のレコードセットを作成してレコード数を取得しておいて、最初に一度だけ ReDim することも可能です。( rs.RecordCount はレコードセットのタイプによっては一度 MoveLast しなければ全レコード数を取得できませんし、場合によっては MoveLast するのに非常に時間がかかる場合があるので要注意です。)

参考URL:http://homepage2.nifty.com/inform/vbdb/dao_basic.htm

投稿日時 - 2004-08-17 02:01:52

補足

DBを開く部分でエラーになってしまいます。
オブジェクト参照がオブジェクトインターフェースに設定されていませんとで出来ます。

投稿日時 - 2004-08-17 12:34:32

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

> VB.2003です。

VB.NET 2003のこと?
ADO.NETでやるのが一般的です。

http://www.atmarkit.co.jp/fdotnet/basics/adonet02/adonet02_01.html
http://www.atmarkit.co.jp/fdotnet/aspexp/aspexp03/aspexp03_01.html

>本はありますが、記載されていないようです。

記載されている本を買いましょう。

投稿日時 - 2004-08-17 12:26:47

お礼

皆様 ご回答・アドバイス等ありがとうございます。

投稿日時 - 2004-08-26 00:24:34

ANo.2

VB.2003とはVB.netですね。
VB6、アクセスVBA、VB.netの3種が並存してややこしい
時期なので、VB.netであることを明示した方が良いかと。
----
http://www.mitene.or.jp/~sugisita/net/vbnet_rep007.html
にコード例が載っていました。こちらはVB.netを念頭の
記事です。ADOです。
ADOとJet
http://www.int21.co.jp/pcdn/vb/noriolib/vbmag/9812/vb6da/

投稿日時 - 2004-08-17 12:18:38

あなたにオススメの質問