社区
图表区
帖子详情
向阿泰求助 交叉报表 数据源过滤问题
h821291419
2010-01-09 04:40:04
我在做一个交叉报表的时候 我想把结果根据条件过滤下
正好看到阿泰有篇文章【数据过滤】
于是我照做
结果发现 我过滤的目的达到了 可是我的动态列却少了很多
请问阿泰哥这是什么原因有什么办法可以解决?
...全文
188
21
打赏
收藏
向阿泰求助 交叉报表 数据源过滤问题
我在做一个交叉报表的时候 我想把结果根据条件过滤下 正好看到阿泰有篇文章【数据过滤】 于是我照做 结果发现 我过滤的目的达到了 可是我的动态列却少了很多 请问阿泰哥这是什么原因有什么办法可以解决?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
21 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
阿泰
2010-01-13
打赏
举报
回复
也可以,你自己根据需要把空数据补进去。
列上的数据在转换为交叉数据之前,是在行上的。
你可以做一个专门的列数据代码表,然后跟过滤后的数据做一个外关联
这样会取出完整的数据表格。从而达到你要的效果。
我对这个帖子的回答,到此结束。
h821291419
2010-01-13
打赏
举报
回复
[Quote=引用 18 楼 babyt 的回复:]
引用 16 楼 h821291419 的回复:
去掉记录筛选字段后
好像有把所有的记录都查询出来
本来就是这个样子,不如怎么会出现那些列呢。
只是这些数字不被计入到总数中。
[/Quote]
哦 这样的是吧!
那有没有办法 既让所有列显示 又可以根据条件过滤字段呢?
h821291419
2010-01-13
打赏
举报
回复
我这个问题终于解决了!
非常感谢阿泰哥的热心帮助!
我也是刚来csdn 听说csdn里面的人很好很热心!
看到阿泰哥这几天给我的回贴 而且还是在半夜 我真的很感动!
阿泰哥真的很好很强大! 我以后一定自己多努力!多去看看以前的贴子!
阿泰哥我会一直支持你的!
h821291419
2010-01-12
打赏
举报
回复
去掉记录筛选字段后
好像有把所有的记录都查询出来
阿泰
2010-01-12
打赏
举报
回复
[Quote=引用 14 楼 h821291419 的回复:]
这样做还是有最开始那个问题 仍然会过滤掉一些列
[/Quote]
把这个过滤条件拿掉
{viewYearSaleMoneySameTimeRateRpt.日期} like {?@year}+"*"
传入的数据也不要过滤,是不会缺失的
h821291419
2010-01-12
打赏
举报
回复
这样做还是有最开始那个问题 仍然会过滤掉一些列
figoxf
2010-01-12
打赏
举报
回复
如果根据月份查询,是怎么样的?有没有这方面的案例?
阿泰
2010-01-12
打赏
举报
回复
if left({viewYearSaleMoneySameTimeRateRpt.日期},4) <>'2009' then
0
else
{数值字段}
年份不是2009的,被置为0
2009的,保持原值
这样写更好理解
if left({viewYearSaleMoneySameTimeRateRpt.日期},4) ='2009' then
{数值字段}
else
0
阿泰
2010-01-12
打赏
举报
回复
你传进来的数据,本身不要任何过滤,要是全部的数据。
然后我们用公式,去模拟你的过滤
确实是要把数值型字段“改为”0
但是,改的依据是什么,就是你的过滤条件
我们要把你本来过滤掉的数据,主动置为0.
left({viewYearSaleMoneySameTimeRateRpt.日期},4) <>'2009'
实际上就是你原来的过滤条件,在水晶报表的一个对应值,也许写成
left({viewYearSaleMoneySameTimeRateRpt.日期},4) ='2009'
你更容易理解些
实际上这句,跟你的条件是等价的,只是你这个是一个选择公式
{viewYearSaleMoneySameTimeRateRpt.日期} like {?@year}+"*"
而我前面的是一个单行级别的逻辑处理
希望你实际操作一下先。
h821291419
2010-01-12
打赏
举报
回复
[Quote=引用 9 楼 babyt 的回复:]
你的那个数据类型的字段,更改为公式实现,应该是这样的
if left({viewYearSaleMoneySameTimeRateRpt.日期},4) <>'2009' then
0
else
{数值字段}
其中2009可以做成一个参数,来实现前端界面跟报表的交互
[/Quote]
阿泰哥 上面这个公式我不是很明白!
你说是数据类型的字段改为公式 是数值的字段要改为公式吧?
还有为什么是 <>'2009'
那这样不是把 不是2009年的数据也查出来显示成0了么?
还请阿泰哥指点一下!
谢谢
阿泰
2010-01-12
打赏
举报
回复
[Quote=引用 16 楼 h821291419 的回复:]
去掉记录筛选字段后
好像有把所有的记录都查询出来
[/Quote]
本来就是这个样子,不如怎么会出现那些列呢。
只是这些数字不被计入到总数中。
h821291419
2010-01-12
打赏
举报
回复
静候
tigerdengxc
2010-01-11
打赏
举报
回复
应该是csdn的服务器崩啦,我的也打不开!
h821291419
2010-01-11
打赏
举报
回复
不好意思刚才网络有点问题CSDN打不开
我过滤条件是这么写的
{viewYearSaleMoneySameTimeRateRpt.日期} like {?@year}+"*"
就是根据年份进行查询 日期是字符串类型的 格式2009/01
我该怎么处理?
阿泰
2010-01-11
打赏
举报
回复
[QUOTE]
if {viewYearSaleMoneySameTimeRateRpt.产品种类}='这里写类型'
then 0
else {viewYearSaleMoneySameTimeRateRpt.数值}
但是这个类型我并不知道额?
[/QUOTE]
你的过滤条件是怎么写的?这个地方只是把过滤条件提到这里另外处理一下的。
h821291419
2010-01-11
打赏
举报
回复
我这样做了还是不行
不知道我是哪些错了
我的数据结构是这样的
日期 类型 数值类型 数值 四个字段
行上放:日期
列上放:类型,数值类型
交叉位置放:显示数值的公式
我公司是这么写的
if {viewYearSaleMoneySameTimeRateRpt.产品种类}=''
then 0
else {viewYearSaleMoneySameTimeRateRpt.数值}
按阿泰哥上面的写法
if {viewYearSaleMoneySameTimeRateRpt.产品种类}='这里写类型'
then 0
else {viewYearSaleMoneySameTimeRateRpt.数值}
但是这个类型我并不知道额? 要怎么处理?
hengrena
2010-01-11
打赏
举报
回复
强势一顶
阿泰
2010-01-11
打赏
举报
回复
首先说明一点,我说的方法,数据是不过滤的,只是处理为0
根据你的
[QUOTE]
{viewYearSaleMoneySameTimeRateRpt.日期} like {?@year}+"*"
就是根据年份进行查询 日期是字符串类型的 格式2009/01
[/QUOTE]
你的那个数据类型的字段,更改为公式实现,应该是这样的
if left({viewYearSaleMoneySameTimeRateRpt.日期},4)<>'2009' then
0
else
{数值字段}
其中2009可以做成一个参数,来实现前端界面跟报表的交互
lianyi68
2010-01-11
打赏
举报
回复
看過。。。
阿泰
2010-01-10
打赏
举报
回复
数据被过滤掉后,相应的数据对应的列也确实被过滤掉了。
如果你想让对应的列存在,而数据对应的项目不被统计的话,可以这样处理
做一个公式,用来替代交叉位置的数据字段
如:
if {列字段}='橡胶' then
0
else
{数值字段}
这样的话,通缉的时候,橡胶这个列存在,但是数据被主动替换为0,而不参与统计
加载更多回复(1)
易语言源码易语言超级表格自动完成源码
易语言源码易语言超级表格自动完成源码
【Python + 半导体】设备日志自动解析与异常提取工具
本资源提供半导体设备日志自动解析与异常提取的完整解决方案,适用于设备维护、故障诊断、日志审计等场景。
图表区
4,818
社区成员
14,134
社区内容
发帖
与我相关
我的任务
图表区
.NET技术 图表区
复制链接
扫一扫
分享
社区描述
.NET技术 图表区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章