Foxtable(狐表)用户栏目专家坐堂 → 代码问题


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

主题:代码问题

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


加好友 发短信
等级:幼狐 帖子:189 积分:1618 威望:0 精华:0 注册:2016/5/5 14:56:00
代码问题  发帖心情 Post By:2016/9/8 16:07:00 [只看该作者]

前段时间让“大红袍”老师写的代码,如下:

现在我想改成:如果sum3的值大于0时,执行

str &= i & "" & dr("项目简称") & ":(1)当日资金可用余额:" & Format(dr("资金可用余额") ,"0.00") & "万元;(2)当日销售情况:现金收款" & Format(dr("当天收入截至当天17_现金回款额") ,"0.00") & "万元;(3)当日共支出:" & Format(dr("支出合计") ,"0.00") & "万元;其中土地支出:" & Format(dr("当天支出截至当天17_土地支出") ,"0.00") & "万元."      

小于等于0时,执行:

str &= i & "" & dr("项目简称") & ":(1)当日资金可用余额:" & Format(dr("资金可用余额") ,"0.00") & "万元;(2)当日销售情况:现金收款" & Format(dr("当天收入截至当天17_现金回款额") ,"0.00") & "万元;(3)当日共支出:" & Format(dr("支出合计") ,"0.00") & "万元." 

请问代码该如何改啊?谢谢老师!   

 

大红袍老师写的代码,如下:

