OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

VB6→Access2000

  • すぐに回答を!
  • 質問No.167237
  • 閲覧数601
  • ありがとう数2
  • 気になる数0
  • 回答数9
  • コメント数0

お礼率 38% (8/21)

OSはNT4.0です。VB6でプログラムを組んでいます。
データベースソフトはAccess2000です。
プログラムを実行すると【データベースの形式’ (データベースファイル名が表示)’を認識できません。】というメッセージボックスが表示されます。そのメッセージボックスにあるヘルプをクリックすると
'項目' (Error 524)このエラーは、現在実行中のオートメーション オブジェクト内で発生しました。
と表示されまして、解決できません。
Accessの機能にある【MicroSoft Accessの旧バージョンのデータベースに変換】を行い、プログラムを実行すると動くのですが旧バージョンだというメッセージボックスが表示され使い勝手が非常に悪いです。何が悪いのでしょうか?
通報する
  • 回答数9
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.9
レベル12

ベストアンサー率 65% (276/422)

Data1のConnectプロパティが[Access]になってませんか?
もしそうだったら[Access 2000]にしてみてください。
お礼コメント
tazataka

お礼率 38% (8/21)

Accessになってました。大変申し訳ございませんでした。
Visual Studio(R) 6.0 Service Pack 5 を
インストールして確認したところ問題なく動作しました。
初めて質問したのですが、こんなに親切に教えてもらって本当に嬉しいです。
ありがとうございました。これからも質問をさせてもらいますのでよろしく
お願いいたします。
投稿日時 - 2001-11-13 19:09:14
-PR-
-PR-

その他の回答 (全8件)

  • 回答No.3
レベル12

ベストアンサー率 65% (276/422)

Private Const DB_FILE As String = "c:\test.mdb" はモジュールの先頭 Option Explicit の次に書いておいたら、そのモジュール内で使用できる定数になります。 ところで > DbName = "ファイルのありかを記述" > DbResource = Data1.RecordS ...続きを読む
Private Const DB_FILE As String = "c:\test.mdb"
はモジュールの先頭
Option Explicit
の次に書いておいたら、そのモジュール内で使用できる定数になります。


ところで
> DbName = "ファイルのありかを記述"
> DbResource = Data1.RecordSource
> Data1.DatabaseName = DbName

この順番を見るとData1.RecordSource としてますよね?
Data1はすでに何かに接続済みなのですか?
もっと広範囲でソースが見たいです。
上記の3行を含む関数ごと見せてもらえませんか?
補足コメント
tazataka

お礼率 38% (8/21)

本当に何度も申し訳ございません。
お答えになっているか、どうか一抹の不安が残るのですが
解らないなりに書いてみましたのでご確認をお願いいたします。

標準モジュール 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

としております。
投稿日時 - 2001-11-12 14:58:27


  • 回答No.2
レベル12

ベストアンサー率 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 ...続きを読む
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
補足コメント
tazataka

お礼率 38% (8/21)

たびたびすいません。
DAO3.51→DAO3.6にしても同じ結果になりました。
Data1=データベースファイル名になるようにしています。

ただ勉強不足で申し訳ないのですが
Private Const DB_FILE As String = "c:\test.mdb"
の記述する場所がわかりません。この宣言が入ると違うのでしょうか?
投稿日時 - 2001-11-12 13:52:24
  • 回答No.1
レベル12

ベストアンサー率 65% (276/422)

情報をください 1.Accessとの接続を行っている部分のソースを見せてもらえませんか? 2.プロジェクトの参照設定をどのようにしたかを知りたいです。 もしかしてMicrosoft Access 9.0 Object Library のみとか? 3.DB関係のコンポーネントを何か追加しましたか? 4.Accessの用途を知りたいです。 AccessはDBとしてのみの使用ですか? ...続きを読む
情報をください

1.Accessとの接続を行っている部分のソースを見せてもらえませんか?

2.プロジェクトの参照設定をどのようにしたかを知りたいです。
もしかしてMicrosoft Access 9.0 Object Library のみとか?

3.DB関係のコンポーネントを何か追加しましたか?

4.Accessの用途を知りたいです。
AccessはDBとしてのみの使用ですか?それともレポートを使用したり、アクセス内のVBAを実行したりするのでしょうか?
補足コメント
tazataka

お礼率 38% (8/21)

情報不足ですいませんでした。なにぶん超初心者なので質問されている事と違った答えになるかもしれませんがよろしくお願いいたします。

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の差込印刷機能を使用しています。
投稿日時 - 2001-11-12 12:40:14
  • 回答No.4
レベル12

ベストアンサー率 65% (276/422)

こちらこそ何度もすいません。 質問です。 1.データコントロールのRecordSourceプロパティには、デザイン時に既に何かSQL文を設定済みなのですか? 2.DbResourceはString型ですね? 3.実際のエラーメッセージは、どの行で出るのか、教えてください。 ...続きを読む
こちらこそ何度もすいません。

質問です。
1.データコントロールのRecordSourceプロパティには、デザイン時に既に何かSQL文を設定済みなのですか?
2.DbResourceはString型ですね?
3.実際のエラーメッセージは、どの行で出るのか、教えてください。
補足コメント
tazataka

お礼率 38% (8/21)

