DOBON.NET DOBON.NETプログラミング掲示板過去ログ

データテーブルについて

分類:[.NET]

OS:XP VB:.net

データテーブルに格納された複数のレコードを1件ずつ順に読み込んでいきたいのですが、そういった事は可能なのでしょうか?
■No1465に返信(お初さんの記事)
> OS:XP VB:.net
>
> データテーブルに格納された複数のレコードを1件ずつ順に読み込んでいきたいのですが、そういった事は可能なのでしょうか?

fukuです、こんにちは。
DataTableのRowsプロパティを使えばできますよ

サンプルです。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfSystemDataDataTableClassRowsTopic.asp

以上です。
お返事有り難う御座います。
sampleには

Dim myRow As DataRow
For Each myRow In thisTable.Rows
Dim myCol As DataColumn
For Each myCol In thisTable.Columns
Console.WriteLine(myRow(myCol))
Next myCol
Next myRow

とあったのですが、これ処理でテーブルのデータを1レコードずつ順位読み出している、という解釈でよいのでしょうか?
■No1468に返信(お初さんの記事)
> お返事有り難う御座います。
> sampleには
>
> Dim myRow As DataRow
> For Each myRow In thisTable.Rows
> Dim myCol As DataColumn
> For Each myCol In thisTable.Columns
> Console.WriteLine(myRow(myCol))
> Next myCol
> Next myRow
>
> とあったのですが、これ処理でテーブルのデータを1レコードずつ順位読み出している、という解釈でよいのでしょうか?
>
fukuですこんにちは
そうですね、単純にDataTableの行(レコード)にあたるのがDataRowで
レコードの列(フィールド)にあたるのがDataColumnです。
例えば1行目の1列目を持ってきたければ(オブジェクト上では
0行目の0列目)DataTable.Rows(0).Columns(0) でもってこれます。

以上です。
せっかく教えて頂いて本当にありがたいのですが、それ以前のデータテーブルに格納する部分でエラーにハマっています。。。

DBから1件ずつ読み込んで格納したいのですが、2件目を格納しようとすると、
『追加情報 : この行は既にこのテーブルに属しています。』
というメーッセージで落ちるのですが、どこか誤った書き方をしているのでしょうか?
本当にすいませんが、教えて頂けないでしょうか?

T_otod = dtset.Tables.Add("xxxx")
dtrow = T_otod.NewRow

T_otod.Columns.Add("0", Type.GetType("System.String"))
T_otod.Columns.Add("1", Type.GetType("System.String"))
T_otod.Columns.Add("2", Type.GetType("System.String"))
T_otod.Columns.Add("3", Type.GetType("System.String"))
T_otod.Columns.Add("4", Type.GetType("System.String"))
T_otod.Columns.Add("5", Type.GetType("System.String"))
T_otod.Columns.Add("6", Type.GetType("System.String"))
T_otod.Columns.Add("7", Type.GetType("System.String"))
T_otod.Columns.Add("8", Type.GetType("System.String"))
T_otod.Columns.Add("9", Type.GetType("System.String"))

olecnP1.Open()
olecmd = New OleDb.OleDbCommand("SELECT aaaaaaaa, bbbbbbbb, cccccccc, FROM " & Library & "." & File & " WHERE (dddddddd = ' ')", olecnP1)
rs = olecmd.ExecuteReader

While rs.Read
dtrow(0) = rs!aaaaaaaa
dtrow(1) = rs!bbbbbbbb
dtrow(2) = rs!cccccccc
T_otod.Rows.Add(dtrow)
End While

olecnP1.Close()
自己解決致しました。

『dtrow = T_otod.NewRow』

がループの中に抜けておりました。。。
■No1472に返信(お初さんの記事)
> 自己解決致しました。
>
> 『dtrow = T_otod.NewRow』
>
> がループの中に抜けておりました。。。
>
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板