Foxtable(狐表)用户栏目专家坐堂 → 项目运行速度求教?


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

主题:项目运行速度求教?

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


加好友 发短信
等级:童狐 帖子:219 积分:1687 威望:0 精华:0 注册:2016/4/14 9:45:00
项目运行速度求教?  发帖心情 Post By:2018/12/22 16:29:00 [显示全部帖子]

项目还未发布,有1个60多列的表,现在1、启动大概要40秒档案库右(未加载数据);
                                                  2、加载60多列、10万来行的表数据大概要40秒左右;
                                                  3、导入2万来行的数据大概要1分半-2分钟左右;
                                                  4、设置了1个“模糊查询”按钮,查询时间很长(没耐心算了)。
请教版主,这是我的表代码有什么问题还是数据量大了就是这个速度?(运行基本正常,就是速度慢,有时会死机)

“模糊查询”按钮代码如下:
Dim tab As WinForm.TabControl = e.Form.controls("TabControl1")
If tab.SelectedPage.Text = "鉴定信息汇总" Then
    Dim str As String = e.form.controls("Textbox1").Text
    Dim filter As String = "1=2"
    For Each c As Col In CurrentTable.Cols
        filter &= " or convert(" & c.name & ",'System.String') like '%" & str & "%'"
    Next
    CurrentTable.Filter = filter
ElseIf tab.SelectedPage.Text = "报名登记汇总" Then
    Dim str As String = e.form.controls("Textbox1").Text
    Dim filter As String = "1=2"
    For Each c As Col In CurrentTable.Cols
        filter &= " or convert(" & c.name & ",'System.String') like '%" & str & "%'"
    Next
    CurrentTable.Filter = filter
ElseIf tab.SelectedPage.Text = "中高级工资审" Then
    Dim str As String = e.form.controls("Textbox1").Text
    Dim filter As String = "1=2"
    For Each c As Col In CurrentTable.Cols
        filter &= " or convert(" & c.name & ",'System.String') like '%" & str & "%'"
    Next
    CurrentTable.Filter = filter
ElseIf tab.SelectedPage.Text = "中高级工考核" Then
    Dim str As String = e.form.controls("Textbox1").Text
    Dim filter As String = "1=2"
    For Each c As Col In CurrentTable.Cols
        filter &= " or convert(" & c.name & ",'System.String') like '%" & str & "%'"
    Next
    CurrentTable.Filter = filter
ElseIf tab.SelectedPage.Text = "技师高技资审" Then
    Dim str As String = e.form.controls("Textbox1").Text
    Dim filter As String = "1=2"
    For Each c As Col In CurrentTable.Cols
        filter &= " or convert(" & c.name & ",'System.String') like '%" & str & "%'"
    Next
    CurrentTable.Filter = filter
ElseIf tab.SelectedPage.Text = "技师高技理论" Then
    Dim str As String = e.form.controls("Textbox1").Text
    Dim filter As String = "1=2"
    For Each c As Col In CurrentTable.Cols
        filter &= " or convert(" & c.name & ",'System.String') like '%" & str & "%'"
    Next
    CurrentTable.Filter = filter
ElseIf tab.SelectedPage.Text = "技师高技实潜" Then
    Dim str As String = e.form.controls("Textbox1").Text
    Dim filter As String = "1=2"
    For Each c As Col In CurrentTable.Cols
        filter &= " or convert(" & c.name & ",'System.String') like '%" & str & "%'"
    Next
    CurrentTable.Filter = filter
ElseIf tab.SelectedPage.Text = "上会评审汇总" Then
    Dim str As String = e.form.controls("Textbox1").Text
    Dim filter As String = "1=2"
    For Each c As Col In CurrentTable.Cols
        filter &= " or convert(" & c.name & ",'System.String') like '%" & str & "%'"
    Next
    CurrentTable.Filter = filter
ElseIf tab.SelectedPage.Text = "证书编号汇总" Then
    Dim str As String = e.form.controls("Textbox1").Text
    Dim filter As String = "1=2"
    For Each c As Col In CurrentTable.Cols
        filter &= " or convert(" & c.name & ",'System.String') like '%" & str & "%'"
    Next
    CurrentTable.Filter = filter
    
