前回もお世話になったのですが、また質問させてください。現在カルテ保存プログラムを作成中です。基本的な仕様としては"開く"でファイルを読み込みリストビューに表示(表示される内容はID、名前、性別、生年月日、血液型)、"追加"でデータの追加、"保存"でリストビューに表示されたデータをカルテ.csvに保存、というような感じです。エラーチェックの部分でファイルを読み込む際、データの先頭であるIDのところにデータが存在しなければファイルを閉じて処理を抜ける、という処理にしました。その後データを追加し保存で追加したデータを保存しようとしたのですが"書き込みできません"とエラーが出てしまいます。いろいろ調べたのですが調べ下手なもので納得いく回答が得られませんでした。よろしくお願いします。
環境はVB6.0です。
ファイルを読み込む処理
Open "カルテ保存.csv" For Input As #1
Do Until EOF(1)
ReDim Preserve gty_date(gintcI)
With gty_date(gintcI)
Input #1, .Number
'IDにデータが入っていなかったら
If IsNumeric(.Number) = False Then
Close #1
Exit Sub
End If
Input #1, .Name
Input #1, .Sei
Input #1, .Birth
Input #1, .Blood
End With
gintcI = gintcI + 1
Loop
Close #1
注:gty_dateは構造体です。
保存の処理
Dim intmsg As Integer
Dim inti As Integer
'確認
intmsg = MsgBox("カルテを保存しますか?", vbYesNo + vbQuestion, "確認")
'ファイル存在チェック/新規作成・保存
If funcFileCheck(App.Path & mcstr_FileName) = False Then
subFileSave
Else
Open "カルテ保存.csv" For Output As #1
For inti = 0 To gintcI - 1
With gty_date(inti)
Writ#1, .Number, .Name, .Sei, .Birth, .Blood
End With
Next inti
Close #1
End If
End If
MsgBox "保存が終了しました", vbOKOnly + vbInformation, "確認"
エラーはどこででるんでしょうか?
また、funcFileCheckとsubFileSaveは、何をやっているのでしょうか?
あと、ファイル名は、"カルテ保存.csv"だと、カレントパスにファイルがないと
エラーになるので、"C:\test\カルテ保存.csv"やApp.Patb & "\カルテ保存.csv" のように
フルパスで書いた方が良いです。
LESIAさんレスありがとうございます。
>エラーはどこででるんでしょうか
保存処理の
Open "カルテ保存.csv" For Output As #1
でエラーになります。
>また、funcFileCheckとsubFileSaveは、何をやっているのでしょうか?
funcFileCheckは保存できるファイルがある場合True、ない場合はFalseを返します。
subFileSaveはfuncFileCheckにおいてFalseが返ってきたときに新規にファイルを作成してリストボックス上のデータを保存という処理になります。
funcFileCheckとsubFileSaveのコードが知りたかったんですが(^^;
そこで、"カルテ保存.csv"を掴んだままということはないですか?
また、"カルテ保存.csv"が読み取り専用になってたりしませんか?
>>保存処理の
>>Open "カルテ保存.csv" For Output As #1
>>でエラーになります。
レスは読みました?
>>あと、ファイル名は、"カルテ保存.csv"だと、カレントパスにファイルがないと
>>エラーになるので、"C:\test\カルテ保存.csv"やApp.Patb & "\カルテ保存.csv" のように
>>フルパスで書いた方が良いです。
とLESIAさんが書いてますけど
コンパイルエラーにはならないんですよね?
ちょっと
>Writ#1, .Number, .Name, .Sei, .Birth, .Blood
が気になったので・・・
1212
ツイート | ![]() |