• ベストアンサー

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

アクセスで作成したデータをVB側の変数に(配列)入れたいのですが、どうすればいいのかよく分かりません VB.2003です。 JET4.0 ちなみにデータベースとの連携は初めてです。 またDB側には一応連番を振っています。 本はありますが、記載されていないようです。 なにか不足している点があれば補足要求をしてください。

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

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

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
lucky_123
質問者

補足

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

その他の回答 (2)

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.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 >本はありますが、記載されていないようです。 記載されている本を買いましょう。

lucky_123
質問者

お礼

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

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.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/

関連するQ&A