したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |

ファイルのエラー

1秦野の中年男性:2004/02/09(月) 21:08
要領を得ない質問で恐縮ですが

1 FO$="C:\FBASICV63\売上\"
2 open FO$+"お得意さん\男性.csv" for input as #1
3 input #1,A$,A$,A$,A$,A$,A$,A$,A$,A$,A$,A$,A$
4 close
5 open FO$+"お得意さん\男性.csv" for create as #1

このプログラムではうまくいきます
最近LAN上で共有して使いたく私のコンピュータ名が「Asakura1」なので

FO$="C:\FBASICV63\売上\"をFO$="\\Asakura1\FBASICV63\売上\"とすると
5 で「エラー75」アクセスが拒否されましたと出ます。
同じファイルなのに何故なのか困っています。

またFO$="C:\FBASICV63\売上\"のドライブ名C: D:を指定する方法を教えて
下さい。

2TOKO:2004/02/09(月) 23:05
FO$="C:\FBASICV63\売上\"をFO$="\\Asakura1\FBASICV63\売上\"のところは、
FO$="\\Asakura1\C\FBASICV63\売上\"ですネ・・
※蛇足ですがLAN接続先のカレント『C』に":"は必要ありません・・
パス指定の間違いがないとして、『エラー75:アクセス拒否』ですから、相手先
の指定したフォルダが共有設定(フルアクセス)になっているか、読取専用になっ
ていないか、相手先で同じファイルを使用中ではないかなどの確認が必要だと思
います。

EXEファイル本体を仮に『売上.EXE』として『D:\URIAGE\』というフォルダに置
いたとします。
プログラムリストの中で MYPATH$ = CRDIR("")+"\" と設定した場合、MYPATH$は
EXEファイルを置いた場所『D:\URIAGE\』(カレントフォルダのパス名取得)にな
ります。
従って『男性.CSV』を同じ場所に置いた場合は FO$ = MYPATH$ & "男性.CSV"に
なります。

3秦野の中年男性:2004/02/10(火) 07:48
大変恐縮ですが
FO$="\\Asakura1\FBASICV63\売上\"とすると
こんどエラー27システムに異常がありますになります

4TOKO:2004/02/10(火) 08:41
FO$="\\Asakura1\FBASICV63\売上\"
FO$="\\Asakura1\C\FBASICV63\売上\"

\\Asakura1\とFBASICV63の間に C\ が入っていますか?
※LAN接続された2台のPC共にC:\FBASICV63\売上\というフォルダ内の操作という
ことを前提にしています。

5秦野の中年男性:2004/02/10(火) 09:25
FO$="\\Asakura1\C\FBASICV63\売上\"
となっています。
自分からも、相手からも同じエラーが出ます

6TOKO:2004/02/10(火) 10:18
パス指定の間違いがないか確認してみましたか?
エクスプローラを起動し、「ツール」→「フォルダオプション」→「表示」→
「タイトルバーにファイルのパス名を表示する」にチェックを入れ
自分自身のパソコン上の目的ファイルを指定(C:\FBASICV63\売上 と表示)
LAN接続先パソコンの目的ファイルを指定し、タイトルバーに表示されたパス
名を確認してみてください。(\\xxxxx\C\FBASICV63\売上 と表示)
xxxxxはLAN接続先PC名

モチロン\\Asakura1は相手方のPCから見た場合デス。

7秦野の中年男性:2004/02/17(火) 18:05
みなさんからせっかくアドバイスを頂いても、よく理解できない未熟者です。
同じことの蒸し返しで恐縮ですがよろくお願いします。
同じプログラムを搭載したパソコンでも、すんなり行く場合と、システムエラーがでて
先に進まないマシンがあります。
どうしてでしょうか。
TOKOさんエクスプローラのもう少し詳しい説明をお願いしたいのですが。

8TOKO:2004/02/17(火) 21:41
LAN接続されたPCが2台あります。
同じプログラム本体[HANBAI.EXE]をそれぞれのPCにインストールしてお互いのPC上に
あるデータを読み書きしたいのデスね?

