
Private Sub AllKisyuChangeAnswer()
'設定完了手続き
Dim Path As String
Dim Num As Integer
Num = 1
Path = "\\70F\c\検査\pdata\KisyuAns" & Num & ".txt"
'設定完了確認ファイル(メインPC)へ結果書込み
Open Path For Output As #52
Print #52, 1
Close #52
End Sub
VB6.0sp6を使用しております。
PC6台のみのネットワーク上での動作なのですが、PC1~5からほぼ同じタイミングで上記サブルーチンを実行し、"KisyuAns" & Num& ".txt"というファイル名でPC6(マシン名は\\70F)へデータ(1)を書込みにいこうとしているのですが、Open Path For Output As #52のところでエラーが発生します(発生しない場合もあります)。
ほとんどの場合、PC1~5のうち2台で同じエラーが発生し、何かしらのバッティングが起こっているようにも思います。
ただ、デバッグモードでは、エラー部分でStopするので、そこから再度実行すると何事もなかったようにファイル書込み操作が完了します。書込むファイルは"KisyuAns" & Num & ".txt"で、PC1~5により、Numを1~5に変えて別名のファイルに書き込むようにしています。
書込みのタイミングをPC1~5で遅らせる方法も考えましたが、上記サブルーチンをPC1~5が実行するタイミングがわずかですが、一定ではありませんので難しいかと思います。また、PC6台全ての書込み操作完了までの時間もあまり与えられておりません(0.5Sec以下)
その他の情報としてですが、
・PC6のCドライブのみ共有化しています。
・PC1~6全てファイヤウォールを無効にしています。
・KisyuAns" & Num & ".txt" は、PC1~5による書込みが行われる直前(1secほど前)に、PC6により全て0が書き込まれています。
・エラーの内容は「実行時エラー"52" パスまたはファイル番号が不正です。」
エラーを回避する方法分かりません。長文で申し訳ありませんが、どなたかご回答のほどよろしくお願い致します。
A 回答 (2件)
- 最新から表示
- 回答順に表示

No.2
- 回答日時:
PC6 と PC1~5 がそれぞれ同じテキストファイルを突っつき合ってるんですよね。
(突っつきあうタイミングがずれている事を開発者は期待している)切り分けのため、
とりあえず PC6 を動かさず、PC1~5 だけで実行してみてはどうでしょうか?
PC1~5 はサーバ上の同じフォルダにある別々のファイルを突っついてるんですよね。
次に PC6 と PC1 だけ。さらに PC6 と PC2 だけ。。。。
てな感じで。
実際のところホントに PC6 と PC1~5 は(ファイルが置かれているサーバから見て)「開く→書き込む→閉じる」 の一連セットでタイミングが被ってないんでしょうかね・・・
PC6 がファイルを閉じた後、ファイルのロックが解除されるまでの時間はファイルが置いてあるサーバの守備領域だと思うし。
ご回答ありがとうございます。
もっと詳しく申しますと、実はPC6は別装置からの外部信号をトリガを受け取り、別装置内のデータをRS232Cで読み込み、PC1~5用のデータ(中身は1~20の数値データのみ)ファイルを生成し、続けて全ての"KisyuAns" & Num & ".txt"に0を書き込んでいます。別装置からのPC6への外部信号トリガの1Sec後に別装置からPC1~5へトリガを出力してもらっています。そのトリガでPC1~5がデータファイルを読み込み、そのデータに従った操作を行ったあと、"KisyuAns" & Num & ".txt"に1を書込みにいく動きです。(その後PC6が"KisyuAns" & Num & ".txt"の1or0を読み込み、別装置へRS232Cで書込みにいきます)
PCの起動直後(朝一番)にこのようなエラーが見られ、以降、PCを再起動しない限り、ほとんど発生することはありません。
別装置側担当者により1Secを2Secに延長してもらいましたが変わりませんでした。色々とタイミングを変えてみたのですが、同様で、ただ、PC側をエラー停止しないようにステートメント(Resumeなど)を加えておき、装置側からのリトライにより(初めの1回+2回)思ったとおりの動作をします。なぜ3回必要なのかはわかりませんが。。。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
FORTRANの実行エラーについて
-
アクセスのクエリでコンパイル...
-
FTPの送信結果を検知したい
-
access テキストボックスの値取得
-
アクセスでイベントのロジック...
-
VBから参照できないCのDLLを使...
-
「複数の選択範囲に対して実行...
-
VISIOは上位互換のはずなのにフ...
-
Access2010 コンパイルエラー...
-
「パス名が無効です」の発生原因
-
Access2013にてドラッグ&ドロ...
-
ADOXでmdbファイルにオートナン...
-
Returnに対するGoSubがありません
-
EXCELVBAでONEDRIVE上への保管...
-
Excel 2003 のエラーメッセージ
-
エクセルで質問です。 ハイパー...
-
VB6.0開発ソフトインストールで...
-
VB6 Dir関数で52エラー発生
-
freadでデータがない場合の読込...
-
gccを行ってもexeファイルが生...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで質問です。 ハイパー...
-
Excel 2003 のエラーメッセージ
-
「パス名が無効です」の発生原因
-
PowerShellを使って関連付けら...
-
access テキストボックスの値取得
-
【COBOL】read文でエラー
-
アクセスのクエリでコンパイル...
-
Returnに対するGoSubがありません
-
batファイルでレジストリキーの...
-
VBから参照できないCのDLLを使...
-
NAS上のファイルの使用中が解除...
-
データベースソフトのアクセス2...
-
VB6 Dir関数で52エラー発生
-
【関数】同じ関数なのに、エラ...
-
gccを行ってもexeファイルが生...
-
FORTRANの実行エラーについて
-
FTPの送信結果を検知したい
-
fgets関数のEOFの扱い方について
-
ASP.NET 2.0にてアプリが動作し...
-
VBでファイルが開かれているか...
おすすめ情報