Foxtable(狐表)用户栏目专家坐堂 → 贴出代码,实在是找不到优化方式了,求助!


  共有2445人关注过本帖树形打印复制链接

主题:贴出代码,实在是找不到优化方式了,求助!

帅哥哟,离线,有人找我吗?
jwt
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:204 积分:2037 威望:0 精华:0 注册:2015/3/6 17:12:00
贴出代码,实在是找不到优化方式了,求助!  发帖心情 Post By:2016/5/31 17:20:00 [显示全部帖子]

有多个表,每个表内数据从几百至4000+条数据不等,我设计了一个类似汇总统计的功能,但凡是1对1的数据,我都用find 语句搞,但凡1对多的,我只能用GetComboListString,几千条数据啊,大家懂得,效率超级慢,每次统计10分钟以上,统计完后系统就闹脾气罢工了--功能区就变灰了不能操作(我的是正版,找过工程师了,不是没激活的原因)。
现在贴出代码,两部分,1是按钮的单机代码,2是表的datacolchanged代码,求教!!
按钮单击代码如下:
forms("汇总提示").open()
If _userdanwei ="01集团总部" Then '加载提取总人事库数据表
    DataTables("提取总人事库数据").LoadFilter ="[身份证号码] <> ''"
    DataTables("提取总人事库数据").Load()
    Tables("提取总人事库数据").Sort = "单位"
Else
    DataTables("提取总人事库数据").LoadFilter ="[单位] = '" & _userdanwei & "' And [身份证号码] <> ''"
    DataTables("提取总人事库数据").Load()
End If

MainTable = Tables("汇总明细表") '将身份证号码填充到汇总明细表
Dim f As New Filler '自动填充
DataTables("汇总明细表").DataRows.Clear() '清除原有数据
f.SourceTable = DataTables("提取总人事库数据")
f.SourceCols = "身份证号码"
f.DataTable = DataTables("汇总明细表")
f.DataCols = "身份证号"
f.Fill()

forms("汇总提示").close()



