Foxtable(狐表)用户栏目专家坐堂 → [讨论]求助高手帮忙优化代码多谢多谢


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

主题:[讨论]求助高手帮忙优化代码多谢多谢

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


加好友 发短信
等级:童狐 帖子:251 积分:2392 威望:0 精华:0 注册:2011/11/12 10:39:00
[讨论]求助高手帮忙优化代码多谢多谢  发帖心情 Post By:2013/7/30 12:53:00 [只看该作者]

第一段代码:
Select e.DataCol.Name
    Case
 "生产通知单"
        
If e.DataRow.IsNull("生产通知单"Then
            e.DataRow("车次") = Nothing
        Else
            Dim
 lb As String = e.DataRow("生产通知单")
            If
 e.DataRow("车次").StartsWith(lb) = False '如果单据编号前缀不符
                
Dim max As String
                
Dim idx As Integer

                max = e.DataTable.Compute("Max(车次)","生产通知单 = '" & lb "' And [_Identify] <> " &e.DataRow("_Identify")'取得该类别的最大编号
                
If max > "" Then '如果存在最大编号
                    idx = CInt(max.Substring(2,3)) + 1 '获得最大编号的后三位顺序号,并加1
                
Else
                    idx = 1 '否则顺序号等于1
                
End If
                e.DataRow("车次") = lb & Format(idx,"000")
            End
 If
        End
 If
End
 
Select

第二段代码:

Select Case e.DataCol.Name

    Case "生产单编号","本车方量","退货数量"

        Dim dr As DataRow

        Dim mr As DataRow = e.DataRow

        Dim drs As List(of DataRow)

        dr = e.DataTable.Find("[_SortKey] < " & mr("_SortKey") & " And [生产单编号] = '" & mr("生产单编号") & "'", "[_SortKey] Desc")

        If dr Is Nothing Then

            mr("累计方量") = mr("本车方量") - mr("退货数量")

            dr = mr

        End If

        drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey") & " And [生产单编号] = '" & dr("生产单编号") & "'", "[_SortKey]")

        For i As Integer = 1 To drs.Count - 1

            drs(i)("累计方量") = drs(i-1)("累计方量") + drs(i)("本车方量") - drs(i)("退货数量")

        Next

        If e.DataCol.Name = "生产单编号" AndAlso e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue Then

            dr = e.DataTable.Find("[_SortKey] < " & mr("_SortKey") & " And [生产单编号] = '" & e.OldValue & "'", "[_SortKey] Desc")

            If dr Is Nothing Then

                dr = e.DataTable.Find("[生产单编号] = '" & e.OldValue & "'", "[_SortKey]")

                If dr IsNot Nothing Then

                    dr("累计方量") = dr("本车方量") - dr("退货数量")

                End If

            End If

            If dr IsNot Nothing Then

                drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey") & " And [生产单编号] = '" & dr("生产单编号") & "'", "[_SortKey]")

                For i As Integer = 1 To drs.Count - 1

                    drs(i)("累计方量") = drs(i-1)("累计方量") + drs(i)("本车方量") - drs(i)("退货数量")

                Next

            End If

        End If

End Select



这两段代码在DataColChanged里可以单独运行,加到一起就出现问题了

请老师帮我合并优化一下。谢谢!!

[此贴子已经被作者于2013-7-30 13:08:48编辑过]

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


加好友 发短信
等级:童狐 帖子:266 积分:1700 威望:0 精华:0 注册:2013/5/5 17:46:00
  发帖心情 Post By:2013/7/30 13:04:00 [只看该作者]

哇噻,搞什么字这么小

 


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


加好友 发短信
等级:童狐 帖子:251 积分:2392 威望:0 精华:0 注册:2011/11/12 10:39:00
  发帖心情 Post By:2013/7/30 13:10:00 [只看该作者]

不小啊,看得很清楚啊

 回到顶部