您的位置:首页 > 其它

ActiveReport报表,增加空数据的方法(中日文注解)

2010-11-26 16:56 260 查看
''' <summary>
''' 空っぽなデータを増加
''' </summary>
''' <param name="cdttStart">DataSource</param>
''' <param name="intNumOfOnePage">ページ毎にデータの件数を表示する</param>
''' <param name="strCondition">ページブレイク条件、文字列配列</param>
''' <returns>New DataSource</returns>
''' <remarks></remarks>
Private Function funSetPageNullData(ByVal cdttStart As DataTable, _
ByVal intNumOfOnePage As Integer, _
ByVal strCondition As String()) As DataTable
Try
'最新のデータ件数
Dim intCount As Integer = 0
'新なデータテーブルの定義
Dim cdttEnd As DataTable
'新なデータテーブルのレイアウトを複製する
cdttEnd = cdttStart.Select("1=1").CopyToDataTable
'クリア
cdttEnd.Clear()
'元のデータより、下記の処理を繰り返し行う
For index As Integer = 0 To cdttStart.Rows.Count - 1
'新規行データを作成する
Dim DDR As DataRow = cdttEnd.NewRow()
'新規行データの値を設定する
For index1 As Integer = 0 To DDR.ItemArray.Length - 1
DDR(index1) = cdttStart.Rows(index)(index1)
Next
'新規行データを新たなデータテーブルに追加する
cdttEnd.Rows.Add(DDR)
'最新のデータ件数+1
intCount = intCount + 1
Dim flg As Boolean = False
'ブレイク条件の判断
For index1 As Integer = 0 To strCondition.Length - 1
'最後行データであれば、空白データ行の追加処理へ行く
If index = cdttStart.Rows.Count - 1 Then
flg = True
Else
'最後行のデータでなければ、次のデータはページブレイク条件か判断する
flg = cdttStart.Rows(index)(strCondition(index1).ToString) <> cdttStart.Rows(index + 1)(strCondition(index1).ToString)
End If
'頁ブレイク条件を満たせば、空白データ行の追加処理へ行く
If flg = True Then
Exit For
End If
Next
'空白データ行の追加処理
If flg Then
'不足分の空白行データを追加する
If intCount Mod intNumOfOnePage <> 0 Then
For addNum As Integer = 0 To intNumOfOnePage - (intCount Mod intNumOfOnePage) - 1
Dim dr As DataRow
dr = cdttEnd.NewRow()
'一行空白行データを設置する
For index1 As Integer = 0 To dr.ItemArray.Length - 1
dr(index1) = DBNull.Value
Next
'空白行データにページブレイク条件を再設定する
For index1 As Integer = 0 To strCondition.Length - 1
dr(strCondition(index1)) = cdttStart.Rows(index)(strCondition(index1).ToString)
Next
'空データを追加する
cdttEnd.Rows.Add(dr)
Next
'最新のデータ件数+追加された空データの件数
intCount = intCount + (intNumOfOnePage - (intCount Mod intNumOfOnePage))
End If
End If
Next
'Datasetに戻る
Return cdttEnd
Catch ex As Exception
Throw ex
End Try
End Function
''' <summary>
''' 空っぽなデータを増加
''' </summary>
''' <param name="cdttStart">DataSource</param>
''' <param name="intNumOfOnePage">每頁要顯示數據的條數</param>
''' <param name="strCondition">分頁的條件,字符串數組</param>
''' <returns>New DataSource</returns>
''' <remarks></remarks>
Private Function funSetPageNullData(ByVal cdttStart As DataTable, _
ByVal intNumOfOnePage As Integer, _
ByVal strCondition As String()) As DataTable
Try
'新表當前記錄條數
Dim intCount As Integer = 0
'最後需要的數據源定義
Dim cdttEnd As DataTable
'複製表結構
cdttEnd = cdttStart.Select("1=1").CopyToDataTable
'清空
cdttEnd.Clear()
'遍歷原數據源每條數據
For index As Integer = 0 To cdttStart.Rows.Count - 1
'原數據表添加至新數據源表里
Dim DDR As DataRow = cdttEnd.NewRow()
'遍歷此行每一個字段的值
For index1 As Integer = 0 To DDR.ItemArray.Length - 1
DDR(index1) = cdttStart.Rows(index)(index1)
Next
'添加至新表一行數據
cdttEnd.Rows.Add(DDR)
'新表記錄數+1
intCount = intCount + 1
Dim flg As Boolean = False
'判斷下一條數據是否遇到分頁條件
For index1 As Integer = 0 To strCondition.Length - 1
'如果是最後一條數據,則直接去填充空數據
If index = cdttStart.Rows.Count - 1 Then
flg = True
Else
'如果不是最後一條數據,則判斷下一條數據是否是分頁條件
flg = cdttStart.Rows(index)(strCondition(index1).ToString) <> cdttStart.Rows(index + 1)(strCondition(index1).ToString)
End If
'如果分頁條件成立,則跳出,開始添加空數據
If flg = True Then
Exit For
End If
Next
'如果分頁條件成立,則跳出,開始添加空數據
If flg Then
'如果新表當前記錄總數不是每頁需要顯示的數據條數的整數倍,則添加空數據,使記錄數填充滿一頁
If intCount Mod intNumOfOnePage <> 0 Then
For addNum As Integer = 0 To intNumOfOnePage - (intCount Mod intNumOfOnePage) - 1
Dim dr As DataRow
dr = cdttEnd.NewRow()
'設置一行空數據
For index1 As Integer = 0 To dr.ItemArray.Length - 1
dr(index1) = DBNull.Value
Next
'分頁條件的字段需要和原記錄相同
For index1 As Integer = 0 To strCondition.Length - 1
dr(strCondition(index1)) = cdttStart.Rows(index)(strCondition(index1).ToString)
Next
'添加空數據
cdttEnd.Rows.Add(dr)
Next
'新表記錄條數+新增的空數據條數
intCount = intCount + (intNumOfOnePage - (intCount Mod intNumOfOnePage))
End If
End If
Next
'返回新數據源
Return cdttEnd
Catch ex As Exception
Throw ex
End Try
''' <summary>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