1台目のPC名 → TAROU
  C:\URIAGE というフォルダに HANBAI.EXE というプログラム本体をインストール
  C:\URIAGE\DATA に[KOKYAKU.CSV]を置く

2台目のPC名 → HANAKO
  C:\ABCDE\HANBAI\ に HANBAI.EXE というプログラム本体をインストール
C:\ABCDE\HANBAI\DATA に [KOKYAKU.CSV]を置く

上記の条件に於いてデータ[KOKYAKU.CSV]を読み書きする場合
それぞれのHANBAI.EXE内のパスは次のようになります。

1台目のPC(TAROU)上で
 自分(TAROU)のデータを読み書きする場合
  FILENAME$ = C:\URIAGE\DATA\KOKYAKU.CSV
 相手(HANAKO)のデータを読み書きする場合
  FILENAME$ = \\HANAKO\C\ABCDE\HANBAI\DATA\KOKYAKU.CSV

2台目のPC(HANAKO)上で
 自分(HANAKO)のデータを読み書きする場合
  FILENAME$ = C:\ABCDE\HANBAI\DATA\KOKYAKU.CSV
 相手(TAROU)のデータを読み書きする場合
  FILENAME$ = \\TAROU\C\URIAGE\DATA\KOKYAKU.CSV

>>同じプログラムを搭載したパソコンでも、すんなり行く場合と、システムエラーがでて
先に進まないマシンがあります。

全く同じHANBAI.EXE を双方のPCにインストールした場合、おそらくFILENAME$ は固定
になっているためのエラーかと思います。
HANBAI.EXE 内の FILENAME$は 相手先のファイルの読み書きをする場合は、上記のように
異なるので 外部ファイルにして読み込むなどの工夫が必要になります。
経験では相手方のファイルのパス指定が間違っている場合、[27]のエラーが出ることがあ
ります。
また、1台目のPCでアクセス中に2台目のPCから同じファイルをアクセス使用とした
場合[拒否]されます。リファレンスマニュアルの237頁[ALLOWモード]をご覧ください。

以上説明になっているかどうか文章の書き方は難しいです・・^^;
当方全くの独学のため、間違っているところがあればパワーユーザー諸氏のフォローをお
願いいたします。

先にエクスプローラを出したのは、アクティブバーにパス名が表示されるのでFILENAME$
の確認のためです。

9秦野の中年男性:2004/02/18(水) 09:00
だんだん分かってきました。

10 FO$="\\Asakura1\FBASICV63\売上\"
20 input #1,FO$+"男性.csv"

このプリグラムをAマシン、Bマシン、Cマシンに搭載しそれぞれのマシン名を
Asakura1とし順番にランに繋ぎ実験するとAマシン、Cマシンではうまくいきますが
CマシンをAsajyra1として実行すると20でシステムエラーがます
(プログラム見本は急遽作ったもので正確でないかも)
なぜそんなややこしいことをするかというと、Aマシンが壊れたときに急遽代役にBマシン
を使うか、別件でAマシンを誰かがランからはずして持って行く場合Cマシンを使うそういう
使い方をしたいのですが。

10秦野の中年男性:2004/02/18(水) 09:04
先ほどの質問のなかの「CマシンをAsajyra1」は「Asakura1」の間違いです
またAsakura1は自分自身(プログラムを作った親機)とします

11TOKO:2004/02/18(水) 10:09
くどいようですが順を追って最初から・・
親機はAsakura1となっていますが、BおよびCマシン名はどうなっていますか?
全て同じ名前というわけにはいきませんので、、Aマシン Asakura1、Bマシン Asakura2、
Cマシン Asakura3としましょう。
[男性.CSV]が3台ともC:\FBASICV63\売上 にあるものとします。

Aマシン上でAマシンのデータ読み書き → 10 FO$ = "\\Asakura1\C\FBASICV63\売上\"
Aマシン上でBマシンのデータ読み書き → 10 FO$ = "\\Asakura2\C\FBASICV63\売上\"
Aマシン上でCマシンのデータ読み書き → 10 FO$ = "\\Asakura3\C\FBASICV63\売上\"

