Foxtable(狐表)用户栏目专家坐堂 → 请帮代码减肥,新手边问边学


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

主题:请帮代码减肥,新手边问边学

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


加好友 发短信
等级:三尾狐 帖子:759 积分:7038 威望:0 精华:1 注册:2008/9/2 20:04:00
请帮代码减肥,新手边问边学  发帖心情 Post By:2009/5/15 20:50:00 [只看该作者]

在“支出”表的DataColChanged事件中

Dim dr As DataRow = e.DataRow

Select Case e.DataCol.Name
    case "开支日期"
        if dr.IsNull("开支日期") Then
            dr("年度")=nothing
            dr("月份")=nothing
        else
            dr("年度")=dr("开支日期").year
            dr("月份")=dr("开支日期").Month
        End If
    Case "待摊","实报金额"
        If dr("待摊") = false Then
            dr("月1")=nothing
            dr("月2")=nothing
            dr("月3")=nothing
            dr("月4")=nothing
            dr("月5")=nothing
            dr("月6")=nothing
            dr("月7")=nothing
            dr("月8")=nothing
            dr("月9")=nothing
            dr("月10")=nothing
            dr("月11")=nothing
            dr("月12")=nothing
        else
           
            Dim d1 As Integer = DataTables("收入").Compute("Sum(实收费额)","[年度] = "& dr("年度") & "And [月份] =1"& "And [业务分块]='公有部分'" )
            Dim d2 As Integer = DataTables("收入").Compute("Sum(实收费额)","[年度] = "& dr("年度") & "And [月份] =2"& "And [业务分块]='公有部分'" )
            Dim d3 As Integer = DataTables("收入").Compute("Sum(实收费额)","[年度] = "& dr("年度") & "And [月份] =3"& "And [业务分块]='公有部分'" )
            Dim d4 As Integer = DataTables("收入").Compute("Sum(实收费额)","[年度] = "& dr("年度") & "And [月份] =4"& "And [业务分块]='公有部分'" )
            Dim d5 As Integer = DataTables("收入").Compute("Sum(实收费额)","[年度] = "& dr("年度") & "And [月份] =5"& "And [业务分块]='公有部分'" )
            Dim d6 As Integer = DataTables("收入").Compute("Sum(实收费额)","[年度] = "& dr("年度") & "And [月份] =6"& "And [业务分块]='公有部分'" )
            Dim d7 As Integer = DataTables("收入").Compute("Sum(实收费额)","[年度] = "& dr("年度") & "And [月份] =7"& "And [业务分块]='公有部分'" )
            Dim d8 As Integer = DataTables("收入").Compute("Sum(实收费额)","[年度] = "& dr("年度") & "And [月份] =8"& "And [业务分块]='公有部分'" )
            Dim d9 As Integer = DataTables("收入").Compute("Sum(实收费额)","[年度] = "& dr("年度") & "And [月份] =9"& "And [业务分块]='公有部分'" )
            Dim d10 As Integer = DataTables("收入").Compute("Sum(实收费额)","[年度] = "& dr("年度") & "And [月份] =10"& "And [业务分块]='公有部分'" )
            Dim d11 As Integer = DataTables("收入").Compute("Sum(实收费额)","[年度] = "& dr("年度") & "And [月份] =11"& "And [业务分块]='公有部分'" )
           
            Dim t1 As Integer = DataTables("收入").Compute("Sum(实收费额)","[年度] = "& dr("年度") & "And [月份] <1"& "And [业务分块]='公有部分'" )
            Dim t2 As Integer = DataTables("收入").Compute("Sum(实收费额)","[年度] = "& dr("年度") & "And [月份] <2"& "And [业务分块]='公有部分'" )
            Dim t3 As Integer = DataTables("收入").Compute("Sum(实收费额)","[年度] = "& dr("年度") & "And [月份] <3"& "And [业务分块]='公有部分'" )
            Dim t4 As Integer = DataTables("收入").Compute("Sum(实收费额)","[年度] = "& dr("年度") & "And [月份] <4"& "And [业务分块]='公有部分'" )
            Dim t5 As Integer = DataTables("收入").Compute("Sum(实收费额)","[年度] = "& dr("年度") & "And [月份] <5"& "And [业务分块]='公有部分'" )
            Dim t6 As Integer = DataTables("收入").Compute("Sum(实收费额)","[年度] = "& dr("年度") & "And [月份] <6"& "And [业务分块]='公有部分'" )
            Dim t7 As Integer = DataTables("收入").Compute("Sum(实收费额)","[年度] = "& dr("年度") & "And [月份] <7"& "And [业务分块]='公有部分'" )
            Dim t8 As Integer = DataTables("收入").Compute("Sum(实收费额)","[年度] = "& dr("年度") & "And [月份] <8"& "And [业务分块]='公有部分'" )
            Dim t9 As Integer = DataTables("收入").Compute("Sum(实收费额)","[年度] = "& dr("年度") & "And [月份] <9"& "And [业务分块]='公有部分'" )
            Dim t10 As Integer = DataTables("收入").Compute("Sum(实收费额)","[年度] = "& dr("年度") & "And [月份] <10"& "And [业务分块]='公有部分'" )
            Dim t11 As Integer = DataTables("收入").Compute("Sum(实收费额)","[年度] = "& dr("年度") & "And [月份] <11"& "And [业务分块]='公有部分'" )
           
            Dim dm As Integer = 250000
            dr("月1") = dr("实报金额")*d1/(dm-t1)
            dr("月2") =  dr("实报金额")*d2/(dm-t2)
            dr("月3") =  dr("实报金额")*d3/(dm-t3)
            dr("月4") =  dr("实报金额")*d4/(dm-t4)
            dr("月5") =  dr("实报金额")*d5/(dm-t5)
            dr("月6") =  dr("实报金额")*d6/(dm-t6)
            dr("月7") =  dr("实报金额")*d7/(dm-t7)
            dr("月8") =  dr("实报金额")*d8/(dm-t8)
            dr("月9") =  dr("实报金额")*d9/(dm-t9)
            dr("月10") =  dr("实报金额")*d10/(dm-t10)
            dr("月11") =  dr("实报金额")*d11/(dm-t11)
            dr("月12")=dr("实报金额")-dr("月1")-dr("月2")-dr("月3")-dr("月4")-dr("月5")-dr("月6")-dr("月7")-dr("月8")-dr("月9")-dr("月10")-dr("月11")
           
        End if