datacolchanged代码如下:
Select Case e.DataCol.name
    Case "身份证号"
        Dim dr As DataRow = DataTables("提取总人事库数据").find("[身份证号码] = '" & e.NewValue &  "'")
        Dim ds As DataRow = DataTables("职称证登记表").find("[身份证号码] = '" & e.NewValue &  "'")
        Dim yj As DataRow = DataTables("一级建造师").find("[身份证号码] = '" & e.NewValue &  "'")
        Dim ej As DataRow = DataTables("二级建造师").find("[身份证号码] = '" & e.NewValue &  "'")
        If dr IsNot Nothing Then
            e.DataRow("单位") = dr("单位")
            e.DataRow("姓名")= dr("姓名")
            e.DataRow("性别") = dr("性别")
            e.DataRow("第一学历_毕业专业") = dr("第一学历所学专业")
            e.DataRow("第一学历_毕业时间") = dr("第一学历毕业时间")
            e.DataRow("第一学历_毕业院校") = dr("第一学历毕业院校")
            e.DataRow("第一学历_学历") = dr("第一学历")
            e.DataRow("最高学历_毕业专业") = dr("最高学历所学专业")
            e.DataRow("最高学历_毕业时间") = dr("最高学历毕业时间")
            e.DataRow("最高学历_毕业院校") = dr("最高学历毕业院校")
            e.DataRow("最高学历_学历") = dr("最高学历")
        End If
        If ds IsNot Nothing Then
            e.DataRow("职称_级别") = ds("职称级别")
            e.DataRow("职称_公布时间") = ds("公布时间")
            e.DataRow("职称_专业") = ds("职称专业")
            e.DataRow("职称_编号") = ds("职称编号")
        End If
        If yj IsNot Nothing Then
            e.DataRow("一级建造师_注册单位") = yj("注册单位")
            e.DataRow("一级建造师_注册编号") = yj("注册证_注册编号")
        End If
        If ej IsNot Nothing Then
            e.DataRow("二级建造师_注册单位") = ej("注册单位")
            e.DataRow("二级建造师_注册编号") = ej("注册证_注册编号")
        End If
       e.DataRow("一级建造师_专业") = DataTables("一级建造师").GetComboListString("专业","[身份证号码] = '" & e.NewValue & "'")

        e.DataRow("一级建造师_有效期") = DataTables("一级建造师").GetComboListString("注册证_有效期","[身份证号码] = '" & e.NewValue & "'").Replace(" 0:00:00", "")

        e.DataRow("一级建造师_注册进度") = DataTables("一级建造师").GetComboListString("注册进度","[身份证号码] = '" & e.NewValue & "'")

        e.DataRow("二级建造师_专业") = DataTables("二级建造师").GetComboListString("专业","[身份证号码] = '" & e.NewValue & "'")

        e.DataRow("二级建造师_有效期") = DataTables("二级建造师").GetComboListString("注册证_有效期至","[身份证号码] = '" & e.NewValue & "'").Replace(" 0:00:00", "")

        e.DataRow("二级建造师_注册进度") = DataTables("二级建造师").GetComboListString("注册进度","[身份证号码] = '" & e.NewValue & "'")

        e.DataRow("岗位证书_岗位类别") = DataTables("岗位证书").GetComboListString("岗位类别","[身份证号码] = '" & e.NewValue & "'")

        e.DataRow("岗位证书_证书编号") = DataTables("岗位证书").GetComboListString("证书编号","[身份证号码] = '" & e.NewValue & "'")

        e.DataRow("岗位证书_有效期") = DataTables("岗位证书").GetComboListString("有效期至","[身份证号码] = '" & e.NewValue & "'").Replace(" 0:00:00", "")

        e.DataRow("技术工人_工种") = DataTables("技工证登记表").GetComboListString("工种","[身份证号码] = '" & e.NewValue & "'")

        e.DataRow("技术工人_等级") = DataTables("技工证登记表").GetComboListString("等级","[身份证号码] = '" & e.NewValue & "'")

End Select
Tables("汇总明细表").Sort = "单位"


 回到顶部
帅哥哟,离线,有人找我吗?
jwt
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:204 积分:2037 威望:0 精华:0 注册:2015/3/6 17:12:00
  发帖心情 Post By:2016/5/31 17:31:00 [显示全部帖子]

嗯嗯,很多,要提取3000+的数据,.ResumeRedraw只能在with语句内,我这里面没有with语句...............
[此贴子已经被作者于2016/5/31 17:34:14编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
jwt
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:204 积分:2037 威望:0 精华:0 注册:2015/3/6 17:12:00
  发帖心情 Post By:2016/5/31 17:38:00 [显示全部帖子]

我用 人少的账户使用这个功能,仅从 总人事库中 提取300条数据,是没问题,一切正常,但如果使用人多的账户,提取3000,就不行了,直接灰了。

 回到顶部
帅哥哟,离线,有人找我吗?
jwt
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:204 积分:2037 威望:0 精华:0 注册:2015/3/6 17:12:00
  发帖心情 Post By:2016/5/31 17:45:00 [显示全部帖子]

嗯嗯,我先去掉排序,加载300条数据时不用1分钟,我是个初学者,很多问题比较幼稚,望海涵
图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
jwt
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:204 积分:2037 威望:0 精华:0 注册:2015/3/6 17:12:00
  发帖心情 Post By:2016/5/31 17:49:00 [显示全部帖子]

感谢袍哥!!!!!!!
感谢袍哥!!!!!!!
感谢袍哥!!!!!!!
重要的事情说三遍!,找袍哥,比直接在QQ上找工程师都强!现在此统计功能已由原来的10分钟+变成25秒!!!速度提升了24倍!!!
[此贴子已经被作者于2016/5/31 18:09:58编辑过]

 回到顶部