• ベストアンサー
  • 暇なときにでも

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

  • 質問No.964499
  • 閲覧数249
  • ありがとう数1
  • 回答数3

お礼率 29% (52/179)

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

VB.2003です。
JET4.0


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

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

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

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

  • 回答No.1
  • ベストアンサー

ベストアンサー率 65% (358/549)

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 するのに非常に時間がかかる場合があるので要注意です。)
補足コメント
lucky_123

お礼率 29% (52/179)

DBを開く部分でエラーになってしまいます。
オブジェクト参照がオブジェクトインターフェースに設定されていませんとで出来ます。
投稿日時:2004/08/17 12:34

その他の回答 (全2件)

  • 回答No.3

ベストアンサー率 58% (728/1234)

> 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

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

記載されている本を買いましょう。
お礼コメント
lucky_123

お礼率 29% (52/179)

皆様 ご回答・アドバイス等ありがとうございます。
投稿日時:2004/08/26 00:24
  • 回答No.2

ベストアンサー率 27% (4546/16269)

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/
関連するQ&A

その他の関連するQ&Aをキーワードで探す

ページ先頭へ