- ベストアンサー
データベースの内容を変数に入れる。
アクセスで作成したデータをVB側の変数に(配列)入れたいのですが、どうすればいいのかよく分かりません VB.2003です。 JET4.0 ちなみにデータベースとの連携は初めてです。 またDB側には一応連番を振っています。 本はありますが、記載されていないようです。 なにか不足している点があれば補足要求をしてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
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 するのに非常に時間がかかる場合があるので要注意です。)
その他の回答 (2)
- todo36
- ベストアンサー率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 >本はありますが、記載されていないようです。 記載されている本を買いましょう。
お礼
皆様 ご回答・アドバイス等ありがとうございます。
- imogasi
- ベストアンサー率27% (4737/17069)
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/
補足
DBを開く部分でエラーになってしまいます。 オブジェクト参照がオブジェクトインターフェースに設定されていませんとで出来ます。