4台のパソコンでアクセスデータを共有し、参照ならびにデータの書き込み等に使っています。当初はエラーなく快適でしたが最近 質問タイトルの「ディスクまたはネットワークのエラー(Error 3043)」が頻繁にでます。当然このエラーはクライアントのパソコンで発生します。環境としては4台ともOSはWin-Me mdbはデータ(テーブル)とアプリを分けており、クライアント(3台)のパソコンにはアプリだけのmdbでデータの部分はサーバーのパソコンからリンクテーブルでもってきてます。サーバーパソコンの能力不足でしょうか?メモリーは64mbに128mbを増設しました。CPUはCeleron 700です。1つ気になる事としてインターネットに接続できる環境にしてからこのエラーが頻繁にでます。解決のヒントでも結構ですので回答ください。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

今回のケースでは、サーバにはファイルだけを置いているのでサーバの能力はそんなに影響しません。



多分このエラーが起きるとACCESSを一旦終わらせないと、別画面を開いてもやはりサーバのデータを引っ張ってきてはくれないと思います。

ACCESSのリンクではテーブルを一旦自分のPCにコピーしてからクエリーなどが走るので、沢山入ったテーブルなどを見るとちょっとしか抽出しなくても大量のデータのやり取りがLAN上で起こります。

何故止まるのかはわかりませんが、何度もmdbを使用して最適化していないもので、大量のデータを見たりするとメモリが足りなくてこのメッセージが出る可能性が多いようです。(クライアント側の原因)ACCESSはメモリの開放が下手なようです。
又インターネットで他のPCが大量データでLANを混雑させても起こる可能性はあるかもしれません。
    • good
    • 0
この回答へのお礼

klubさん 早速の回答ありがとうございます。
この手の現象は、エラー画面(フォーム)を閉じて、再度画面を開くとデータをもってきます。 (エラーならずっとエラーのが気持ちイイのに)
困ったことに 追加書き込み中にエラーがでてせっかく記入した内容がボツなんてことがあります。
今後はクライアントを中心にメンテもすすめていきます。
その他 考えられる事項ヒント等何でも結構ですので、またアドバイスください。
では、今後もよろしくお願いいたします。

お礼日時:2001/11/05 16:44

リンクのデータコピー中、コリジョンが多く発生し、タイムアウトになっているのではないでしょうか?



以前書いたアドバイスは、クライアントのメモリ不足でアクセスが処理しきれなくなり、同じようなメッセージを出したことがあったのでそれかな?と思い書きました。そのときはネットワークへのアクセスが復旧できなかった覚えがあります。

今回は別画面ではネットワークに繋がるようなので、メモリ不足ではないのでしょうね。

SQLサーバのようにODBCで接続していたら、オプションのODBC関係のところで設定を変えれば何とかなるのかもしれませんが、相手がアクセスだとどうすればいいのでしょう?(やったこと無いので・・スミマセン)

このエラー番号を取得してプロシージャのエラールーチンで判定させ、もし繋がらなかったら再度リクエリーさせてみることはどうでしょうか?トライ数もカウントしてトライ数がある程度超えたら「混雑してまーす」みたいなメッセージを出したりして。

無責任な回答で本当にごめんなさい。
もしこれで回避できたら教えてください。
    • good
    • 0
この回答へのお礼

klubさんへ、今回思いもかけない方法でネットワークエラーが解決いたしました。
 というのは4台で使っている状態ではエラーがでるのですが、3台で使っている時はどういううわけかエラーが出ないのです。(このアプリは3ライセンスなのか??)
そこで、ダメ元でサーバーとなっているパソコンを他の機種に代えた所、このエラーが出なくなっています。
ちなみに 前はS社の99,800円の液晶パソコン 今はC社の14,800円の液晶パソコン。スペックは両方とも大差ないのですが、いったいなんなのでしょうかね???

とりあえず、快適に使える環境になったのでこれ以上はいじりませんが・・・
いったい原因はなんなんだろう??? 

お礼日時:2001/12/04 23:22

このQ&Aに関連する人気のQ&A

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

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q2つのmdb内にある同名テーブルのフィールド比較

同じ名前のmdbが2つ存在しておりまして、A.mdbのテーブル内のAテーブルと
B.mdb内にあるAテーブルが、同じかどうかを判断するために、フィールドの比較を行いたいのですが、何かよい方法を御存じの方いらっしゃいますか?

