2004.12.01

DatasetとDataRowを使う時の注意

サーバーに何度もアクセスすると負荷がかかるので、
自分のほしいデータをまとめてDatasetに取ってきた後、
そのDatasetを利用して帳票を作成するという機会があると思います。

例えば社員全員のある特定の期間(例えば一週間)毎日の予定を取ってきたのち
改めて社員をキーに特定の期間の一覧を作る場合
以下のようにします。

Dim i1 As Integer
Dim dr() As DataRow
Dim ds As DataSet

'dsの中身を更に絞込みをする
dr = ds.Tables(0).Select("STAFFID = " & iSTAFFID)
For i1 = 0 To dr.Length - 1
 絞り込まれた中身が取れる→ = dr(i1).Item("HOGE")
Next
なお、dr(i1).Item("STAFFID") 型はObjectです。
また、And項目や<=なども使えますので
dr = DS2.Tables(0).Select("STARTTIME >= '" & dSttime.ToString("HH:mm") & "' AND STARTTIME < '" & dEdtime.ToString("HH:mm") & "' ")
などといった書き方も可能となっております。

※注意
Datasetに自分が望んだ通りのデータを作成した場合でも
Selectをすると順番が変わってしまう事もありますので
Sortが必要になります。
Sortの仕方は絞込み条件の後に,で並び替えたい条件を追加する事で
実現されます。


'STAFFID を比較して絞込み/STARTTIME,ENDTIMEで並び替え
dr = ds.Tables(0).Select("STAFFID = " & iSTAFFID, "STTIME,ENDTIME ")
デフォルトではASCになっています。
降順にしたい場合はDESCと書けばできます。

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

photo
ntakayama