以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助] 专业报表 代码  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=139728)

--  作者:hanzhang98
--  发布时间:2019/8/20 11:35:00
--  [求助] 专业报表 代码
???
[此贴子已经被作者于2019/8/20 21:32:04编辑过]

--  作者:有点酸
--  发布时间:2019/8/20 13:50:00
--  
什么是行,什么是列,这个代码都没有分清楚,有修改的可能和价值吗?
你还是先回头按顺序看两遍帮助吧

下面的代码是遍历行还是列呢?
For mc As Integer = 0 To rt.Rows(rt.Rows.Count -1).Length - 1   \'循环新增行所有单元格

如果要如你的代码注释,要遍历新增行,应该是:

For mc As Integer = 0 To rt.Cols.Count -1   \'循环新增行所有单元格
    If tb.Cols(m).IsNumeric   \'如果是数值列
    
    Else
  
    End If
Next

--  作者:hanzhang98
--  发布时间:2019/8/20 17:33:00
--  
老师好。能否赐教给修改下(黄底色)的代码。先谢谢了。

rt.Rows.Count = rt.Rows.Count + 1 \'增加本页小计行
rt.Rows(rt.Rows.Count -1).Height = 8 
rt.Cells(rt.Rows.Count -1,0).SpanCols = 5
rt.Rows(rt.Rows.Count -1).Style.TextAlignHorz = prt.AlignHorzEnum.Right 
rt.Rows(rt.Rows.Count -1).Style.Font = New Font("Arial Narrow", 8)
rt.Cells(rt.Rows.Count -1).Text = Format(rt.Cells(rt.Rows.Count -1),"#,##0.00") \'千位分节符保留两位小数
[此贴子已经被作者于2019/8/20 17:33:16编辑过]

--  作者:有点酸
--  发布时间:2019/8/20 17:37:00
--  
你连Foxtable中的数据表,还是专业报表中的表,都分不清楚? 

rt是什么?  不应该是从Datatable或Table中取数据打印吗?

先去看帮助,我没有办法修改你的代码。
[此贴子已经被作者于2019/8/20 17:37:18编辑过]

--  作者:hanzhang98
--  发布时间:2019/8/20 18:01:00
--  
Dim rt As New prt.RenderTable() \'定义一个表格对象
rt.Rows.Count = rt.Rows.Count + 1 \'增加本页小计行
rt.Rows(rt.Rows.Count -1).Height = 8 
rt.Cells(rt.Rows.Count -1,0).SpanCols = 5
rt.Rows(rt.Rows.Count -1).Style.TextAlignHorz = prt.AlignHorzEnum.Right 
rt.Rows(rt.Rows.Count -1).Style.Font = New Font("Arial Narrow", 8)
rt.Cells(rt.Rows.Count -1).Text = Format(rt.Cells(rt.Rows.Count -1),"#,##0.00") \'千位分节符保留两位小数

--  作者:有点蓝
--  发布时间:2019/8/20 20:28:00
--  
没看懂,要做什么?
--  作者:hanzhang98
--  发布时间:2019/8/20 21:23:00
--  
蓝老师好. 专业报表的新增插入"本页小计"行, 其中的行高、字体、字号等已设置好.  

想实现: 
FOR 循环新增行“rt.Rows.Count -1” 所有单元格
    IF 如果是"数值"
        IF 如果数值<> "0"
            单元格的数值格式为"#,##0.00"
        ELSE
            单元格的数值格式为"-"
        END IF
    ELSE
        单元格的格式保持原格式
    END IF
NEXT

[此贴子已经被作者于2019/8/20 23:21:08编辑过]

--  作者:有点蓝
--  发布时间:2019/8/20 22:07:00
--  
为什么不判断表格table的单元格值,而去判断报表单元格的值?
--  作者:hanzhang98
--  发布时间:2019/8/20 22:12:00
--  
蓝老师好。在报表每页的最后插入的“本页小计”行的单元格的值是通过用“SUM”报表代码汇总当页报表的数据而来的,不是table表单元格的原数据。我是这样理解的。
[此贴子已经被作者于2019/8/20 22:15:35编辑过]

--  作者:有点蓝
--  发布时间:2019/8/20 22:22:00
--  
既然是sum的,sum变量应该就是数值型,还有必要再判断是否是数值?

既然是sum的,直接对sum值格式化然后赋值不就行了?

if sum = 0 then
单元格值= “-”
else
单元格值 =  Format(sum ,"#,##0.00")
endif