1.必要とする(連結したいテーブルという表現でお解りでしょうか?)テーブル名を入れてあります。
プロパティウィンドウのDatabaseNameに旧バージョンに変更しない状態の
ファイル名をDatabaseNameを入れてRecordSourceを入れようとすると
同じエラーメッセージが表示されます。

2.DbResourceはString型です。

3.ブレークポイントの設定をForm Load内で行ったのですが
エラーは表示されません。
Form Loadを出た後、何もアクションを起さない状態で
エラーが表示されてしまいます。

度々、申し訳ございませんが、よろしくお願いいたします。
投稿日時 - 2001-11-12 15:38:21
  • 回答No.5
レベル12

ベストアンサー率 65% (276/422)

どうやらロードは問題無いのかな? >エラーが出る これはダイアログですよね? 「デバッグ」ボタンがダイアログにありませんか? もしデバッグボタンが存在するならば、それを押し、どこの行で止まってるかが知りたいです。 あとData1.RecordSetやData1.RecordSourceを、他の所で使用してませんか? 現状が把握できません。 もしまだ作りはじめなら、フォームをメ ...続きを読む
どうやらロードは問題無いのかな?

>エラーが出る
これはダイアログですよね?
「デバッグ」ボタンがダイアログにありませんか?
もしデバッグボタンが存在するならば、それを押し、どこの行で止まってるかが知りたいです。

あとData1.RecordSetやData1.RecordSourceを、他の所で使用してませんか?

現状が把握できません。

もしまだ作りはじめなら、フォームをメモ帳などで開いて、全てをここに張ってください。
接続時にエラーが起こら無いのであれば、推測不能です。
補足コメント
tazataka

お礼率 38% (8/21)

すいません。確かにロード時にはエラー表示はでません。始めに確認しておくべき作業でした。

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にて一度だけ使用しております。
投稿日時 - 2001-11-12 18:02:01
  • 回答No.7
レベル12

ベストアンサー率 65% (276/422)

もう一度チャンスをください。 1.プロジェクトを開いてください。 2.開始(ファンクションキーF5)を押さないで、ステップ実行(ファンクションキーF8)を押しっぱなしにしてください。 3.どこかでエラーが出ると思うので、その部分とその前後の処理を教えてください。 ...続きを読む
もう一度チャンスをください。

1.プロジェクトを開いてください。
2.開始(ファンクションキーF5)を押さないで、ステップ実行(ファンクションキーF8)を押しっぱなしにしてください。
3.どこかでエラーが出ると思うので、その部分とその前後の処理を教えてください。
補足コメント
tazataka

お礼率 38% (8/21)

TAGOSAKU7さん本当に何度もすいません。
私も、なんとか自己解決できないかと模索していたのですが・・・

エラーが出ている場所ですが
Form Loadの End Sub まで行き、その後F8を押すとエラーが表示されます。

Access旧バージョンにて確認を行ったところForm Loadの次にくる文は下記の
ようになっておりました。

Private Sub Text2_Change()
Command1.BackColor = &H8080FF
End Sub

これ以上F8を押しても進みませんでした。
投稿日時 - 2001-11-13 14:56:11
  • 回答No.6
レベル12

ベストアンサー率 65% (276/422)

すいません。。。力量不足です。。。m(__)m 想像のつくパターンをいろいろやってみたのですが、エラーの発生する状況を再現できません。。。 あとは未検証ですが、(Access.Application)という文字がプログラムに入っているのでは?という点ぐらいです。。。 これを使用するとおそらくAC2000が入っていたらAC20000形式DBをデフォルトとするので、AC97形式DBオープン時に問い合 ...続きを読む
すいません。。。力量不足です。。。m(__)m

想像のつくパターンをいろいろやってみたのですが、エラーの発生する状況を再現できません。。。
あとは未検証ですが、(Access.Application)という文字がプログラムに入っているのでは?という点ぐらいです。。。
これを使用するとおそらくAC2000が入っていたらAC20000形式DBをデフォルトとするので、AC97形式DBオープン時に問い合わせダイアログが表示されるのだと思ったのですが、よく考えると、AC2000形式DBではエラーが出るのですよね?
うぅ・・・矛盾する・・・

うーむプロジェクトを見てみたい・・・

もうちょっと考えます。。。ごめんなさい。。。
  • 回答No.8
レベル12

ベストアンサー率 65% (276/422)

やはりロード時なのでしょうか? ためしに、DataコントロールにDatabaseNameやRecordSetにセットしている部分をコメントして実行してください。 そうしたら、ロードイベント終了後にエラーは出ないようになります? ...続きを読む
やはりロード時なのでしょうか?

ためしに、DataコントロールにDatabaseNameやRecordSetにセットしている部分をコメントして実行してください。
そうしたら、ロードイベント終了後にエラーは出ないようになります?
補足コメント
tazataka

お礼率 38% (8/21)

>コメントして実行

すいません。お恥ずかしい話ですが意味が理解できないんですけど・・・
勝手に推測させてもらって申し訳無いですが確認を行ってみました。

Form Loadに記述してあるDatabaseNameやRecordSetを’(REM文)にする。
ということですか?
Form Loadの End Sub処理終了後エラーが表示されました。
旧バージョンにて確認を行ったところForm Load End Subにて処理が終わりました。

TAGOSAKU7さんの意図と違うことを行っているかもしれません。
違っていたら申し訳ございませんが再度、ご指摘の程お願いいたします。
投稿日時 - 2001-11-13 16:35:53
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

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

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