End If

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


加好友 发短信
等级:童狐 帖子:219 积分:1687 威望:0 精华:0 注册:2016/4/14 9:45:00
  发帖心情 Post By:2018/12/23 16:15:00 [显示全部帖子]

图片点击可在新窗口打开查看图片点击可在新窗口打开查看图片点击可在新窗口打开查看1、这个是自己为了工作,方便数据管理及查询等做的,只是单机用的,水平不够,这个都还没搞明白,局域网的就更不会了!另个SQLTABLE是什么?
             2、这个相应实例怎么做?里面涉及大量不能公开的数据信息!就算能管个头太大,传不上啊!

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


加好友 发短信
等级:童狐 帖子:219 积分:1687 威望:0 精华:0 注册:2016/4/14 9:45:00
  发帖心情 Post By:2018/12/23 16:42:00 [显示全部帖子]

谢版主!我导入、导出都是用的EXCEL,我先消化消化,有问题再请教。

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


加好友 发短信
等级:童狐 帖子:219 积分:1687 威望:0 精华:0 注册:2016/4/14 9:45:00
  发帖心情 Post By:2018/12/23 20:46:00 [显示全部帖子]

版主请指教:我的项目中有---1、主窗口一个(类似门脸,不起别的作用),这个启动大概要15秒左右;

                                      2、管理窗口一个,其中控件有:分区面板2个,页面集合1个(分有10来个页面),目录树1个,按钮若干,其它若干;

                                      3、内部表几个,其中表1变动最频繁,数据量也最大,页面集合中有几个页面中的表控件是它的副表,另有表2、表3等在其它页面,都基本为固定的,没有数据变化,只是为表1中的某些列作判断时起比对、引用作用;

                                      4、经试验:清空表1代码、导入22000来行EXCEL数据(60来列)用了150秒左右,跟没清空代码前大致相当。

这个是不是我的项目结构上有问题?


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


加好友 发短信
等级:童狐 帖子:219 积分:1687 威望:0 精华:0 注册:2016/4/14 9:45:00
  发帖心情 Post By:2018/12/23 21:54:00 [显示全部帖子]

这个实例太不好做了,精减下,版主给看看

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


加好友 发短信
等级:童狐 帖子:219 积分:1687 威望:0 精华:0 注册:2016/4/14 9:45:00
  发帖心情 Post By:2018/12/23 21:56:00 [显示全部帖子]

附件呢?1个1.6M的压缩包也传不上?


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


加好友 发短信
等级:童狐 帖子:219 积分:1687 威望:0 精华:0 注册:2016/4/14 9:45:00
  发帖心情 Post By:2018/12/23 21:59:00 [显示全部帖子]

Dim tb As WinForm.TabControl = e.Form.Controls("TabControl1")
Dim pg As WinForm.TabPage = tb.SelectedPage
Dim 表 As String = ""
If tb.SelectedPage.Text = "鉴定信息汇总" Then
    表 = "鉴定管理表"
ElseIf tb.SelectedPage.Text = "报名登记汇总" Then
    表 = "鉴定管理表"
ElseIf tb.SelectedPage.Text = "中高级工资审" Then
    表 = "鉴定管理表"
ElseIf tb.SelectedPage.Text = "中高级工考核" Then
    表 = "鉴定管理表"
ElseIf tb.SelectedPage.Text = "技师高技资审" Then
    表 = "鉴定管理表"
ElseIf tb.SelectedPage.Text = "技师高技理论" Then
    表 = "鉴定管理表"
ElseIf tb.SelectedPage.Text = "技师高技实潜" Then
    表 = "鉴定管理表"
ElseIf tb.SelectedPage.Text = "上会评审汇总" Then
    表 = "鉴定管理表"
ElseIf tb.SelectedPage.Text = "证书编号汇总" Then
    表 = "证书编号表"
End If

