質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.53%
VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

1回答

185閲覧

CSVファイルの継ぎ足し

mori_C

総合スコア34

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2023/11/28 08:33

実現したいこと

●元ファイルにデータが順に記録されています
AA1,AA2,AA3,AA4
BB1,BB2,BB3,BB4
CC1,CC2,CC3,CC4
DD1,DD2,DD3,DD4
EE1,EE2,EE3,EE4

●新たに取得したデータ
DD1,DD2,DD3,DD4
EE1,EE2,EE3,EE4
FF1,FF2,FF3,FF4
GG1,GG2,GG3,GG4
HH1,HH2,HH3,HH4

両方のファイルをVBで読み込み、
AA1,AA2,AA3,AA4
BB1,BB2,BB3,BB4
CC1,CC2,CC3,CC4
DD1,DD2,DD3,DD4
EE1,EE2,EE3,EE4
FF1,FF2,FF3,FF4
GG1,GG2,GG3,GG4
HH1,HH2,HH3,HH4

元ファイルに、新たに取得したデータの中から、元ファイルにないデータを
追加したいです。

今できたところは、
元ファイルの最終行を取得

最終行の文字列をあたらに取得したファイル内から検索
何番目にあるか確認し、それ以降のデータを元ファイルにつけたしていますが、
まどろっこしい方法で、きれいに書けません。

もっと簡単に差分データを付け足す方法をご存じないですか?
あたらに取得するデータは行数が決まっており(仮に5行とします)、元ファイルは行数がきまってません。

ヒントでもご教授いただければ幸いです。

VB.netで作成中のシステムです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YAmaGNZ

2023/11/28 08:56

VB.NET ファイル 追記」とでも検索すればいいでしょう
winterboum

2023/11/28 13:43

元ファイルの最終行を取得 最終行の文字列をあたらに取得したファイル内から検索 何番目にあるか確認し、それ以降のデータを元ファイルにつけたし ですと 「元ファイルに、新たに取得したデータの中から、元ファイルにないデータを追加」 は保証されませんが、それで良い? 1. 新データに、旧データの「最終行より前」にあるデータが含まれることはないのか    CC1,CC2,CC3,CC4 が含まれてるってことは絶対無い? 2.「元ファイルの最終行と同じデータの行 より前に 元ファイルにないデータが含まれることはないのか    新データ DD1,DD2,DD3,DD4 とEE1,EE2,EE3,EE4 の間に JJ1,JJ2,JJ3,JJ4 がある、ということは絶対無い?
YAmaGNZ

2023/11/28 22:28 編集

すみません。前のコメントは勘違いしていました。 貴方の思う「きれい」とはどのようなものなのでしょうか? 言葉ですと 1.元ファイルの最終行を取得 2.最終行の文字列をあたらに取得したファイル内から検索 3.何番目にあるか確認し、それ以降のデータを元ファイルにつけたし というロジックは「まどろっこしい」ロジックとは感じませんでした。 何をどうしたいのか明確にできませんか? また仕様として 元ファイルが AA1,AA2,AA3,AA4 BB1,BB2,BB3,BB4 CC1,CC2,CC3,CC4 DD1,DD2,DD3,DD4 EE1,EE2,EE3,EE4 で新たに取得したデータが DD1,DD2,DD3,DD4 EE1,EE2,EE3,EE4 FF1,FF2,FF3,FF4 AA1,AA2,AA3,AA4 HH1,HH2,HH3,HH4 とあった場合は AA1,AA2,AA3,AA4 BB1,BB2,BB3,BB4 CC1,CC2,CC3,CC4 DD1,DD2,DD3,DD4 EE1,EE2,EE3,EE4 FF1,FF2,FF3,FF4 AA1,AA2,AA3,AA4 HH1,HH2,HH3,HH4 という感じでAAの行も追記するのでしょうか? それともAAの行は元ファイルに含まれるということで書き出されないのでしょうか? また、同じデータとは何をもって同じとするのでしょうか? 1行が完全一致で同じなのでしょうか? AA1,AA2,AA3,AA4 と AA1,AA2,AA3,AA5 は同じデータですか? それとも、こういったことは考えず貴方が示したロジックが要求仕様を完全に満たしているのでしょうか?
guest

回答1

0

ベストアンサー

  1. 元ファイルを変数に読み出し
  2. 新ファイルから1行づつデータを取得、データなければ 6 に飛ぶ
  3. 1行データが元ファイル変数の中に存在するかチェック
  4. 存在してなければ、1行データを元ファイルに追記
  5. 2に戻る
  6. おしまい

という手順になろうかと思います。
がんばってコードを組みましょう

投稿2023/11/28 22:21

y_waiwai

総合スコア87684

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mori_C

2023/12/01 04:19

コードを整理してわかりやすく書けるようにしたいと思います。 いまごちゃごちゃで動くのは動くのですが、バグとか発生しそうですので 良い方法があるのか聞いてみました。頑張って書きたいとおもいます。 ありがとうございまいした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.53%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問