End select

[此贴子已经被作者于2009-5-15 20:54:13编辑过]

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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2009/5/15 21:26:00 [只看该作者]

 [月份] <1  这个是几月 ~?

And [月份] = 1"& " And .....      1"& " 是什么意思?
[此贴子已经被作者于2009-5-15 21:35:23编辑过]

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


加好友 发短信
等级:童狐 帖子:252 积分:1355 威望:0 精华:0 注册:2009/4/5 13:06:00
  发帖心情 Post By:2009/5/15 22:12:00 [只看该作者]

这段这样不知行不行?


Else
    Dim dt As DataTable = DataTables("收入")
    Dim dr As DataRow = e.DataRow
    Dim str As String = "[业务分块]='公有部分' And [年度] = '" & dr("年度") & "'And [月份]"
    dr("月1") = dr("实报金额")*dt.Compute("Sum(实收费额)",str & "= 1")/(250000 - dt.Compute("Sum(实收费额)",str & "< 1"))
    dr("月2") = dr("实报金额")*dt.Compute("Sum(实收费额)",str & "= 2")/(250000 - dt.Compute("Sum(实收费额)",str & "< 2"))
    dr("月3") = dr("实报金额")*dt.Compute("Sum(实收费额)",str & "= 3")/(250000 - dt.Compute("Sum(实收费额)",str & "< 3"))
    dr("月4") = dr("实报金额")*dt.Compute("Sum(实收费额)",str & "= 4")/(250000 - dt.Compute("Sum(实收费额)",str & "< 4"))
    dr("月5") = dr("实报金额")*dt.Compute("Sum(实收费额)",str & "= 5")/(250000 - dt.Compute("Sum(实收费额)",str & "< 5"))
    dr("月6") = dr("实报金额")*dt.Compute("Sum(实收费额)",str & "= 6")/(250000 - dt.Compute("Sum(实收费额)",str & "< 6"))
    dr("月7") = dr("实报金额")*dt.Compute("Sum(实收费额)",str & "= 7")/(250000 - dt.Compute("Sum(实收费额)",str & "< 7"))
    dr("月8") = dr("实报金额")*dt.Compute("Sum(实收费额)",str & "= 8")/(250000 - dt.Compute("Sum(实收费额)",str & "< 8"))
    dr("月9") = dr("实报金额")*dt.Compute("Sum(实收费额)",str & "= 9")/(250000 - dt.Compute("Sum(实收费额)",str & "< 9"))
    dr("月10") = dr("实报金额")*dt.Compute("Sum(实收费额)",str & "= 10")/(250000 - dt.Compute("Sum(实收费额)",str & "< 10"))
    dr("月11") = dr("实报金额")*dt.Compute("Sum(实收费额)",str & "= 11")/(250000 - dt.Compute("Sum(实收费额)",str & "< 11"))
    dr("月12")=dr("实报金额")-dr("月1")-dr("月2")-dr("月3")-dr("月4")-dr("月5")-dr("月6")-dr("月7")-dr("月8")-dr("月9")-dr("月10")-dr("月11")
End If

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


加好友 发短信
等级:童狐 帖子:252 积分:1355 威望:0 精华:0 注册:2009/4/5 13:06:00
  发帖心情 Post By:2009/5/15 22:19:00 [只看该作者]

For...Next语句可以真正减肥。

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


加好友 发短信
等级:八尾狐 帖子:1812 积分:12993 威望:0 精华:14 注册:2008/10/11 18:07:00
[求助]  发帖心情 Post By:2009/5/15 23:19:00 [只看该作者]

Dim dr As DataRow = e.DataRow
Dim m,md,mx,dj as Double
Select Case e.DataCol.Name
    case "开支日期"
        if dr.IsNull("开支日期") Then
            dr("年度") = nothing
            dr("月份") = nothing
        else
            dr("年度") = dr("开支日期").year
            dr("月份") = dr("开支日期").Month
        End If
    Case "待摊","实报金额"
        If dr("待摊") = false Then
            for m = 1 to 12
                dr("月" & m) = nothing
             Next
        else           
            Dim td,tx as String
            dj = dr("实报金额")
            for m = 1 to 11
                td = "[年度] = "& dr("年度") & And [业务分块]='公有部分'And [月份] = " & m
                tx = "[年度] = "& dr("年度") & And [业务分块]='公有部分'And [月份] < " & m
                md = DataTables("收入").Compute("Sum(实收费额)",td)
                mx = DataTables("收入").Compute("Sum(实收费额)",tx)
                dr("月" & m) = dr("实报金额")*md/(250000-mx)
                dj = dj - dr("月" & m)
            Next
            dr("月12") = dj             
        End if
End select

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


加好友 发短信
等级:三尾狐 帖子:759 积分:7038 威望:0 精华:1 注册:2008/9/2 20:04:00
  发帖心情 Post By:2009/5/16 9:39:00 [只看该作者]

 谢谢

 回到顶部