tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルAPPENDモードのファイル出力
記事No15228
投稿日: 2011/06/14(Tue) 09:23
投稿者ちーさん
OS:Windows XP VB:VB6.0 VB暦:1ヶ月未満です。
CSVファイルに、
・1行目は格納されている行件数を固定行として出力
・2行目以降はデータ行
を出力させたいのですが、1行目の行件数は上書きできても、APPENDモードWRITEしたデータ行は上書きになってしまいます。
1つのファイルに、上書きと末尾追加の両方をさせるには、どうしたらよいのでしょうか?
どなたか教えてください。
下は作成してみたコードです。意図が伝わるかどうかわかりませんが、一部日本語に書き換えてあります。

  '行件数の読み込み
      filenum = FreeFile
      Open DataFile For Input As #filenum
      Input #filenum, 行件数
      Close #filenum
  '行件数加算 & 上書き更新
      行件数 = 行件数 + 1
      filenum = FreeFile
      Open DataFile For Output As #filenum
      Write #filenum, 行件数
      Close #filenum
    'データ行追記
      filenum = FreeFile
      Open DataFile For Append As #filenum
      Write #filenum, データ項目1, _
                      データ項目2
    Close #filenum

[ツリー表示へ]
タイトルRe: APPENDモードのファイル出力
記事No15229
投稿日: 2011/06/14(Tue) 12:01
投稿者nobu
「行件数」は読み込んでも
行件数分の「データ行」を読み込み、その「データ行」を書き込んでいないからでしょう。

「'行件数の読み込み」処理の時に「データ行」を配列などに読み込んでおき、
「'行件数加算 & 上書き更新」したら「データ行」の配列の書き出しが必要でしょう。
その後で「'データ行追記」処理を行う必要があるでしょう。

言葉で書くと.....。
例えば元の「行件数」が3件だったとしたら
最初は下記のような内容でしょう。
行件数=3
データ行1
データ行2
データ行3 ....この3行を配列などに読み込んでおく。

行件数加算して「行件数」は3+1=4件になったのなら
行件数=4
データ行1
データ行2
データ行3 ....この3行を配列などから書き出しておく。
 
...とここまで書き出してから追加のデータ行4を追記が必要でしょう。

結果として1件のデータ行を追加後は下記のようになるかと。
行件数=4
データ行1
データ行2
データ行3
データ行4

[ツリー表示へ]
タイトルRe^2: APPENDモードのファイル出力【ありがとうございます】
記事No15230
投稿日: 2011/06/14(Tue) 13:13
投稿者ちーさん
>nobu様

回答ありがとうございます!
データをすべて読まなければいけないのですね・・・
直して実行してみます! m(_ _)m

[ツリー表示へ]