誕生日にもらった意外なもの

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

A 回答 (9件)

Data1のConnectプロパティが[Access]になってませんか?


もしそうだったら[Access 2000]にしてみてください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/11/13 19:09

やはりロード時なのでしょうか?



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

この回答への補足

>コメントして実行

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

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

TAGOSAKU7さんの意図と違うことを行っているかもしれません。
違っていたら申し訳ございませんが再度、ご指摘の程お願いいたします。

補足日時:2001/11/13 16:35
    • good
    • 0

もう一度チャンスをください。



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

この回答への補足

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

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

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

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

これ以上F8を押しても進みませんでした。

補足日時:2001/11/13 14:56
    • good
    • 0

すいません。

。。力量不足です。。。m(__)m

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

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

もうちょっと考えます。。。ごめんなさい。。。
    • good
    • 0

どうやらロードは問題無いのかな?



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

あと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にて一度だけ使用しております。

補足日時:2001/11/12 18:02
    • good
    • 0

こちらこそ何度もすいません。



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

この回答への補足

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

2.DbResourceはString型です。

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

度々、申し訳ございませんが、よろしくお願いいたします。

補足日時:2001/11/12 15:38
    • good
    • 0

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

としております。

補足日時:2001/11/12 14:58
    • good
    • 0

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"
の記述する場所がわかりません。この宣言が入ると違うのでしょうか?

補足日時:2001/11/12 13:52
    • good
    • 0

情報をください



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の差込印刷機能を使用しています。

補足日時:2001/11/12 12:40
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!