- ベストアンサー
VB6からAccess2000へのデータベースの形式の認識エラーの解決方法
- VB6でプログラムを組んでいる際に、Access2000のデータベースの形式が認識されないエラーが発生します。
- このエラーの原因は、現在実行中のオートメーションオブジェクト内で発生していることです。
- 解決方法としては、MicroSoft Accessの旧バージョンのデータベースに変換を行うことで、プログラムが正常に動作するようになります。ただし、旧バージョンのデータベースを使用すると使い勝手が悪くなる可能性があります。
- みんなの回答 (9)
- 専門家の回答
質問者が選んだベストアンサー
Data1のConnectプロパティが[Access]になってませんか? もしそうだったら[Access 2000]にしてみてください。
その他の回答 (8)
- TAGOSAKU7
- ベストアンサー率65% (276/422)
やはりロード時なのでしょうか? ためしに、DataコントロールにDatabaseNameやRecordSetにセットしている部分をコメントして実行してください。 そうしたら、ロードイベント終了後にエラーは出ないようになります?
補足
>コメントして実行 すいません。お恥ずかしい話ですが意味が理解できないんですけど・・・ 勝手に推測させてもらって申し訳無いですが確認を行ってみました。 Form Loadに記述してあるDatabaseNameやRecordSetを’(REM文)にする。 ということですか? Form Loadの End Sub処理終了後エラーが表示されました。 旧バージョンにて確認を行ったところForm Load End Subにて処理が終わりました。 TAGOSAKU7さんの意図と違うことを行っているかもしれません。 違っていたら申し訳ございませんが再度、ご指摘の程お願いいたします。
- TAGOSAKU7
- ベストアンサー率65% (276/422)
もう一度チャンスをください。 1.プロジェクトを開いてください。 2.開始(ファンクションキーF5)を押さないで、ステップ実行(ファンクションキーF8)を押しっぱなしにしてください。 3.どこかでエラーが出ると思うので、その部分とその前後の処理を教えてください。
補足
TAGOSAKU7さん本当に何度もすいません。 私も、なんとか自己解決できないかと模索していたのですが・・・ エラーが出ている場所ですが Form Loadの End Sub まで行き、その後F8を押すとエラーが表示されます。 Access旧バージョンにて確認を行ったところForm Loadの次にくる文は下記の ようになっておりました。 Private Sub Text2_Change() Command1.BackColor = &H8080FF End Sub これ以上F8を押しても進みませんでした。
- TAGOSAKU7
- ベストアンサー率65% (276/422)
すいません。。。力量不足です。。。m(__)m 想像のつくパターンをいろいろやってみたのですが、エラーの発生する状況を再現できません。。。 あとは未検証ですが、(Access.Application)という文字がプログラムに入っているのでは?という点ぐらいです。。。 これを使用するとおそらくAC2000が入っていたらAC20000形式DBをデフォルトとするので、AC97形式DBオープン時に問い合わせダイアログが表示されるのだと思ったのですが、よく考えると、AC2000形式DBではエラーが出るのですよね? うぅ・・・矛盾する・・・ うーむプロジェクトを見てみたい・・・ もうちょっと考えます。。。ごめんなさい。。。
- TAGOSAKU7
- ベストアンサー率65% (276/422)
どうやらロードは問題無いのかな? >エラーが出る これはダイアログですよね? 「デバッグ」ボタンがダイアログにありませんか? もしデバッグボタンが存在するならば、それを押し、どこの行で止まってるかが知りたいです。 あとData1.RecordSetやData1.RecordSourceを、他の所で使用してませんか? 現状が把握できません。 もしまだ作りはじめなら、フォームをメモ帳などで開いて、全てをここに張ってください。 接続時にエラーが起こら無いのであれば、推測不能です。
補足
すいません。確かにロード時にはエラー表示はでません。始めに確認しておくべき作業でした。 1.ダイアログボックスには【OK】と【ヘルプ】しか表示されていません。 2.勝手を言って申し訳ないのですがプログラムは一応、 組み終わっていて結構長い文章ですので全てを表示するのはちょっと難しいです。 Data1.RecordSetは下にあるような使い方をしております。 (データを格納する作業) Set db = DBEngine.Workspaces(0).OpenDatabase(DbName) Set ds = db.OpenRecordset(Data1.RecordSource, dbOpenDynaset) Set ds = ds.OpenRecordset() Set Data1.Recordset = ds Data1.Recordset.AddNew ~データを入れる作業~ 例 ds!管規格 = Kankikaku ←こんな文です。 Data1.Recordset.Update Data1.RecordSourceはForm Loadにて一度だけ使用しております。
- TAGOSAKU7
- ベストアンサー率65% (276/422)
こちらこそ何度もすいません。 質問です。 1.データコントロールのRecordSourceプロパティには、デザイン時に既に何かSQL文を設定済みなのですか? 2.DbResourceはString型ですね? 3.実際のエラーメッセージは、どの行で出るのか、教えてください。
補足
1.必要とする(連結したいテーブルという表現でお解りでしょうか?)テーブル名を入れてあります。 プロパティウィンドウのDatabaseNameに旧バージョンに変更しない状態の ファイル名をDatabaseNameを入れてRecordSourceを入れようとすると 同じエラーメッセージが表示されます。 2.DbResourceはString型です。 3.ブレークポイントの設定をForm Load内で行ったのですが エラーは表示されません。 Form Loadを出た後、何もアクションを起さない状態で エラーが表示されてしまいます。 度々、申し訳ございませんが、よろしくお願いいたします。
- TAGOSAKU7
- ベストアンサー率65% (276/422)
Private Const DB_FILE As String = "c:\test.mdb" はモジュールの先頭 Option Explicit の次に書いておいたら、そのモジュール内で使用できる定数になります。 ところで > DbName = "ファイルのありかを記述" > DbResource = Data1.RecordSource > Data1.DatabaseName = DbName この順番を見るとData1.RecordSource としてますよね? Data1はすでに何かに接続済みなのですか? もっと広範囲でソースが見たいです。 上記の3行を含む関数ごと見せてもらえませんか?
補足
本当に何度も申し訳ございません。 お答えになっているか、どうか一抹の不安が残るのですが 解らないなりに書いてみましたのでご確認をお願いいたします。 標準モジュール Module1に Public DbResource1 As String Option Explicit には Dim db As Database Dim ds As Recordset Dim DbName As String と表記し Private Sub Form_Load()には DbName = "E:\KEISAN\Gesui\負の突出_1\Mdb\管諸元.mdb" DbResource = Data1.RecordSource Data1.DatabaseName = DbName としております。
- TAGOSAKU7
- ベストアンサー率65% (276/422)
Microsoft DAO3.51を Microsoft DAO3.6に変更してもだめですか? Data1=データコントロールですよね? 一応以下のソースでぼくの方は動きますが・・・ Private Const DB_FILE As String = "c:\test.mdb" Private Sub Form_Load() With Me .Data1.DatabaseName = DB_FILE .Data1.RecordSource = "select * from Table1" .Data1.Refresh End With End Sub
補足
たびたびすいません。 DAO3.51→DAO3.6にしても同じ結果になりました。 Data1=データベースファイル名になるようにしています。 ただ勉強不足で申し訳ないのですが Private Const DB_FILE As String = "c:\test.mdb" の記述する場所がわかりません。この宣言が入ると違うのでしょうか?
- TAGOSAKU7
- ベストアンサー率65% (276/422)
情報をください 1.Accessとの接続を行っている部分のソースを見せてもらえませんか? 2.プロジェクトの参照設定をどのようにしたかを知りたいです。 もしかしてMicrosoft Access 9.0 Object Library のみとか? 3.DB関係のコンポーネントを何か追加しましたか? 4.Accessの用途を知りたいです。 AccessはDBとしてのみの使用ですか?それともレポートを使用したり、アクセス内のVBAを実行したりするのでしょうか?
補足
情報不足ですいませんでした。なにぶん超初心者なので質問されている事と違った答えになるかもしれませんがよろしくお願いいたします。 1.Private Sub Form_Load() DbName = "ファイルのありかを記述" DbResource = Data1.RecordSource Data1.DatabaseName = DbName 2.Visual Basic For Applicatuins Visual Basic runtime objects and procedures Visual Basic objects and procedures OLE Automation object Library Microsoft DAO3.51 Microsoft Word9.0 object Library Microsoft Access 9.0 Object Library 3.特に追加はしていないです。 4.AccessはDBとして使用してレポートはWordの差込印刷機能を使用しています。
お礼
Accessになってました。大変申し訳ございませんでした。 Visual Studio(R) 6.0 Service Pack 5 を インストールして確認したところ問題なく動作しました。 初めて質問したのですが、こんなに親切に教えてもらって本当に嬉しいです。 ありがとうございました。これからも質問をさせてもらいますのでよろしく お願いいたします。