'================================写在之前的话

抱歉,一直没有时间,所以FlexCell作者给我的几种加载数据集方法的代码一直没有发出来。

同时再次感谢FlexCell作者的厚道。

博客上发代码有点困难。如果有人有兴趣的话可以登录我的邮箱去获取FlexCell作者给我的几种加载数据集的方法。

邮箱地址:getsoft@126.com         密码:tianxingjian_01

为了方便大家记忆,密码就是:天行健_01

再次严重声明:我不是打广告的,如果我是打广告的,我的小鸡鸡被狗啃掉。

'=============================下面是原帖。

FlexCell表格控件是国货,用于报表开发十分方便。上句话不是广告。第二句话是实话。

项目开发过程中总是会遇到将数据集导入到FlexCell中的情况,可惜的是FlexCell的VB版不支持ADO,可惜呀可惜呀。

自己写了个通用模块,压力测试了一下,不太好使,速度奇慢无比,但不会出错。见以下代码块1。

'代码块1
Public Function loadRecord(GD As Grid, rs As ADODB.Recordset, _
intFirstCol As Integer, intadJust As Integer, _
Optional FC As Integer, Optional FR As Integer) As Boolean
'FC 冻结列
'FR 冻结行
Dim FiledCount As Integer
Dim RsCount As Integer
Dim i As Integer
Dim j As Integer
Dim strComand As String
On Error GoTo Emsg

loadRecord = False
FiledCount = rs.Fields.Count '记录集列数
RsCount = rs.RecordCount        '记录集行数
With GD                      '初始化FelxCell格式并加载数据集
       .selectionMode = 1       '选择模式为行选择,我习惯这个,各位可以自行修改
       For i = 1 To .Rows
         .RemoveItem (i)       '删除所有内容
       Next

.BackColor1 = RGB(231, 235, 247) '初始化奇数行的颜色
       .BackColor2 = RGB(239, 243, 255) '初始化偶数行的颜色,
       .Cols = FiledCount + 1              '表格列数等于记录集列数+1
       .AllowUserResizing = True           '设置用户可以改变行宽列宽
       .BoldFixedCell = False              '返回或设置是否在固定行/列上以粗体画出Selection所对应的单元格的文字
       .DisplayFocusRect = False           '返回或设置控件在当前活动单元格是否显示一个虚框。
       .ExtendLastCol = True             '返回或设置是否扩展最后一列的列宽,让表格可以充满控件
       .Appearance = Flat                '表格绘制风格
       .FixedRowColStyle = Flat          '固定行/列的样式
       .ScrollBarStyle = Flat              '滚动条样式
       .DefaultFont.Name = "Tahoma"        '字体样式
       .DefaultFont.Size = 8             '字体大小
       .Column(0).Width = intFirstCol    '设置第一列宽度
       .Cell(0, 0).Text = ""             '以上都是初始化整个表格样式的,大家可以自己选择,也可以都用默认样式
       For i = 1 To .Cols - 1              '初始化表头
         .Cell(0, i).Text = rs.Fields.Item(i - 1).Name '表头内容
         .Column(i).Width = intadJust                '表头宽度
       Next
       If rs.EOF Then                   '如果记录集为空则退出函数
         loadRecord = True
         Exit Function
       End If
       '如果不为空加载记录集
       .AutoRedraw = False '禁止重绘,这样速度快
       .Rows = 1
       .Refresh
       For i = 1 To RsCount        '记录集个数
      
         For j = 1 To FiledCount '记录集列个数
                                 '得到加载内容命令
            If j = FiledCount Then
                   strComand = strComand & rs.Fields(j - 1)
            Else
                   strComand = strComand & rs.Fields(j - 1) & Chr(9)
            End If
            
         Next

.AddItem strComand, False '执行加载命令,不重绘
       Next i
      
       .AutoRedraw = True
       .Refresh
       .FrozenCols = FC
       .FrozenRows = FR
