いつもお世話になっております。
現在課題としてVB.NETでCSVファイルを使った簡単な連絡先管理システムのようなものを作成しています。
機能としては、
1.既存のCSVファイルを読込み、リストボックスに番号、名前を一覧表示する
→あかさたな~でソートできるようにする
2.リストボックスの連絡先クリックでテキストボックスに詳細を表示
3.追加ボタンクリックで連絡先の新規追加
4.更新ボタンクリックで既存の連絡先の内容更新
5.削除ボタンクリックで既存の連絡先の削除
→いずれもCSVにデータを保存
を想定しています。
デザインはでき、本などを参考に配列を使い読込機能も実装したのですが、
ソートなどの機能を考えデータテーブルにデータを格納するようにとヒントをもらい、作り直すことにしました。
しかし、データテーブルの使い方について一日調べましたが方法も多くややこしくてイマイチ理解ができていません。
・CSVからデータを読込み、データテーブルに格納し、リストボックスに表示させるのにわかりやすい方法はありますでしょうか?
※CSVの内容は以下のようなかたちです。
0001,中山太朗,神奈川県,0000-00-0000,nakayama@aaa.com
0002,土田新太郎,新潟県,0120-00-1245,sdjnaidm@aaa.com
0003,中田三郎,富山県,0786-00-0000,fhsuw@aaa.com
0004,田中史郎,愛知県,0516-00-2652,aaaaa@aaa.com
0005,山田一郎,石川県,0585-58-5482,yamada@aaaa.com
0006,鈴木五郎,山梨県,0555-55-5555,suzuki@aaaa.com
0007,大田六郎,福岡県,5584-58-2541,oota@saaa.com
###現時点のソースコード
'フォーム Public Class AddressBookForm 'CSVファイルを読込みリストボックスに表示する Private Sub AddressBookForm_Load(sender As Object, e As EventArgs) Handles Me.Load Reading.ReadData() End Sub End Class '読込クラス Public Class Read 'アドレス帳の情報を格納する配列DBを作成 Private Structure DBField Dim Number As String Dim Name As String Dim Address As String Dim Tel As String Dim Mail As String End Structure Dim DB() As DBField ' 概要:CSVファイルを読込みリストボックスに表示する Public Sub ReadData() Dim lReader As New IO.StreamReader("C:\adoresu.txt", System.Text.Encoding.GetEncoding("Utf-8")) Try Do Until lReader.EndOfStream '全てのテキストを読み取るまで繰り返す Dim recordCount As Integer 'データの行数 If DB Is Nothing Then '配列が空なら上限値を0にして配列を作成。 recordCount = 0 Else recordCount = DB.GetUpperBound(0) + 1 '空でない場合は配列のサイズを一つ広げる End If ReDim Preserve DB(recordCount) Dim readFields() As String readFields = lReader.ReadLine.Split(",") '1行分のデータを読み取り、各フィールドに分解して代入 With DB(recordCount) 'DBの配列に代入 .Number = readFields(0) '番号 .Name = readFields(1) '名前 .Address = readFields(2) '住所 .Tel = readFields(3) '電話番号 .Mail = readFields(4) 'メールアドレス End With AddressBookForm.ListBox1.Items.Add(readFields(0) & " - " & readFields(1)) '番号と名前を-で結合 Loop Catch ex As Exception MessageBox.Show(ex.Message, "Read") Finally If lReader IsNot Nothing Then lReader.Close() lReader.Dispose() End If End Try End Sub End Class
###補足情報(言語/FW/ツール等のバージョンなど)
Visual Studio 2012を使用しています。
そのほか必要な情報などございましたらご指摘お願いします。
たびたび似たような質問をするかもしれませんが、よろしくお願いいたします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/04/20 07:59