Aベストアンサー

まず、異なるMDBファイルに保存されているA・Bのテーブルを比較するための環境を作ります。
これは、C.mdbとでも名づけて新たに作成しましょう。

(以下はC.mdb内での処理記述となります。)

A・Bそれぞれに存在する、同名のテーブルへリンクを行い、
C.mdb内で比較すべき2つのテーブルを扱えるようにします。

後は、下記参考ページの説明に従って作業を進めることができます。

やってみると、それほど難しいものではありませんので、頑張ってください。

QAccessデータを違うmdbにコピーしたい

VB2005で、mdbをデータベースにして開発しています。
aaa.mdbのテーブル1のデータをbbb.mdbのテーブル1に読み込ませたいと思っています。
bbb.mdbのテーブル1は、aaa.mdbのテーブル1よりフィールド数が多く、
該当する列にデータを読み込ませたいと思っています。
今まで、バックアップはaaa.mdbを丸ごとコピーして圧縮ファイルにしていました。復元の時は、解凍して上書きする、という手法をとっていました。
しかし、今回どうしてもテーブル1に列を追加しなくてはならず、aaa.mdbのバックアップデータをbbb.mdbに読み込ませて、VB2005のフォームに表示したいと考えております。
以上のような操作は可能でしょうか?可能でしたらその手法を是非教えてください。
また、データベースアプリを作成する上でアプリ完成後に、カスタマイズや計算方法の変更により列の追加が必要になる、いうことはまずいことでしょうか?前もって考えてフィールドを持っておくべきなのでしょうか?経験がないため、わかりません。この点についてもアドバイスがありましたら宜しくお願い致します。

VB2005で、mdbをデータベースにして開発しています。
aaa.mdbのテーブル1のデータをbbb.mdbのテーブル1に読み込ませたいと思っています。
bbb.mdbのテーブル1は、aaa.mdbのテーブル1よりフィールド数が多く、
該当する列にデータを読み込ませたいと思っています。
今まで、バックアップはaaa.mdbを丸ごとコピーして圧縮ファイルにしていました。復元の時は、解凍して上書きする、という手法をとっていました。
しかし、今回どうしてもテーブル1に列を追加しなくてはならず、aaa.mdbのバックアップデータをbbb...続きを読む

Aベストアンサー

バックアップを使える形でとりたいのであれば、テーブルを(別名で)インポートするか、リンクテーブルを作成すると良いと思います。

直接、今回の件に関係ないかもしれませんが、
私は、mdbで複数人数が利用するDBを構築する際はデータ部分と、その他の部分を別のmdbで作るようにしています。 
リンクテーブルでデータに操作することもありますし、ADOなどでアクセスする場合もあります。
(操作アプリをアクセス以外で作りたい場合や、将来的に他のDBへ移行したいものはADOを使うことが多いです。) 
データ部分がひとつであることにより、データ構造の改変のときの運用が楽になります。

QAccessのMDBのオープンエラーについて

環境:Windows98 + VB5.0(SP3) + Access97

VBプログラムで、Access-MDBのオープンの為、以下の命令を発行します。
Set DB = OpenDatabase("D:\・・・\Md1.mdb")

通常問題無く動いているのですが、たまに以下のエラーが発生します。
エラー番号:3343
エラー内容:データベースの形式 'D:\・・・\Md1.mdb' を認識できません。

このエラー発生後は、REPAIR命令で修復しなければなりません。

このエラーの理由・対策等をお教え下さい。
少し古い環境での問題なので、既に語り尽くされているのかもしれませんが、よろしくお願いします。

Aベストアンサー

こんにちは

私も以前世話してたシステムもVB5-Ac97で
tngさんと同じ現象が、出ました。
それも、違う顧客で3件も。

その時の原因として共通だったのは
1.MDBが全体で50MB超えていた
2.一番でかいレコード数のテーブルが壊れていた
3.壊れ方は、数値の項目に記号の羅列が化けて入っていた

対処方法は
最初はデータベースを修復をして対処しました。
が、またしばらくして同じ顧客で発生したので
以下のようにすると治まりました
1.エラー発生レコードは削除
2.新規mdbを作成
3.既存mdbのテーブルを新規mdbにインポート

一度試してください

QMDBファイルのデータ移行