'''
Dim t As Table = Tables("日报表")
If t.rows.count > 0 Then
    Dim tm As String  = ProjectPath & "Attachments\test.doc" '指定模板文件
    Dim fl As String = ProjectPath & "Reports\练习.doc" '指定目标文件
    Dim wrt As New WordReport(Tables("日报表"),tm,fl) '定义一个WordReport
    Dim sum1 As Double = DataTables("日报表").Compute("Sum(资金可用余额)","日期 = #" & Date.Today & "#")
    Dim sum2 As Double = DataTables("日报表").Compute("Sum(当天收入截至当天17时_现金回款额)","日期 = #" & Date.Today & "#")
    Dim sum3 As Double = DataTables("日报表").Compute("Sum(支出合计)","日期 = #" & Date.Today & "#")
    Dim str As String = "当日资金可用余额总计: " & sum1 & "万元,截至当日17时回款总计:" & Sum2 & "万元,当日支出总计" & sum3 & "万元"
    wrt.Replace("[第一部分]", str)
   
str = ""
   
Dim i As Integer = 1
    For j As Integer = t.TopPosition To t.BottomPosition
        Dim dr As Row = t.rows(j)
         str &= i & "" & dr("项目简称") & ":(1)当日资金可用余额:" & Format(dr("资金可用余额") ,"0.00") & "万元;(2)当日销售情况:现金收款" & Format(dr("当天收入截至当天17_现金回款额") ,"0.00") & "万元;(3)当日共支出:" & Format(dr("支出合计") ,"0.00") & "万元;其中土地支出:" & Format(dr("当天支出截至当天17_土地支出") ,"0.00") & "万元."      

str &= vbcrlf
        i += 1
    Next
    wrt.Replace("[第二部分]", str)
    wrt.BuildOne(t.Current.DataRow)
    wrt.Show() '显示报表
End If


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


加好友 发短信
等级:超级版主 帖子:107135 积分:544918 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/9/8 16:22:00 [只看该作者]

For j As Integer = t.TopPosition To t.BottomPosition
        Dim dr As Row = t.rows(j)
         if  
sum3 > 0

str &= i & "" & dr("项目简称") & ":(1)当日资金可用余额:" & Format(dr("资金可用余额") ,"0.00") & "万元;(2)当日销售情况:现金收款" & Format(dr("当天收入截至当天17_现金回款额") ,"0.00") & "万元;(3)当日共支出:" & Format(dr("支出合计") ,"0.00") & "万元;其中土地支出:" & Format(dr("当天支出截至当天17_土地支出") ,"0.00") & "万元."

else

str &= i & "" & dr("项目简称") & ":(1)当日资金可用余额:" & Format(dr("资金可用余额") ,"0.00") & "万元;(2)当日销售情况:现金收款" & Format(dr("当天收入截至当天17_现金回款额") ,"0.00") & "万元;(3)当日共支出:" & Format(dr("支出合计") ,"0.00") & "万元." 

endif     

str &= vbcrlf
        i += 1
    Next


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


加好友 发短信
等级:幼狐 帖子:189 积分:1618 威望:0 精华:0 注册:2016/5/5 14:56:00
  发帖心情 Post By:2016/9/8 17:20:00 [只看该作者]

执行上面的代码后,还是执行这段长的代码。而且sum3的值是等于0的。还请老师再给看看是哪里错了!谢谢

str &= i & "" & dr("项目简称") & ":(1)当日资金可用余额:" & Format(dr("资金可用余额") ,"0.00") & "万元;(2)当日销售情况:现金收款" & Format(dr("当天收入截至当天17_现金回款额") ,"0.00") & "万元;(3)当日共支出:" & Format(dr("支出合计") ,"0.00") & "万元;其中土地支出:" & Format(dr("当天支出截至当天17_土地支出") ,"0.00") & "万元."


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


加好友 发短信
等级:超级版主 帖子:107135 积分:544918 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/9/8 17:27:00 [只看该作者]

msgbox(sum3)看看
[此贴子已经被作者于2016/9/8 17:27:29编辑过]

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


加好友 发短信
等级:幼狐 帖子:189 积分:1618 威望:0 精华:0 注册:2016/5/5 14:56:00
  发帖心情 Post By:2016/9/8 17:39:00 [只看该作者]

是改成 if msgbox(sum3) > 0 then 吗?如果是,代码也不对!
[此贴子已经被作者于2016/9/8 17:40:18编辑过]

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


加好友 发短信
等级:超级版主 帖子:107135 积分:544918 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/9/8 17:45:00 [只看该作者]

是让你弹出sum3的值看看


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


加好友 发短信
等级:幼狐 帖子:189 积分:1618 威望:0 精华:0 注册:2016/5/5 14:56:00
  发帖心情 Post By:2016/9/8 17:51:00 [只看该作者]

我觉得应该是sum3这个变量的值有问题,sum3是对整个表的支出合计列进行的求和,所以说sum3 >0执行长代码也是对的。应该再新增一个变量,对表中每行的支出合计列进行求和,这样的话思路就对了。就是我不会写代码,还麻烦老师给写一下,谢谢!

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


加好友 发短信
等级:超级版主 帖子:107135 积分:544918 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/9/8 18:03:00 [只看该作者]

不明白你想要做什么。

重新整理下问题,详细说明,最好上例子

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


加好友 发短信
等级:幼狐 帖子:189 积分:1618 威望:0 精华:0 注册:2016/5/5 14:56:00
  发帖心情 Post By:2016/9/8 19:11:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:练习项目.table


图片点击可在新窗口打开查看此主题相关图片如下:qq图片20160908185925.png
图片点击可在新窗口打开查看

我的意思是,只有支出合计列(图片中做标记那列)的数据大于0时,生成的WORD报表中才有这下这句话: 

1、洛阳世家:(1)当日资金可用余额:76.78万元;(2)当日销售情况:现金收款149.97万元;(3)当日共支出:253.73万元;其中土地支出:0.00万元;设计费:0.00万元。

如果支出合计列(图片中做标记那列)的数据等于0时,生成的WORD报表是这这句话:
1、洛阳世家:(1)当日资金可用余额:76.78万元;(2)当日销售情况:现金收款149.97万元;(3)当日共支出:253.73万元。

就是把后面的 其中土地支出**万元......等给去掉。请问该怎么写代码,谢谢!


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


加好友 发短信
等级:超级版主 帖子:107135 积分:544918 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/9/8 20:39:00 [只看该作者]

这个合计的判断是指整表的合计还是某个项目的合计?

如果是后者,这样

    For j As Integer = t.TopPosition To t.BottomPosition
        Dim dr As Row = t.rows(j)
        sum3 = DataTables("日报表").Compute("Sum(支出合计)","项目名称='" & dr("项目名称") & "'")
        If sum3 > 0 Then
            str &= i & "、" & dr("项目名称") & ":(1)当日资金可用余额:" & Format(dr("资金可用余额") ,"0.00") & "万元;(2)当日销售情况:现金收款" & Format(dr("当天收入截至当天17时_现金回款额") ,"0.00") & "万元;(3)当日共支出:" & Format(dr("支出合计") ,"0.00") & "万元;其中土地支出:" & Format(dr("当天支出截至当天17时_土地支出") ,"0.00") & "万元;设计费:" & Format(dr("当天支出截至当天17时_设计费") ,"0.00") & "万元。"
        Else
            str &= i & "、" & dr("项目名称") & ":(1)当日资金可用余额:" & Format(dr("资金可用余额") ,"0.00") & "万元;(2)当日销售情况:现金收款" & Format(dr("当天收入截至当天17时_现金回款额") ,"0.00") & "万元;(3)当日共支出:" & Format(dr("支出合计") ,"0.00") & "万元."
        End If
        str &= vbcrlf
        i += 1
    Next

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