• ベストアンサー

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

アクセスで作成したデータを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/17068)
回答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

  • データベース連携プログラムを作れるエディション

    こんにちは。VB6.0が家にあったので、勉強を始めました。 書店に「VB6.0でデータベースプログラム入門」みたいな本があったのですが、業務でDBをつかうことが多いと思われるので、やってみたいと思ってます。 本の内容はACCESSをデータベースとして使用しています。 しかし、僕の持っているVBは Learning Edition です。以前会社勤めしていたころ、Proffessional Editionじゃないとデータベースアクセスができないと聞いたような覚えがあるんですが、そこのところはどうなんでしょうか? よろしくお願いします。

  • VBにアクセスのデータベースを読み込みたい(変数の定義)

    こんにちわM(__)M VB超初心者です・・・ 一度テキストにそってアクセスのデータベースをVBで読み込んで、リストを表示したり・・・データを削除したり・・・といったものを作ったことがあるのですが、だいぶ忘れてしまいました。 (SQLというんでしたっけ?) 読み込んでからの処理はこれからいろいろヘルプなので調べていけば解決すると思うのですが、まず読み込む段階ではじめに変数の定義をしますよね? どうやらその変数の定義ができていないらしく、「ユーザー型変数の定義がされていません」といったエラーがでます(実行時) Public wspace As Workspace のWorkspaceが確かに青くなりません。 以前はこれを解決するために、コンポーネントの追加?みたいのでなにか機能を追加したような気がするのですが(人に聞いてやったのテキストがありません・・・)どの機能を追加したのか、思い出せないのです>< この変数の定義さえできれば後は進んでいけると思いますので、この点だけ教えていただきたいです。 またはアクセスデータベースを読み込む解説みたいのがのっているサイトがありましたら教えていただきたいです。(初心者でも理解できるもので) よろしくお願いしますM(__)M

  • VBでのデータベース作成のメリットって?

    VBでのデータベース作成のメリットって? VBとAccessを勉強させられていますが、 Accessというデータベースソフトがあるのに、なぜ書店には「VBでデータベースを作る」といった本があふれているのでしょうか。 Accessでは実現できない機能や利便性があるのでしょうか。 PCには両方のソフトが入っているという条件で回答いただけませんでしょうか。

  • VB2005にてデータベースに接続したい。

    VBの経験は、VB6にて簡単な改修などしか行ったことがない初心者です。質問の内容が自分のスキルと見合っていないことは承知しているのですが、業務上どうしても必要になってしまったのでお分かりでしたら教えて下さい。 現在、簡単な社員管理システムのようなものを作成していて、アクセスで作成したデータベースをVB2005を使って操作するようにしています。 その際に、データベースがある共有フォルダにパスワードが設定してあった場合の接続方法がわかりません。windows上で一度そのフォルダにアクセスして、ユーザー名、パスワードを入力し接続してしまえば、VBからも接続できるのですが・・・ 接続文字列の前に何か記入すべきコードがあるのでしょうか?お分かりの方がいらしたら教えて下さい。よろしくお願いします。 現在の接続文字列は以下のとおりです。 Dim Cn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\192.168.0.1\tadasuke2002\db1.mdb")

  • データベースロック(VB)

    お世話になってます。 VB6.0+ACCESS97 ADOを使用してます。 複数ユーザーで使用する為、データベースにロックをかけたいのですが いろいろ本なので調べましたところDAOなら set db = DBEngine.OpenDatabase("c:\~~.mdb",True) というようにExclusiveプロパティをTrueに設定すれば いいみたいですが。これと同じことをADOでは どのようにすればよろしいのでしょうか? VB初心者の為、ADOしかわからないもので(^_^; なにか良いアドバイスがあればお願いします。

  • データベースアクセスで。

    VBとAccessを使用してデータのやりとりを行っています。 Data1を貼り、DatabaseNameを設定するところまではうまくいきましたが、RecordSourceプロパティをクリックすると「データベースの形式'C:\xxx\xxx.mdb'を認識できません」と表示されてしまいます。 別DBを設定すると上記の現象がでないので、Accessが原因だとは思いますが、VBを使用する際の注意点などあるのでしょうか? 【環境】WinXP SP2 VB6.0 / Access2000です。

  • データベースの値を構造体へ代入

    VB.NETにてWindowsMobileの開発を行っています。 データベースへのアクセスに時間がかかるので、 最初にデータベースの値を全て構造体配列へ代入しておき、 最後に保存とした時にまたデータベースへ代入させるといったプログラムを組もうと思います。 その際に全てのフォームから構造体配列へアクセスさせたいのですが、 構造体配列をグローバル化させる方法はありませんでしょうか? ご教授のほどよろしくお願い申し上げます。

  • VB6でデータベースを変えるとテーブル形式エラーになります

    VB6 とACCESS97 でプログラムを作成、問題なく動いていました。 事情により、このパソコンにACCESS2000をインストールし(ACCESS97 と ACCESS2000 の二つが入っています)VB6のデータベースをACCESS2000に変換しました。 VBの参照設定をMicrosoft Access8.0 Object Livery から9.0 に換え、ACCESS 2000のデータベースのプロパティでファイルの種類をMicrosoft Access から Microsoft Access for Windows に換えました。 これを実行すると「実行時エラー3343 データベースの形式 "C:\SALES\TEST.mdb" を認識できません」と出ます。 他に修正すべきところがあるのでしょうか?それともバージョンの違うACCESS を併用するのはまずいのでしょうか? TEST.mdb をクリックすると、ACCESS2000で問題なく立ち上がります。 なお、VBからACCESSへの接続は下記のように書いています。 Public DB As DAO.Database Set DB = DBEngine.Workspaces(0).OpenDatabase("C:\SALES\TEST.mdb") 宜しくお願いします。

  • ExcelVBAでのAccessデータベースとの接続

    ExcelのVBAによるAccessデータベースの操作を勉強中(始めたばかり)です。 ソフトバンク パブリッシング出版の「Excel VBA データベース構築」で勉強しているのですが、その中で、外部データとの接続に関して以下のような例文がありました。 Sub openADOdb() Dim myADOcon As ADODB.Connection Set myADOcon = New ADODB.Connection myADOcon.Open _ "Provider=Microsoft.Jet.OLEDB.3.51;Data Source=C:\残高DB.mdb" myADOcon.Close Set myADOcon = Nothing End Sub これを実行すると、myADOcon.Open ”Provider~ のところで、以下のエラーが発生しました。 実行時エラー’3706’: プロバイダが見つかりません。正しくインストールされていない可能性があります。 これはExcelもしくはAccessが正しくインストールされていないということなのでしょうか。対処法としてはどのような方法がありますか。 また、本には「プロバイダ名には、どのOLE DBプロバイダを使用するかをしていします。この文字列は、OLE DBプロバイダのマニュアルやヘルプを調べると記載されています。」と出ているのですが、OLE DBプロバイダのヘルプとはどのようにしたら見れるのでしょうか。 なお、Excel97とAccess97を使っています。 以上2点よろしくお願いします。

  • VB2008からVB2010に更新したのですけど。

    VB2008EEで作ったデーターベース(Accessでつくった。)を操作するプロジェクトをVB2010EEでファイルを更新して実行しましたが、「Micosoft.Jet.OLED.4.0プロバイダーはローカルのコンピューターに登録されていません。」とのエラーが表示され、データーベースにアクセスできません。データーベースは少し古いAccessで作ってます。このエラーを解除する方法を教えてください。いろいろ本を買って読んだり、いろいろ質問項目をみていたのですが、解決方法が見つかりません。どうかよろしくお願い申し上げます。