Dim Result As DialogResult
Result = MessageBox.Show("确定要导入吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
If Result = DialogResult.Yes Then
    Dim dlg As New OpenFileDialog
    dlg.Filter = "Excel文件|*.xls"
    dlg.MultiSelect = True '允许选择多个文件
    If dlg.ShowDialog =DialogResult.OK Then
        Dim Book As New XLS.Book(dlg.FileName)
        Dim Sheet As XLS.Sheet = Book.Sheets(0)
        Tables(表).ResumeRedraw()
        Tables(表).StopRedraw()
        systemready = False
        Dim nms As New Dictionary(Of String, Integer)
        Dim dic As new Dictionary(Of DataRow, Integer)
        Dim ls As new List(Of Integer)
        For c As Integer = 0 To sheet.Cols.Count - 1
            Dim str As String = sheet(1,c).Text.Replace(" ", "")
            If  DataTables(表).DataCols.Contains(str) Then
                nms.Add(str, c)
            End If
        Next
        For n As Integer = 2 To Sheet.Rows.Count -1
            Dim jdpc As String = sheet(n,6).Text
            Dim sfzhm As String = sheet(n,9).Text
            Dim dr As DataRow = DataTables(表).Find("鉴定批次 = '" & jdpc & "' And 身份证号码 = '" & sfzhm & "'")
            If dr Is Nothing Then
                ls.add(n)
            Else
                dic.Add(dr, n)
            End If
        Next
        For Each key As DataRow In dic.Keys
            For Each m As String In nms.keys
                If DataTables(表).DataCols(m).IsBoolean Then
                    If Sheet(dic(key),nms(m)).Text = "" OrElse Sheet(dic(key),nms(m)).Text = "False" OrElse Sheet(dic(key),nms(m)).Value = 0 Then
                        key(m) = False
                    Else
                        key(m) = True
                    End If
                Else If DataTables(表).DataCols(m).Expression > "" Then
                    '表达式列
                Else If DataTables(表).DataCols(m).IsNumeric Then
                    key(m) = val(Sheet(dic(key),nms(m)).Value)
                Else
                    key(m) = Sheet(dic(key),nms(m)).Value
                End If
            Next
        Next
        For Each l As Integer In ls
            Dim ndr As DataRow = DataTables(表).AddNew
            For Each m As String In nms.keys
                If DataTables(表).DataCols(m).IsBoolean Then
                    If Sheet(l,nms(m)).Text = "" OrElse Sheet(l,nms(m)).Text = "False" OrElse Sheet(l,nms(m)).Value = 0 Then
                        ndr (m) = False
                    Else
                        ndr (m) = True
                    End If
                Else If DataTables(表).DataCols(m).Expression > "" Then
                    '表达式列
                Else If DataTables(表).DataCols(m).IsNumeric Then
                    ndr (m) = val(Sheet(l,nms(m)).Value)
                Else
                    ndr (m) = Sheet(l,nms(m)).Value
                End If
            Next
        Next
        Tables(表).ResumeRedraw()
        systemready = True
    End If
End If
这是导入代码,还能再优化?

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


加好友 发短信
等级:童狐 帖子:219 积分:1687 威望:0 精华:0 注册:2016/4/14 9:45:00
  发帖心情 Post By:2018/12/23 22:00:00 [显示全部帖子]


[此贴子已经被作者于2018/12/25 22:06:56编辑过]

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


加好友 发短信
等级:童狐 帖子:219 积分:1687 威望:0 精华:0 注册:2016/4/14 9:45:00
  发帖心情 Post By:2018/12/23 23:53:00 [显示全部帖子]

图片点击可在新窗口打开查看图片点击可在新窗口打开查看图片点击可在新窗口打开查看文件版本过高!我打不开!

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


加好友 发短信
等级:童狐 帖子:219 积分:1687 威望:0 精华:0 注册:2016/4/14 9:45:00
  发帖心情 Post By:2018/12/24 11:33:00 [显示全部帖子]

图片点击可在新窗口打开查看图片点击可在新窗口打开查看图片点击可在新窗口打开查看加密狗过期!!!!!!

 回到顶部
总数 12 1 2 下一页