2013年3月17日 星期日

[技巧] Using GetUpperBound(0) 取得儲存多筆Record的DataRow


Dim 病假() As DataRow = Me.MyCallForm.ds.Tables("attend").Select("type = '病假' and ym like '" & ComboBox1.Text & "%'")

For i As Integer = 0 To 病假.GetUpperBound(0)
    MsgBox(病假(i)("ym") + 病假(i)("type"))
Next

備註:
Dim 病假() As DataRow = Me.MyCallForm.ds.Tables("attend").Select("type = '病假' and ym like '" & ComboBox1.Text & "%' and substring(ym,6,2) <= " & Integer.Parse(ComboBox2.Text) & "")

ym欄位的資料型態為nchar
資料內容為六位數的 "月份日期" 組合
201003
201201
201202
201203
201302

可運用 substring() 來進行分割搜尋...
從條件來看 假設 ComboBox1.Text = 2012 , ComboBox2.Text = 02
則DataTable.Select()的filter結果為
201201
201202

參考:
DataTable.Select 方法 (String)
[C#] Datatable.Select 的運算式用法
C# [轉載] Datatable.Select 的運算式用法
DataTable.Select()中的表达式可使用的函数
dataTable 的處理
Convert DataRow Array to DataTable, DataTable Filter function DataTable.Select return DataTable
DataTable Select Function (datarow 轉為 datatable)

SQL函數 查詢SQL資料欄位相符的字串
MSSql 中Charindex ,Substring的使用
CHARINDEX (Transact-SQL)

沒有留言:

張貼留言