End With
loadRecord = True
Exit Function
Emsg:
MsgBox Err.Description, vbInformation, "系统提示"
End Function

拿上面的代码到VBGOOD上本来想臭美一下,结果一兄弟马上发了一个速度较快的,压力测试了一下,效率是我的好几倍。不敢独享拿出来吧,见以下代码二,代码二的速度还好,但如果某一记录集的值包含chr(13)也就是回车符则会出现串行问题:

'代码二

Public Sub GetSql(gd As Grid, ResOfGdl As ADODB.Recordset, intFirstCol As Integer, _
                    Optional FC As Integer, _
                    Optional FR As Integer)
    On Error GoTo ED
    Dim I As Integer, Tmp() As String
    With gd
            .SelectionMode = 1          '选择模式为行选择,我习惯这个,各位可以自行修改
        For I = 1 To .Rows
            .RemoveItem (I)         '删除所有内容
        Next
        
        .BackColor1 = RGB(231, 235, 247)    '初始化奇数行的颜色
        .BackColor2 = RGB(239, 243, 255)    '初始化偶数行的颜色,
        .Cols = ResOfGdl.RecordCount + 1               '表格列数等于记录集列数+1
        .AllowUserResizing = True           '设置用户可以改变行宽列宽
        .BoldFixedCell = False              '返回或设置是否在固定行/列上以粗体画出Selection所对应的单元格的文字
        .DisplayFocusRect = False           '返回或设置控件在当前活动单元格是否显示一个虚框。
        .ExtendLastCol = True               '返回或设置是否扩展最后一列的列宽,让表格可以充满控件
        .Appearance = Flat                  '表格绘制风格
        .FixedRowColStyle = Flat            '固定行/列的样式
        .ScrollBarStyle = Flat              '滚动条样式
        .DefaultFont.Name = "Tahoma"        '字体样式
        .DefaultFont.Size = 8               '字体大小
        .Column(0).Width = intFirstCol      '设置第一列宽度
        .Cell(0, 0).Text = ""               '以上都是初始化整个表格样式的,大家可以自己选择,也可以都用默认样式

.AutoRedraw = False
    .Rows = 1
    .Rows = 1
    .Cols = ResOfGdl.Fields.Count + 1

For I = 0 To ResOfGdl.Fields.Count - 1
        .Cell(0, I + 1).Text = ResOfGdl.Fields(I).Name
    Next

If ResOfGdl.RecordCount = 0 Then GoTo ED

'========================关键是这一段,原来ADO的数据集还可以这样呀。
    Tmp = Split(ResOfGdl.GetString(adClipString), Chr$(13))

For I = 0 To UBound(Tmp) - 1
        .AddItem Tmp(I), False
    Next
    End With
ED:
    gd.AutoRedraw = True
    gd.Refresh
If Err.Number <> 0 Then MsgBox Err.Description & Err.Number, , Err.Source

End Sub

跟FlexCell的技术支持邮件联系了一下,要了几个速度快,也没有错误的方法,其中虚表方法速度最快。

'==========================================

抱歉,一直没有时间,所以FlexCell作者给我的几种加载数据集方法的代码一直没有发出来。

同时再次感谢FlexCell作者的后道。

博客上发代码有点困难。如果有人有兴趣的话可以登录我的邮箱去获取FlexCell作者给我的几种加载数据集的方法。

转载于:https://www.cnblogs.com/laojiefang/archive/2011/12/20/2294317.html

