• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VB2010 DataGridVie CSV読込)

VB2010 DataGridVie CSV読込

このQ&Aのポイント
  • VB2010で出勤簿を作成し、DataGridviewで表示する方法です。
  • 出勤簿のデータをCSV形式で保存し、別のPCでも使用できるようにする方法について教えてください。
  • CSVファイルを読み込む際に、コントロールがデータバインドされている場合にエラーが発生する対処方法を知りたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • todo36
  • ベストアンサー率58% (728/1234)
回答No.2

> 素人考えでCSV形式で保存して XMLに一発変換でしょ DataSet.ReadXml(filename) DataSet.WriteXml(filename)

totti1800
質問者

お礼

XMLを全く分からないので、無駄な質問をいたしましてすみませんでした。 既に、回答を簡潔に頂いていたのに、気付かないで遠回りをしていました。 DataSet.WriteXml("kyoto.xml") と書くと簡単に保存できました。 DataSet.ReadXml("kyoto.xml") の場合は、少し手間取りましたが、これを書く前にDatasetを初期化しますとエラーが出なくなりました。 xmlからDatasetに読み込みができます。 少しだけ、XMLが分かりました。 感謝いたします。

totti1800
質問者

補足

XMLを使うのは、初めてなのでいろいろ参考にしながら、DataSet.ReadXml(filename)ではありませんが、次のようなコードを書きました。 プログラムを実行させますと、エラーもなく作動しました。でも、保存先がどこかわかりませんし、実際に保存されているのかも判りませんので、ファイル名を「kyoto.xml」として書き直しました。 'XMLで保存 Dim dtSet As DataSet = New DataSet("出勤簿") Dim dtTbl As DataTable = dtSet.Tables.Add("DATA") dtTbl.Columns.Add("NO", Type.GetType("System.String")) dtTbl.Columns.Add("社員名", Type.GetType("System.String")) dtTbl.Columns.Add("日付", Type.GetType("System.String")) dtTbl.Columns.Add("出勤", Type.GetType("System.String")) dtTbl.Columns.Add("欠勤", Type.GetType("System.String")) dtTbl.Columns.Add("有給", Type.GetType("System.String")) 'データセットにデータを構築 Dim row As DataRow Dim i As Integer For i = 1 To DataGridView1.Rows.Count - 1 row = dtTbl.NewRow() row("NO") = i.ToString() row("社員名") = i.ToString() row("日付") = i.ToString() row("出勤") = i.ToString() row("欠勤") = i.ToString() row("有給") = i.ToString() dtTbl.Rows.Add(row) Next 'DataSet内のデータのXML表現を取得 Console.WriteLine(dtSet.GetXml()) 最後の行の「 Console.WriteLine(dtSet.GetXml())」を 「 Console.WriteLine(dtSet.GetXml(”kyoto.xml”))」に変更しましたが、 エラーメッセージが次のように出ます。 「String "kozo.xml" から型 'Integer' への変換は無効です」 これは、どのように対応すればよろしいでしょうか。 また、使いよいDataSet.ReadXmlの参考書がございましたら、お教えください。 ご教授のほどを宜しくお願い申し上げます。

その他の回答 (2)

  • MSZ006
  • ベストアンサー率38% (390/1011)
回答No.3

#1です。 詳しくは分からないのですが、CSVを書き出しているほうのDATATABLEの列(NO)の型定義と、読み込んでいるほうのそれと一致していないのではないでしょうか? なお、他の回答者さまのおっしゃるとおり、XMLで書き出して読み込めば悩むことは少ないと思います。 いずれにせよ、書き出し側と読み込み側で列の型を一致させておく必要があります。

totti1800
質問者

お礼

ご教授をありがとうございました。 CSVで保存するのは簡単ですが、保存されたものを書き出すのは列の型定義の一致という作業が入り難しかったです。 一致させてもDataGridViewに表示されるだけで、Datasetに保存されないので、そのあたりの改良も必要と感じいました。 ご指摘のように、XMLで保存・書き出しをすることに致します。 お時間を頂、感謝しています。

  • MSZ006
  • ベストアンサー率38% (390/1011)
回答No.1

DataGridView1にソースデータ(出勤簿)がバインドされているのだと思いますので、DataGridView1に直接行を追加ではなくて元データ(出勤簿)のほうに追加をしていくべきではないでしょうか?

totti1800
質問者

補足

ご教授をありがとうございます。 早速、下記のように訂正しましたところ、 ' 読み込んだデータ(1行をDataset11.出勤簿に表示する) Me.DataSet11.出勤簿.Rows.Add(row) エラーが次のように出ました。 「入力文字列の形式が正しくありません。列 NO に <NO> を格納できませんでした。 必要な型は Int32 です。」 NOは、IntでしたがInt32というようにエラーがでまして、わからなくなりました。 もう少し、ご教授ください。 すみません。

関連するQ&A