環境:Windows98 + VB5.0(SP3) + Access97
VBプログラムで、Access-MDBのオープンの為、以下の命令を発行します。
Set DB = OpenDatabase("D:\・・・\Md1.mdb")
通常問題無く動いているのですが、たまに以下のエラーが発生します。
エラー番号:3343
エラー内容:データベースの形式 'D:\・・・\Md1.mdb' を認識できません。
このエラー発生後は、REPAIR命令で修復しなければなりません。
このエラーの理由・対策等をお教え下さい。
少し古い環境での問題なので、既に語り尽くされているのかもしれませんが、よろしくお願いします。
No.1ベストアンサー
- 回答日時:
こんにちは
私も以前世話してたシステムもVB5-Ac97で
tngさんと同じ現象が、出ました。
それも、違う顧客で3件も。
その時の原因として共通だったのは
1.MDBが全体で50MB超えていた
2.一番でかいレコード数のテーブルが壊れていた
3.壊れ方は、数値の項目に記号の羅列が化けて入っていた
対処方法は
最初はデータベースを修復をして対処しました。
が、またしばらくして同じ顧客で発生したので
以下のようにすると治まりました
1.エラー発生レコードは削除
2.新規mdbを作成
3.既存mdbのテーブルを新規mdbにインポート
一度試してください
早速ありがとうございます。やはり発生していましたか。しかし、違う顧客で3件というのは厳しいですね。
3つの原因について、私の状況を書いてみます。
1.MDBが50MB以上 : 226KBのMDBでも発生しました。
2.・・・テーブルが壊れていた : エラー発生するとMDB自体が開かないのでどのテーブルが壊れていたかは判りませんでした。 またエラーが発生するのはデータベースのオープンの時で、テーブルオープンでエラーが発生した事はありませんでした。
3.数値項目に記号:MDB修復をするとデータ内容は全て保持されていました。データ内容がおかしくなっていた事はありませんでした。
書いて下さった対処方法ですが、これを行うと一切再発しなかったという事でしょうか?もしそうならば、素晴らしいですね。
ただ、私の場合、エラー発生レコードというのが存在しないので、単にテーブルインポートだけでしょうか。
No.3
- 回答日時:
私も以前同じような状況になって
データ件数もそれほど多くなかったのでアプリケーション起動時に
データベースを修復してから起動するようにしました。
今、VB6でAccess2000で同じように開発してるのです
また同じような事にならないか心配です(笑)
ありがとうございます。
事前に修復しておいても駄目ですよね、私やってみましたから、全然効き目有りませんでした。
Access2000ならば絶対大丈夫でしょうね、Access97だけの現象ですから。
それにしても、思ったより回答が少ないですね。あまり発生していないのでしょうか。確かに、Win98+VB5+Ac97の全く同じ環境で、一切エラー発生無しというシステムも有りましたから。だから、かえって、何故?が深くなるのですが。
まあPC時代になってから、こういうエラーをキチンと調べるのは無意味という風潮がありますからねえ、ああ、愚痴になってしまう。
No.2
- 回答日時:
こんにちは
No1のお礼に対しての返事です。
>これを行うと一切再発しなかったという事でしょうか?
発生はなくなりました。
今また発生しているかどうかは、転職したので定かではありませんが。。。
>私の場合、エラー発生レコードというのが存在しないので
>単にテーブルインポートだけでしょうか。
そうですね。それでよろしいかと思います。
ありがとうございます。再発無しですか、素晴らしい!
ちょっとテストをしています。
テストプログラムを用意、これはあるmdbに対し、mdbオープン・テーブルオープン・mdbクローズ・テーブルクローズオープン、という処理を10万回繰り返すものです。
で、A.mdb、これは何度も3343認識エラーが発生&修復したmdbです。
そして、B.mdbを新規作成し、A.mdbのテーブルを全てインポートしました。
このB.mdbでテストプログラムを実行、10回位繰り返して、今のところエラーは出ていません。
10万回×10回=100万回のオープン・クローズです。
以前迄はA.mdbで処理すると2回目位(20万回以内)でエラー発生していましたから。
mdbの新規作成とテーブルインポート、有効みたいですね。
それにしても、このエラーの原因って何なのでしょうね。
Access97固有のエラーみたいですが・・・
この組み合わせで購入したお客さんは、いー迷惑ですよね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アクセスでエラー このフィー...
-
DocuWorksでの印刷
-
FETCHエラー(オラクル)
-
ODBCデータソースが削除できま...
-
psqlの文字コードエラー
-
#1062 - '0' は索引 'PRIMARY' ...
-
複数フィールドの条件について
-
DB2 REORGについて
-
SQLCODE=-420とはどういうエラ...
-
(素人の質問) SQL Server エ...
-
空白はダメというエラーの表示...
-
『ORA-00936: 式がありません。...
-
オラクルでisnumeric?
-
実行時エラー459 withステート...
-
共有フォルダに誰が何にアクセ...
-
Batch: フォルダ内の特定のファ...
-
SQLPLUSで結果を画面に表示しない
-
ADOを使ったDBアクセス後のメモ...
-
Access2002 信頼できず開けま...
-
動的にSPOOLファイルのファイル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
#1062 - '0' は索引 'PRIMARY' ...
-
アクセスでエラー このフィー...
-
列名に変数を使うことはできな...
-
空白はダメというエラーの表示...
-
SQLserver2005 nvarchar を flo...
-
AccessVBA 実行時エラー'2766'...
-
(素人の質問) SQL Server エ...
-
DocuWorksでの印刷
-
Access2010実行時エラー-21473525
-
UPDATEを使ったSQL文にて
-
オラクル(PL/SQL)のエラー
-
Access 実行時エラー'3075' 対...
-
「1004:アプリケーション定義...
-
実行時エラー459 withステート...
-
エラーについて
-
SQL文長の制限
-
BULK INSERTのエラー取得は可能...
-
SQLCODE=-420とはどういうエラ...
-
DISTINCT + COUNT
-
PL/SQL ORA-06502エラーに関し...
おすすめ情報