FlexCell控件初始化以及加载数据集[原创]相关推荐

  1. jQuery EasyUI动态添加控件或者ajax加载页面后不能自动渲染问题的解决方法

    博客分类: jquery-easyui jQueryAjax框架HTML  现象: AJAX返回的html无法做到自动渲染为EasyUI的样式.比如:class="easyui-layout ...

  2. WebBrowser控件判断完全加载中DocumentCompleted和Navigated的关系

    WebBrowser控件判断完全加载使用DocumentCompleted是有问题的,所以有人提出可以使用判断DocumentCompleted的次数和Navigated次数完全相等的方法判断是否完全 ...

  3. 安卓案例:列表控件上拉加载更多

    文章目录 一.上拉加载更多使用场景 二.案例演示 - 列表控件上拉加载更多 (一)运行效果 (二)涉及知识点 (三)实现步骤 1.创建安卓应用[ListViewLoadMore] 2.将背景图片拷贝到 ...

  4. asp.net读取用户控件,自定义加载用户控件

    1.自定义加载用户控件 ceshi.aspx页面 <html><body> <div id="divControls" runat="ser ...

  5. wps office oa控件 痕迹_WPS加载项案例应用回顾

    2019年的武汉,金山办公召开了第一届开发者大会,主题是「开放赋能.合作共赢」,2020年8月29至30日,在重庆召开了第二届,主题是「在一起.创未来」.上一届发布了WPS PC Office的WPS ...

  6. windowmediaplayer控件出现未能加载的问题

    问题:当添加windowsmediaplayer控件后,有时候会发现窗体设计器出现下图提示,无法加载设计器. 方法:将该方案的属性中生成选项下的平台目标选择anycpu(自己莫名将平台目标设置成X64 ...

  7. 树的懒加载怎么用ajax调接口,ElementUI tree树形控件的懒加载使用

    先看效果: image 1.界面中: :data="treeData" :props="defaultProps" :load="loadNode&q ...

  8. winform窗体控件多,加载慢、卡顿的解决办法

    protected override CreateParams CreateParams{get{CreateParams cp = base.CreateParams;cp.ExStyle |= 0 ...

  9. winform使用皮肤控件后,加载慢、卡顿的问题

    protected override CreateParams CreateParams {get{CreateParams cp = base.CreateParams;cp.ExStyle |= ...

最新文章

  1. 对话腾讯AI Lab:即将开源自动化模型压缩框架PocketFlow,加速效果可达50%
  2. STM32固件库的调用
  3. iscsi发起程序找不到目标_3分钟学会程序员“面试回答规范”,不怕找不到工作的里面请...
  4. javacurrentmap_Java 8 并发: 原子变量和 ConcurrentMap
  5. windows azure之创建虚拟机
  6. 字节码中的两个方法init,clinit
  7. 为什么传说对决提示服务器未响应,传说对决连接不上伺服务器怎么回事 | 手游网游页游攻略大全...
  8. 字符编码解码整合工具
  9. 【原】winform定制datagrid模板
  10. 一条案例:如何选择合适的第三方数据源
  11. 李开复:一切靠命运或靠自己都是不合适的
  12. “向日葵”远程控制软件,方舟Q2硬件付费/免费功能全面评测,拔草向
  13. atomic 内存序_C++11的原子量与内存序浅析
  14. vue获取屏幕高度赋值给div与获取div本身的高度
  15. Android面试准备复习之Android知识点大扫描
  16. Pytorch实战宝可梦分类-自定义数据集完成宝可梦分类案例分步解析
  17. 前后端程序员工作简单概述
  18. 桌面计算机打开无响应,在win7系统中桌面无响应的几种解决方法
  19. 英语3500词(17/20)science主题(2022.3.13)
  20. JavaWeb全套教程笔记_前端技术

热门文章

  1. Ubuntu18.04安装死机,开机死机,关机死机 惠普
  2. 三只小猪的思路解析及其C语言代码
  3. golang大厂面试1
  4. 报告称苹果的保密文化或导致人才流失 阻碍招聘进程
  5. 苗阜王声最新搞笑相声《满腹经纶》
  6. 微信小程序跳转方式总结
  7. EndNote中自定义格式的符号说明
  8. 使用Java写出身高预测_何预测孩子身高遗传潜质
  9. 开源数据库成为发展自主可控产品的主要途径 ▏开源数据库系列谈之三
  10. c++中string截取带有中文字符串的解决方案