Foxtable(狐表)用户栏目专家坐堂 → 求助:此表点击打开特别慢,请帮忙分析下原因


  共有2168人关注过本帖平板打印复制链接

主题:求助:此表点击打开特别慢,请帮忙分析下原因

美女呀,离线,留言给我吧!
18310172639
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:165 积分:1236 威望:0 精华:0 注册:2019/9/9 20:58:00
求助:此表点击打开特别慢,请帮忙分析下原因  发帖心情 Post By:2021/3/21 17:04:00 [只看该作者]

老师:以下是工单执行反馈表的所有事件代码,切换到此表时,打开特别慢,大概30至60秒的样子,请老师帮我分析下,以下代码如何简化或放在别的位置?

工单执行反馈_ValidateEdit

 

If e.Col.DroppedDown Then '如果下拉窗口已经打开

    e.Col.CloseDropDown() '则关闭下拉窗口

End If

 

工单执行反馈_ChangeEdit

 

If e.Col.Name = "需求号" Then '如果编辑的是客户ID列

    If e.Col.DroppedDown Then '如果下拉窗口已经打开

        Dim tbl As Table = Tables("查找需求任务_任务执行进度")

        If e.Text = "" Then '如果内容为空

            tbl.Filter = "" '显示所有客户

        Else '否则根据输入内容进行模糊筛选

            Dim txt As String = "'%" & e.Text & "%'"

            tbl.Filter = "需求号 Like " & txt & " Or 站点名称 Like " & txt & " Or 站号 Like " & txt

        End If

    End If

End If

 

工单执行反馈_KeyPressEdit

 

If e.Col.Name = "需求号" Then '如果编辑的是客户ID列

    If e.Col.DroppedDown = False '且下拉窗口没有打开

        e.Col.OpenDropDown() '打开下拉窗口

    End If

End If

 

工单执行反馈_KeyDownEdit

 

If e.Col.Name = "需求号" Then '如果编辑的是客户 ID列

    If e.Col.DroppedDown Then '如果下拉窗口已经打开

        Dim tbl As Table = Tables("查找需求任务_任务执行进度")

        If e.KeyCode = Keys.Up Then '如果按下的是上箭头按键

            tbl.Position = tbl.Position - 1 '向上移动一行

            e.Cancel = True

        ElseIf e.KeyCode = Keys.Down Then '如果按下的是下箭头按键

            tbl.Position = tbl.Position + 1 '向下移动一行

            e.Cancel = True

        End If

    End If

End If

 

工单执行反馈_DataColChanged

 

'跨表引用

If e.DataCol.Name = "需求号" Then

    Dim nms() As String = {"站点名称","项目类型"}

    If e.NewValue Is Nothing Then

        For Each nm As String In nms

            e.DataRow(nm) = Nothing

        Next

    Else

        Dim dr As DataRow

        dr = DataTables("任务执行进度").Find("[需求号] = '" & e.NewValue & "'")

        If dr IsNot Nothing

            For Each nm As String In nms

                e.DataRow(nm) = dr(nm)

            Next

        End If

    End If

End If

 

'自动编号

Select e.DataCol.Name

    Case  "工单日期","项目类型"

        If e.DataRow.IsNull("工单日期") OrElse e.DataRow.IsNull("项目类型") Then

            e.DataRow("工单编号") = Nothing

        Else

            Dim  d As Date = e.DataRow("工单日期")

            Dim y As Integer = d.Year

            Dim m As Integer = d.Month

            Dim  Days As  Integer = Date.DaysInMonth(y,m)

            Dim fd As Date = New Date(y,m,1)  '获得该月的第一天

            Dim ld As Date = New Date(y,m,Days)  '获得该月的最后一天

            Dim bh As String = e.DataRow("项目类型") & "-" & Format(d,"yyyyMM") & "-"  '生成编号的前缀

            If e.DataRow("工单编号").StartsWith(bh) = False  '如果单据编号前缀不符

                Dim  max As String

                Dim idx As Integer

                Dim flt As String

                flt =  "项目类型 = '"& e.DataRow("项目类型") &  "'  And 工单日期 >= #" & fd &  "# And   工单日期 <= #" & ld & "# And [_Identify] <> " & e.DataRow("_Identify")

                max =  e.DataTable.Compute("Max(工单编号)",flt)  '取得该月的相同工程代码的最大单据编号

                If max > "" Then  '如果存在最大单据编号

                    idx = CInt(max.SubString(12,3)) + 1  '获得最大单据编号的后3位顺序号,并加1

                Else

                    idx = 1  '否则顺序号等于1

                End If

                e.DataRow("工单编号") = bh & Format(idx,"000")

            End If

        End  If

End Select

 

'进度根据条件判断

Select e.DataCol.Name

    Case  "执行日期","执行信息","照片文件","需求号"

        If e.DataRow.Isnull ("需求号") = False

            If e.DataRow.IsNull("执行日期") OrElse e.DataRow.IsNull("执行信息") OrElse e.DataRow.IsNull("照片文件")  Then

                e.DataRow("工单状态") = "未完成"

            Else

                e.DataRow("工单状态") = "已完成,待审核"

            End If

        End If

End Select

 

 

If e.DataRow("审核") = "审核通过" Then

    e.DataRow("工单状态")="已完成"

Else If e.DataRow("审核")="审核未通过" Then

    e.DataRow("工单状态")="请重新反馈"

End If

 

'自动写入当前日期

Select Case e.DataCol.name

    Case "审核人"

        If e.DataRow.IsNull("审核人") Then

            e.DataRow("审核日期") = Nothing

        Else

            e.DataRow("审核日期") = Date.Today

        End  If

    End  Select

  

'根据条件跨表判断进度

    Select Case e.DataCol.Name

        Case "需求号","站点名称","工单类型","工单状态","审核"

            If e.DataRow.IsNull("需求号")=False AndAlso e.DataRow.IsNull("站点名称")=False  AndAlso e.DataRow.IsNull("工单类型")=False

                Dim s As String = Nothing

                If e.DataRow("工单状态")="已完成" AndAlso e.DataRow("审核")="审核通过"  Then

                    s = "已完成"

                Else

                    s = "未完成"

                End If

                DataTables("任务执行进度").ReplaceFor(e.DataRow("工单类型"), s ,"需求号='" & e.DataRow("需求号") & "' and 站点名称='" & e.DataRow("站点名称") & "'")

            End If

    End Select        '

   


 回到顶部