记录集填充msflexgrid表格

以下程序用于用记录集填充msflexgrid表格,参数一为表格控件名,参数二为ado记录集名.

Public Function datatogrid(pGrid As MSHFlexGrid, rs As ADODB.Recordset) As Boolean
    '本函数特别要求,对于含的小数点的数值型数据,要补足小数点后两位
    '功能:将记录添充到表格中
    '接收参数:表格名称和记录集
    '表头内容全部居中,其余单元格根据类型居左或居右
    
    Dim i As Integer, j As Integer, str As String       'str用于存放字段内容
    Dim rscol As Integer                                '字段的序号,不是表格列的序号
    On Error GoTo gherr
    
    '首先判断记录集是否有内容[如果无内容则不做任何操作就直接返回]
    If rs.RecordCount < 1 Then
        datatogrid = False
        Exit Function
    End If
    
    '下面进行表格填充
    pGrid.Redraw = False                                '不重绘,目的是提高速度
    
    With pGrid
        .Clear
        .FixedRows = 1                                  '固定行
        .Row = 1                                        '活动单元行
        .Col = 1                                        '活动单元列
        
        rs.MoveLast
        rs.MoveFirst                                '移动记录,如果不移动,有时候RecordCount会统计不准确
        
        .Cols = rs.Fields.Count + 1                 '设定表格列数,统计字段数量,列数要比字段数多一个,第一列为空列,当记录指示器用
        .Rows = rs.RecordCount + 1                  '该设定决定表格有多少行显示数据,很重要

        .TextMatrix(0, 0) = ""                      '设定第0列表头,为空
        
        '添加各个字段的名称[添加表头]
        For i = 1 To rs.Fields.Count                '循环显示字段名称,有多少个字段则循环多少次
        
            'i就是表格的当前列,第0列是记录指示器,不在本循环中处理
            rscol = i - 1                                           '比如第1列存放的是rs(0)的内容,故有i-1的关系
            .Row = 0
            .Col = i
            .CellAlignment = 4                                     '表头都设成居中对齐
            .TextMatrix(0, i) = rs.Fields(rscol).Name               '显示字段名称
        Next
        
        '第一行放字段名,再加上记录数,就是表格应有的总行数
        For i = 1 To rs.RecordCount                     '循环显示记录,有多少条记录则循环多少次
                .Row = i                                '当前行随着添充数据走
                
                '第0列做记录指示器用,不填充数据,所以每一行都从第一列开始填
                For j = 1 To rs.Fields.Count            '循环处理各个列
                    
                    .Col = j                            '表格定位到相应的列
                    rscol = j - 1                       '字段的序号,第一列对应rs的第0列字段,故有j-1的关系
                    
                    '根据不同的类型,设置不同的格式
                    Select Case rs.Fields(rscol).Type
                        
                        Case adDecimal, adDouble, adSingle, adNumeric
                            
                            '设定为右对齐
                            .CellAlignment = 7
                            
                           If Val(rs.Fields(rscol).Value & "") = 0 Then    '为0要不显示
                                str = ""
                            Else
                            
                                '根据数据库中的字段小数位数的定义设置格式
                                Select Case rs.Fields(rscol).NumericScale
                                    Case 1
                                        str = Format(Trim(rs.Fields(rscol) & ""), "#0.0")
                                    Case 2
                                        str = Format(Trim(rs.Fields(rscol) & ""), "#0.00")
                                    Case 3
                                        str = Format(Trim(rs.Fields(rscol) & ""), "#0.000")
                                    Case Else
                                        str = Format(Trim(rs.Fields(rscol) & ""), "#0.0#")
                                End Select
                            End If
                            
                        Case adBigInt, adInteger, adTinyInt, adSmallInt
                            
                            '设定为右对齐
                            .CellAlignment = 7
                           If Val(rs.Fields(rscol).Value & "") = 0 Then    '为0要不显示
                                str = ""
                            Else
                                str = Trim(rs.Fields(rscol).Value & "")
                            End If
                            
                        Case Else
                        
                            '设定为左对齐
                            .CellAlignment = 1
                            str = Trim(rs.Fields(rscol).Value & "")
                    End Select
                    
                    .TextMatrix(i, j) = str
                
                Next
                rs.MoveNext                             '显示下一条记录
        Next
        '设定第几行显示在最前面(用toprow属性)
        .TopRow = 1
        datatogrid = True                               '返回true
    End With
    pGrid.Redraw = True              '填完数据后,充许重绘
    Exit Function
gherr:
    datatogrid = False
End Function
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值