Bマシン上でAマシンのデータ読み書き → 10 FO$ = "\\Asakura1\C\FBASICV63\売上\"
Bマシン上でBマシンのデータ読み書き → 10 FO$ = "\\Asakura2\C\FBASICV63\売上\"
Bマシン上でCマシンのデータ読み書き → 10 FO$ = "\\Asakura3\C\FBASICV63\売上\"

Cマシン上でAマシンのデータ読み書き → 10 FO$ = "\\Asakura1\C\FBASICV63\売上\"
Cマシン上でBマシンのデータ読み書き → 10 FO$ = "\\Asakura2\C\FBASICV63\売上\"
Cマシン上でCマシンのデータ読み書き → 10 FO$ = "\\Asakura3\C\FBASICV63\売上\"

20 input #1,FO$+"男性.csv"は同じです

Aマシンの該当フォルダが共有する設定になっているかも確認してみてください。

12nisii:2004/02/18(水) 12:10
1つのワークグループに、3台のPC(ABC)があるとき、
ネットワークコンピュータ名は、A≠B≠Cでなければなりません。

ファイルがあるPCをAとし、
アクセスする側のPCをB、およびCとしたとき、
BとCを同時にLANに接続しない(できない)、という条件では、
BとCのネットワークコンピュータ名を同じにすることはできます。
もちろん、A≠(B=C)です。

ただネットワークコンピュータ名は一意であり、安易に変更するのはトラブルの元です。
また、Aが無くなったとき、BをAの代替にするために、煩雑な再設定が必要になります。

A→Bへ共有フォルダの移動、ただし同じドライブパス名で、共有名も同じにする。
A→Bのネットワークコンピュータ名変更。
B→Aのネットワークコンピュータ名変更。

解決案は2つ。

(1)消極的解決
本プログラムから、WINOPENDLG関数を使い、ユーザー操作でファイルを指定してもらいます。
ネットワークの不備による接続不良もこの時点で判ります。

(2)積極的解決
移動しないファイルサーバーを用意します。
数万円のNAS(PC不要、LAN接続のHDD)を用意し、ここに共有フォルダを置けば、一番スッキリするでしょう。

例えば、次の製品など…。
http://www.iodata.jp/prod/storage/hdd/2003/hdl-u/index.htm
http://buffalo.melcoinc.co.jp/products/catalog/item/h/hd-lan/index.html

13秦野の中年男性:2004/02/18(水) 13:10
すいません、説明不足で皆さんにご迷惑をお掛けしています。

ネットワークに繋いでいるのは親がAマシン、そのデータを読みに来るのがDマシン、Eマシン......
ただAマシンが壊れたとき、又はよそに持ち出すとき代替えとしてBマシンまたはCマシンを代役として
自分のマシンとして使います。
その時Aマシンからも自分のデータを読みに行きます。
自分のマシンのプログラムに"\\Asakura1\C\FBASICV63\売上\"とかくと
Aマシンを自分のマシンとしてつないだ場合(Bマシン、Cマシンは棚に予備として
しまっておく)すんなりデータを読みに行きます。
Bマシンを自分のマシンとして繋ぎ(Aマシン、Cマシンは予備として棚にしまっておく)
自分のデータを読みに行くと20行目でシステムエラーがでます。
Cマシンを自分のマシンとして繋ぎ(Aマシン、Bマシンは予備として棚にしまっておく)
この場合もうまくいきます。
なぜ、うまくいくマシンとエラーが出るマシンがあるのかの質問です。
Dマシン、Eマシン側からみても、A,Cマシンを親として使った場合は、うまくデータを読み込めますが
Bマシンを親として使った時はやはりエラーがでます。
Dマシン、EマシンはAマシンの売上.exeのショートカットをクリックしています

14TOKO:2004/02/18(水) 22:33
なんだかコンガラカッテきました(^^;)
>Dマシン、EマシンはAマシンの売上.exeのショートカットをクリックしています
エッ!Dマシン、またはEマシン上の[売上.EXE]を起動して、Aマシン上のデータ[男性.CSV]をアクセスするの
ではなくネットワーク接続されているDマシン、またはEマシンからAマシン上の[売上.EXE]を起動させている
のですか?
であれば、A、B、C上にある[売上.EXE]内の
FO$ = "\\Asakura1\C\FBASICV63\売上\"は
FO$ = "C:\FBASICV63\売上\"でいいような気がしますが・・

