上海灵蛙 发表于 2016-3-9 09:04:41

隔行换色问题

本帖最后由 Lenka.Guo 于 2016-3-9 15:39 编辑

报表设置了隔行灰色跟白色,然后根据状态又有其他颜色,具体见附件
问题是:当我最后一行不是灰色跟白色的时候,自动添加的行全是最后一行的颜色





上海灵蛙 发表于 2016-3-9 10:38:11

刚刚测试了一下,发现了一个问题,数据为空的时候填充的都是白色而不是灰色白色相间,我觉得问题可能出在这里

Lenka.Guo 发表于 2016-3-9 10:57:48

谢谢您的反馈,模板已经下载了,正在测试。

上海灵蛙 发表于 2016-3-9 13:02:22

Lenka.Guo 发表于 2016-3-9 10:57
谢谢您的反馈,模板已经下载了,正在测试。

请问有解决方法了没,比较急:time:

Lenka.Guo 发表于 2016-3-9 14:40:54

本帖最后由 Lenka.Guo 于 2016-3-9 14:43 编辑

您好,一直在研究您的问题,
发现产品存在一个问题:就是如果最后一行是带颜色行,则会影响空白行的背景色;如图:



现有的解决方案是,

1. 您在做SQL 语句查询时(UNION操作符) ,添加一行空白行(所以字段值为null):


SQL 语句示例:
select * from (SELECT top 10 订单.订单ID, 订单.客户ID, 订单.订购日期, 产品.产品名称, 订单明细.数量, 订单明细.单价, 订单明细.折扣, 订单.货主城市, 订单.货主地址, 订单.货主名称, 订单.货主邮政编码, 客户.电话FROM ((订单INNER JOIN 订单明细ON 订单.订单ID = 订单明细.订单ID) INNER JOIN 产品ON 订单明细.产品ID = 产品.产品ID) INNER JOIN 客户ON 订单.客户ID = 客户.客户IDUNIONselect null 订单ID, null客户ID, null 订购日期, null产品名称, null 数量, null单价, null 折扣, null货主城市, null 货主地址, null货主名称, null 货主邮政编码, null电话) aorder by a.订单ID desc





2. 设置表格详细数据的Visibility的Hidden 属性:=iif(Fields!订单ID.value=null,true,false)


示例模板,见附件









上海灵蛙 发表于 2016-3-9 15:37:07

Lenka.Guo 发表于 2016-3-9 14:40
您好,一直在研究您的问题,
发现产品存在一个问题:就是如果最后一行是带颜色行,则会影响空白行的背景色 ...

非常感谢您的解答,但是我测试了一下发现还是有个问题,就是新添加的行一定的白色的,如果最后一行也是白色就会有3行一样的在一起如图

Lenka.Guo 发表于 2016-3-9 18:58:54

这个是因为脚本最后一个条件设置的原因:
改为以下代码,就可以解决了:
        ElseIf((rownumber Mod 2) = 0)Then
                Return "white"               
        End If
End Function


上海灵蛙 发表于 2016-3-10 09:20:22

Lenka.Guo 发表于 2016-3-9 18:58
这个是因为脚本最后一个条件设置的原因:
改为以下代码,就可以解决了:
        ElseIf((rownumber Mod 2) = 0) ...

晕。。。不对啊,我测试了一下还是一样的啊

Lenka.Guo 发表于 2016-3-10 11:58:22

还是在脚本中添加判断条件的问题,这下应该没问题了:
代码:
Function SetColor(ByVal e As Integer, ByVal rownumber As Integer) As String
       

        If (e = 10294 ) Then
                Return "Yellow"
        ElseIf(e = 10285)Then
                Return "Red"
        ElseIf(e = 5)Then
                Return "Lime"

        ElseIf( CStr(e) = 0 And ((rownumber Mod 2) = 1) )Then
                Return "gray"
        ElseIf(CStr(e) = 0 And ((rownumber Mod 2) = 0) )Then       
                Return "white"
        ElseIf( CStr(e) <> 0 And rownumber Mod 2 = 1)Then
                Return "white"
        ElseIf(CStr(e) <> 0 And rownumber Mod 2 = 0 )Then       
                Return "gray"

        End If
End Function










页: [1]
查看完整版本: 隔行换色问题