• 締切済み

C# csvファイルについて

開発環境 Visual Stadio2005 言語 C#  スケジューラを作成しています。 予定はcsvファイルで保存しています。 予定は、 開始日付、終了日付、開始時間、終了時間、件名、場所、分類、内容の順に保存しています。 分類別に予定を一覧に表示したいと考えています。 コンボボックスに分類項目を選択できるようにして、選択後、ボタンを押すと、選んだ分類だけの予定を表示したいのです。 どなたか詳しい方、教えていただけませんか。 お願いします。

みんなの回答

  • HapayMIN
  • ベストアンサー率0% (0/0)
回答No.5

Blackwingls様へ string commText = "SELECT * FROM [" + csvFileName + "] where [kind]='1'"; のように[where]を使わないで 下記のようにFilterで処理した理由を教えてくださいませんでしょうか? string commText = "SELECT * FROM [" + csvFileName + "]"; //選択された分類で予定を抽出 string FilterStr = "Kind = '" + comboBox1.Text + "'"; dv.RowFilter = FilterStr;

回答No.4

こんにちは、Blackwinglsです。 ご質問の内容がかなり広範囲にわたる為、なかなか回答しづらい内容なのですが・・・ どういった流れで処理したいのか、また何処が判らないのか整理してみてはいかがでしょうか。 1 CSV ファイルを DataTable に読み込む 2 DataTable から、分類を重複しないように取り出す。 3 2で取り出した分類をコンボボックスにセットする。 4 コンボボックスで分類が選択されたら、1で作った DataTable から該当するデータを抽出する。 5 4のデータを DataGridView に表示する。 こんな流れでしょうか? 前述の > CSVファイルの全部を読み込むのではなく、部分部分を読み込むにはどのようにしたら良いのでしょうか?? とは処理の流れが違ってしまいますが、ご要望の動きはするのではないかと思います。 フォーム名は、From1、コンボボックス名はcomboBox1、データグリッドビュー名はdataGridView1、と定義してあります。 DataTable dt, dtFilter; DataView dv; private void Form1_Load(object sender, EventArgs e) { //CSVファイルのあるフォルダ string csvDir = Application.StartupPath + @"\"; //CSVファイルの名前 string csvFileName = "Schedule.csv"; //スキーマファイルの作成を忘れずに・・・ //接続文字列 string conString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + csvDir + ";Extended Properties=\"text;HDR=No;FMT=Delimited\""; System.Data.OleDb.OleDbConnection con = new System.Data.OleDb.OleDbConnection(conString); string commText = "SELECT * FROM [" + csvFileName + "]"; System.Data.OleDb.OleDbDataAdapter da = new System.Data.OleDb.OleDbDataAdapter(commText, con); //DataTableに格納する dt = new DataTable(); da.Fill(dt); dv = new DataView(dt); //分類を重複しないように抽出 dtFilter = new DataTable(); dtFilter = dv.ToTable("dtFilter", true, "Kind"); //スキーマファイルにて分類は「Kind」に定義   //comboBox1に分類をセット for (int i = 0; i < dtFilter.Rows.Count; i++) { comboBox1.Items.Add(dtFilter.Rows[i][0].ToString()); } } private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { //選択された分類で予定を抽出 string FilterStr = "Kind = '" + comboBox1.Text + "'"; dv.RowFilter = FilterStr; 抽出された予定をグリッドに表示 dataGridView1.DataSource = dv; } ではでは~★

回答No.3

二重引用符に挟まれたコンマがあるとやっかいですが、String.split()を使って切り分けられませんか。

回答No.2

> 部分部分を読み込むにはどのようにしたら良いのでしょうか?? TextReader.ReadLine() で一行ずつ読みだすことができます。 マニュアル(MSDN)を読んでください。

回答No.1

質問になっていません。 何がわかりませんか? 何について「教えていただけませんか」ですか?

vino149
質問者

補足

質問がわかりににくくてすみません。 CSVファイルの全部を読み込むのではなく、部分部分を読み込むにはどのようにしたら良いのでしょうか??

関連するQ&A