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>
相关文章推荐
- 『行式报表』通过方法对数据进行过滤
- DATASNAP为支持FIREDAC而增加的远程方法的数据类型TFDJSONDataSets
- AJAX长时间轮循交互数据时客户端句柄数持续增加的解决方法
- VS2010设计rdlc报表时找不到“报表数据”选项卡的解决方法
- 基于hana的BO报表数据权限的控制方法
- spring mvc 注解访问控制器以及接收form数据的方式,包括直接接收日期类型及对象的方法
- CSS实现圆柱型数据报表的方法
- 深度学习数据量小,增加数据方法
- ASP.NET MVC3 快速入门-第六节 增加一个追加数据的方法和一个追加数据的视图
- 挂载报表中初始化报表临时数据表的方法
- 润乾报表数据集中参数和宏的使用方法
- 博计报表数据回填的实现方法
- 如何让SELECT 查询结果额外增加自动递增序号 如果数据表本身并不内含自动递增编号的字段时,要怎么做才能够让SELECT查询结果额外增加自动递增序号呢?下列五种方法供您参考: USE test;
- Python实现导出数据生成excel报表的方法示例
- 定义一个时间类,提供设定时间、显示时间和秒数增加1的功能,其中设定时间的方法需要校验数据的正确性
- 公司关于数据报表观测方法
- 数据以报表形式展现的实现方法研究
- RDLC报表数据工具栏关闭后打开方法
- ASP.NET MVC3 快速入门-第六节 增加一个追加数据的方法和一个追加数据的视图(转)
- hibernate @Entity @Table 实体类中不可以随便添加与表字段不对应的get方法,如增加请加注解 @Transient