ACCESSでDB環境を作成してmdbファイルで使っていました。
プログラム変更時にDBにもテーブルの項目をいくつか追加しました。
旧mdbファイルのデータを新mdbに移行したいのですが、ACCESSの無い状態で移行するのは可能でしょうか。
ACCESSは初心者で職場にACCESSが無いため困っています。
何か良い方法は無いでしょうか?

Aベストアンサー

各種ツールはインストールできるんでしょうか?
ODBC経由で各種SQL、Migrationツールなどを使ってみるとか。

何も使えない環境なら。
WSHで ADOとか。
http://www.happy2-island.com/vbs/cafe02/capter00601.shtml

QMdbフォイルを違うバージョンのAccessで使用するとVBAのコンパイルエラーがでる。

同じMdbファイルをAccess2000の入ったPC・Access2010の入ったPC・Access2013の入ったPCで使用する必要があります。
オリジナルはAccess2000で作成したもので、通常であればAccess2010・Access2013でも使用できるはず・・・

しかし、Access2010・Access2013で開くとVBAのコンパイルエラーがでます。
そこで、Access2010でエラーのでたVBAの部分を削除して新たに書き直すとAccess2010では正常に動きます。
しかしながら、Access2000とAccess2013では同じようにエラーがでます。
Access2013で修正した場合はAccess2013でのみ正常に動き、Access2000とAccess2010ではエラーがでます。
つまり、作成したものと同じバージョンのAccessでないと正常に動かないということです。

次にエラーのでる部分に注目してみると、フォームのフィールド名がリンク元のテーブルのフィールド名(レコードソース)と異なっている部分に書いてあるVBAのところでした。


---------------------------------------------------------------------------------------------
テーブル(出荷予定)

ID 入力日 製品名 得意先 出荷日 備考



フォーム(出荷予定入力)

ID 入力日 製品名 得意先 出荷予定日 備考
----------------------------------------------------------------------------------------------

このようにテーブルとそれに入力するためのフォームがあるのですが、フォームの”出荷予定日”に過去日付の場合エラーメッセージが出るようにVBAを書いています。
(厳密には、これはサブフォームで別のフォームに埋め込んであるのですが・・)

----------------------------------------------------------------------------------------------
Private Sub 出荷予定日_AfterUpdate()

If CDate(出荷予定日) < CDate(Format(Now, "yyyy/MM/dd")) Then
'過去日付
If MsgBox("過去日付です。よろしいですか?", vbOKCancel) = vbCancel Then
出荷予定日 = ""
出荷予定日.SetFocus
Exit Sub
End If
End If

End Sub

-----------------------------------------------------------------------------------------------

こんな感じです。同様に”入力日”にも同じVBAを書いているのですが、こちらではエラーは起きません。

確認のためフォームのフィールド名、”出荷予定日”をテーブルと同じ”出荷日”に変えてみるとエラーは起きなくなりました。

しかし運用上、フォームのフィールド名は”出荷予定日”としたいです。また、フォームはフォームビューではなくデータシートビューを使用したいです。
従って、フォーム名がそのままフォーム上に表示されることになります。テーブルのフィールド名も他との関係があるので変更はできません。

どのようにVBAを書けばいいのか、解決法をご教授いただけませんでしょうか。
もしくはデーターシートビューにおいて、フォームのフィールド名ではなく任意の名前を表示せせる方法があればフォームのフィールド名をテーブルのフィールド名に合わせることができるので、こちらでも解決できそうなのですが・・

何卒、よろしくお願いいたします。

同じMdbファイルをAccess2000の入ったPC・Access2010の入ったPC・Access2013の入ったPCで使用する必要があります。
オリジナルはAccess2000で作成したもので、通常であればAccess2010・Access2013でも使用できるはず・・・

しかし、Access2010・Access2013で開くとVBAのコンパイルエラーがでます。
そこで、Access2010でエラーのでたVBAの部分を削除して新たに書き直すとAccess2010では正常に動きます。
しかしながら、Access2000とAccess2013では同じようにエラーがでます。
Access2013で修正した場合はAc...続きを読む

Aベストアンサー

> データーシートビューにおいて、フォームのフィールド名ではなく任意の名前を表示

デザインビューで開き、
目的のフィールドのテキストボックスに付属しているラベルの「標題」プロパティに
表示したい名称を設定してください。


人気Q&Aランキング

おすすめ情報