以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  代码问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=90268)

--  作者:落叶孤影
--  发布时间: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


--  作者:有点蓝
--  发布时间: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


--  作者:落叶孤影
--  发布时间: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") & "万元."


--  作者:有点蓝
--  发布时间:2016/9/8 17:27:00
--  
msgbox(sum3)看看
[此贴子已经被作者于2016/9/8 17:27:29编辑过]

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

--  作者:有点蓝
--  发布时间:2016/9/8 17:45:00
--  
是让你弹出sum3的值看看


--  作者:落叶孤影
--  发布时间:2016/9/8 17:51:00
--  
我觉得应该是sum3这个变量的值有问题,sum3是对整个表的支出合计列进行的求和,所以说sum3 >0执行长代码也是对的。应该再新增一个变量,对表中每行的支出合计列进行求和,这样的话思路就对了。就是我不会写代码,还麻烦老师给写一下,谢谢!
--  作者:有点蓝
--  发布时间:2016/9/8 18:03:00
--  
不明白你想要做什么。

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

--  作者:落叶孤影
--  发布时间: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万元。

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


--  作者:有点蓝
--  发布时间: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