FO$ = "\\Asakura1\C\FBASICV63\売上\"となっている場合、BマシンのPC名が"Asakura1"以外の名前だとエラー
になりますよネ・・

15iwakifarm:2004/02/19(木) 11:27
ファイル読み込で、各マシンからはLAN経由でアクセス
していないと思われます。
そこで
FILE$=WINOPENDLG("ファイルを開く","男性.csv"," (*.csv) ",0)
if FILE$<>chr$(&H1B) then
DISLEN=len(FILE$)
DIRENV$=mid$(FILE$,1,DISLEN-9)
'print DIRENV$:DTDRV$=DIRENV$
SZ=0
open FILE$ for input as #1
print "ファイル情報を読み込みします。"
input #1, A$,A$,A$,A$,A$,A$,A$,A$,A$,A$,A$,A$
'
close #1
print "ファイル情報を読み込みしました。"
else
goto *PGMEND
end if

このようにすると読めるようになりませんか?
あとallow inputやallow outputもありますし、
リファレンスp237(v6.3)にallowの記述があります。
もちろん共有属性が必要です。

私も実験してみます。

16nisii:2004/02/20(金) 09:27
>>13

状況を要約すると、こういうことでしょうか?
1. 3台のPC(ABC)があり、Aにはプログラム本体とデータファイルがある。
2. BはAの代替として、同じネットワーク環境・設定にしている(はず)。プログラムもファイルもコピーされている。
3. データファイルへの共有パスは \\Asakura1\C\FBASICV63\売上\ に固定する。
4. AとCのLAN接続では、共有パスを使って、ACどちらからもAのファイルをオープンできる。
5. BとCのLAN接続では、共有パスを使って、BからB自身のファイルをオープンできない。

上記どおりなら、ネットワーク設定に問題があるとしか考えられません。
おそらく5.の時点で、Cから共有パスを使っても、Bのファイルをオープンできないのでは?

AとBで、ネットワークコンピュータ名、共有フォルダの設定、ネットワークのアクセス権限、TCP/IPの設定などに違いが無いか調べてください。

上記3.の( \C )が共有フォルダ名ですが、Bの共有フォルダ名は、本当にAと同じ名前( C )にしてありますか?
例えば、Bに対し、( \FBASICV63 )を共有設定にするなどの間違いをしていませんか?

17秦野の中年男性:2004/02/27(金) 14:51
いつも、訳の分からない質問ばかりで恐縮しています。
また、最後まで親身にご回答頂き感謝しております。
さて、最近また困ったことが起こったので、お助け願いたいのですが。

(パスワードが必要とのことですが、分からないのでこの欄に書かせて頂きます)
open #1 "名簿.csv" for create as #1
for i=1 to 100
print #1,名前$(i);",";年齢(i);",";住所$(i)
next
で保存します。
これを
input #1, 名前$,年齢,住所$
で読み込むと即、変数の型とファイル内のデータの形式が
合っていませんのエラーが出ます。
年齢が数字なのに文字と判断してしまいます。
以前は出なかったようにに思います。
print #1,の","の付け方が悪いのでしょうか
でも出来た.CSVファイルのデータはちゃんと数字で保存されいます
(その数字に対して足し算や掛け算が出来る)
年齢を年齢$とし年齢=val(年齢$)とすればエラーが起きません
csv.の計算とinput #1の読み込みとで何か違うのでしょうか

18TOKO:2004/02/27(金) 16:20
open #1 "名簿.csv" for create as #1

open "名簿.csv" for create as #1 転写ミスですよね・・

変数および配列の指定に間違いがないとして、

59のエラーだとすると、名前または住所の文字列の中に","の含まれているところがありませんか?

19iwakifarm:2004/02/28(土) 17:04
write#1,名前$(i),年齢(i),住所$(i)
にすれば読み込むはずです。

20名無しさん:2004/03/01(月) 14:53
本当にありがとうございました


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板