Foxtable(狐表)用户栏目专家坐堂 → [求助]代码求助!!


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

主题:[求助]代码求助!!

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


加好友 发短信
等级:三尾狐 帖子:633 积分:4016 威望:0 精华:0 注册:2015/1/27 9:34:00
[求助]代码求助!!  发帖心情 Post By:2015/9/17 9:09:00 [只看该作者]

If e.DataRow("收款总额") IsNot Nothing Then
    Dim Sum1 As Double
    Dim Sum2 As Double
    Dim Sum3 As Double
    Sum1 = DataTables("收款明细表").Compute("Sum(收款总额)", "客户名称='" & e.DataRow("客户名称") & "'")
    Sum2 = DataTables("合同一览表").Compute("Sum(合同总价款)", "客户名称='" & e.DataRow("客户名称") & "'")
    Sum3=DataTables("历史结余明细").Compute("Sum(金额)", " 客户名称= '" & e.DataRow("客户名称") & "'and 年份='" & Date.now.year -1 & "'")
    Dim Sum4 =Sum1-Sum3
    If Sum4< Sum2 Then
        Dim vrs As List(Of DataRow)
        vrs = DataTables("合同一览表").Select("[客户名称]='" & e.DataRow("客户名称") & "'","合同日期 DESC")
        For n As Integer = vrs.Count - 1 To 0
            Dim Sum5 As Double
            Sum5=Sum5 + vrs(n)("合同总价款")
            If Sum5 > Sum4 then

               当前记录和剩下记录的“执行完毕”=否

              elseif Sum5 = Sum4 then

               剩下记录的“执行完毕”=否

            Exit For
            End If
        Next
    ElseIf Sum4= Sum2 Then
        MessageBox.show("该客户货款已全部结清","提示")
    Else
        MessageBox.show("该客户货款已全部结清,并有结余!","提示")
    End If
End If

 

红色部分也不知道思路对不对,帮忙改正,谢谢!

[此贴子已经被作者于2015/9/17 9:10:33编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/9/17 9:13:00 [只看该作者]

For n As Integer = vrs.Count - 1 To 0 Step -1
    Dim Sum5 As Double
    Sum5=Sum5 + vrs(n)("合同总价款")
    If Sum5 > Sum4
        For i As Integer = n To 0 Step -1
            vrs(i)("执行完毕") = "否"
           
        Next
        Exit For
    ElseIf Sum5 = Sum4
        For i As Integer = n+1 To 0 Step -1
            vrs(i)("执行完毕") = "否"
           
        Next
        Exit For
    End If
Next

 


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


加好友 发短信
等级:三尾狐 帖子:633 积分:4016 威望:0 精华:0 注册:2015/1/27 9:34:00
  发帖心情 Post By:2015/9/17 9:20:00 [只看该作者]

谢谢!好及时!

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


加好友 发短信
等级:三尾狐 帖子:633 积分:4016 威望:0 精华:0 注册:2015/1/27 9:34:00
  发帖心情 Post By:2015/9/17 9:34:00 [只看该作者]

 Sum2 = DataTables("合同一览表").Compute("Sum(合同总价款)", "客户名称='" & e.DataRow("客户名称") & "'")
这句话少了一个条件:合同日期的年份=date。now。year

 

不知道该怎么写?,想写成tr(“合同日期”)。year ,dim 变量tr 为datarow 好像不行


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/9/17 9:35:00 [只看该作者]

日期的条件,参考

 

http://www.foxtable.com/help/topics/2720.htm

 


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


加好友 发短信
等级:三尾狐 帖子:633 积分:4016 威望:0 精华:0 注册:2015/1/27 9:34:00
  发帖心情 Post By:2015/9/17 10:00:00 [只看该作者]

红袍兄:还有一个问题,vrs = DataTables("合同一览表").Select("[客户名称]='" & e.DataRow("客户名称") & "'","合同日期 DESC")

那么,同一个客户同一天的合同,系统默认的是如何排序的呢?

 

因为上述代码,好像执行的不是很好,即便是收款额远大于今年合同款和去年结余,那些合同记录好像还是“否”

[此贴子已经被作者于2015/9/17 10:03:43编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/9/17 10:03:00 [只看该作者]

你可以根据合同日期、客户名称排序啊, 不行,就上传具体例子说明逻辑

 

合同日期 DESC,客户名称


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


加好友 发短信
等级:三尾狐 帖子:633 积分:4016 威望:0 精华:0 注册:2015/1/27 9:34:00
  发帖心情 Post By:2015/9/17 10:03:00 [只看该作者]


                For i As Integer = n To 0 Step -1
                    vrs(i)("执行完毕") = "否"
                    vrs()“执行完毕”=“是”---------------------指的是  已经累加过的记录

                Next

 

想再填写红色部分的代码


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/9/17 10:05:00 [只看该作者]

 

[此贴子已经被作者于2015/9/17 10:05:00编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/9/17 10:06:00 [只看该作者]

For n As Integer = vrs.Count - 1 To 0 Step -1
    Dim Sum5 As Double
    Sum5=Sum5 + vrs(n)("合同总价款")
    If Sum5 > Sum4
        For i As Integer = vrs.Count - 1 To n step -1
            vrs(i)("执行完毕") = "否"
           
        Next
        Exit For
    ElseIf Sum5 = Sum4
        For i As Integer = vrs.Count - 1 To n-1 step -1
            vrs(i)("执行完毕") = "否"
           
        Next
        Exit For
    End If
Next


 回到顶部
总数 22 1 2 3 下一页