阿泰的软件实用主义

水晶报表/BOE

博客园 首页 新随笔 联系 订阅 管理
  176 Posts :: 9 Stories :: 2046 Comments :: 38 Trackbacks

 

有问题请在此贴跟贴回复,我亦会在此贴回复。

请不要到无关的帖子中跟帖

请尽量描述清楚你的问题和需要,我的理解能力不是很强,呵呵。

 

请您遵守以下规则:

提问内容中请不要出现 感叹号,跪求等字样。

请尽量不要称呼我为楼主。

请尽量不要冒充女性,我回答问题不分男女。

 

谢谢。

 

 

posted on 2008-10-07 13:17 阿泰 阅读(315) 评论(48)  编辑 收藏 网摘 所属分类: A_Blog通告

Feedback

泰哥好~求帮忙:
看了你写的<子报表与主报表的连接>一文后开始做,因为手头正好有本程序要用到子报表而我之前没有做过子报表
当把主报表字段和子报表字段连接起来后运行程序,报错,信息为:
文件 D:\DOCUME~1\tang\LOCALS~1\Temp\DSO030_Report_SHIMANO {1DEA7344-8107-4FA6-86DE-214978BE1BDE}.rpt 内出错:
对链接的参数操作非法。
请问该怎么解决?难道是还有什么地方没有设置吗,可是子报表能设置的地方就那么几个,实在想不到什么方法了...麻烦泰哥帮忙啦..~
我也遇到相同问题 请泰哥指教~
  回复  引用    

#2楼 [楼主] 2008-10-08 10:00 阿泰      
@nedved529(1楼)
检查一下的主子报表连接字段是不是存在数据类型不一致的情况
如果一样的话,请发一下报表模板+相关数据表导成access发给我看看吧
我的邮箱在页面的左上角

  回复  引用  查看    

#3楼  2008-10-08 15:58 figo163 [未注册用户]
泰哥好~ 我有个问题想请教下:
当一个水晶报表要显示一个列表的信息(列表包括列表头和列表内容)。当前报表显示不完列表的内容,就把列表剩余的内容放到下一页报表显示,而且列表头也要重复在下一页列表显示。由于我列表信息是由子报表组成的,所以把列表放在了报表的页脚显示。
这种问题该如何处理?
请泰哥指教,谢谢。
  回复  引用    

#4楼  2008-10-08 23:22 fastmin [未注册用户]
你好,我有两个问题..

一个是水晶报表自定义纸张的问题,客户一换,打印机不一样就打印不正常了.又得重新设置..

二是水晶报表加载的时间好慢,机器差一点的差不多要20十几秒呢?这个有什么好解决的方法吗?

我的环境是VS2008.
  回复  引用    

#5楼 [楼主] 2008-10-09 11:59 阿泰      
@figo163(3楼)

子报表里的页眉页脚只能用分组来模拟,用组页眉页脚。

  回复  引用  查看    

#6楼 [楼主] 2008-10-09 12:03 阿泰      
@fastmin(4楼)
1:这个问题似乎没有很好的解决方法,如果你用的是cs系统,那么需要保证打印机名称,型号一样,且设置相同的纸型才行。
我现在已经没有打印测试环境,所以具体也说不好。
2:一般来讲程序第一次启动比较慢,但是第二次再执行应该快很多。但是还没有说5秒还出来的,除非数据量非常大。

不好意思你问的这两个问题我都没有确切的答案~~

  回复  引用  查看    

#7楼  2008-10-09 12:35 figo163 [未注册用户]
--引用--------------------------------------------------
阿泰: @figo163(3楼)

子报表里的页眉页脚只能用分组来模拟,用组页眉页脚。

--------------------------------------------------------
怎样用分组来模拟阿,不是很明白,能举个例子吗?谢谢泰哥.
  回复  引用    

#8楼  2008-10-09 12:53 figo163 [未注册用户]
泰哥,我还有两个问题:
如果用分组来模拟,需要以一个参数来分组,那这个参数应该取什么呢?可不可以用自定义参数来分组的?
谢谢
  回复  引用    

#9楼  2008-10-09 13:27 figo163 [未注册用户]
我用分组来模拟,但是子报表页眉在当主报表翻页的时候,还是不能显示子报表的页眉.
如下
Name Age
A 20
... ...
主报表翻页后,只能显示如下:
G 23
... ...
我翻页后能显示如下:
Name Age
G 23
... ...
请泰哥再指点下,谢谢
  回复  引用    

#10楼 [楼主] 2008-10-09 13:56 阿泰      
@figo163(9楼)
子报表上,更改组,在出来的界面上,切换到选项标签
反正就是在这个组的属性上找一找,呵呵
勾选【在每个页面上重复组页眉】

  回复  引用  查看    

#11楼  2008-10-09 14:10 figo163 [未注册用户]
弄出来了,呵呵。
谢谢泰哥。
  回复  引用    

泰哥,我有个问题请教下你。
我做的一个供应商每月准时交货率报表,
分组情况 1#月-2#订单号-3#订单行
用运行总和字段(Rtotal)做了对是否准时交货的计数
汇总字段----订单行 汇总类型----计数
求值-使用公式-----最后一次送货时间<=采购单需求时间 and 送货数量>= 采购数量
组更改---月
该总和字段(Rtotal)放在订单行,分别能显示为1,2,3……50,但是我想要的是最大值,也就是说满足条件,准时送货的总次数50,如何获得???
用maxinum提示说不能汇总该字段
  回复  引用    

#13楼  2008-10-13 13:54 yanghuan [未注册用户]
在水晶报表里 导出MS Excel 97-2000 格式 或 Word 格式 是乱码 而且在浏览器中打开 不是 保存文件 请问这个怎么解决???我用的是crystalreport10 vs2003

  回复  引用    

泰哥:
VS2005自带水晶报表中的饼图如何设置变更主体的字体大小,就是饼图下面的名字。

  回复  引用    

请问泰哥,水晶报表里面每行求和问题
列1,列2,列3;
5,6,列3=sum(列1,列2)
请问在水晶报表公式专家里面怎么写啊

我写的如下,不行啊
{HrAttendMonth.Breakfast}+{HrAttendMonth.Lunch}
谢谢

  回复  引用    

#16楼 [楼主] 2008-10-13 21:29 阿泰      
@草船借箭(12楼)
把这个(Rtotal)放到组页脚就可以了。详细资料节上不要放。
Max 操作早于运行时总计

  回复  引用  查看    

#17楼 [楼主] 2008-10-13 21:31 阿泰      
@yanghuan(13楼)
不好意思,你所说的乱码是是指【乱码】还是格式乱了呢
如果是后者的话,可以参考
http://www.cnblogs.com/babyt/archive/2008/04/04/1137345.html

  回复  引用  查看    

#18楼 [楼主] 2008-10-13 21:41 阿泰      
@steve_zhong(14楼)
你指的是各扇区对应的名字吗?在VS2005自带的版本里好像是不可以更改的,
但是完整版本里可以。

  回复  引用  查看    

#19楼 [楼主] 2008-10-13 21:42 阿泰      
@zhangjidong(15楼)
做一个公式,写上 {HrAttendMonth.Breakfast}+{HrAttendMonth.Lunch} ,放在列3的位置上,应该就可以啊。提示什么错误还是显示的值不符合要求?
  回复  引用  查看    

我是15楼的
水晶报表@TTL字段,选择公式——记录选定,里面写的公式
{HrAttendMonth.Breakfast}+{HrAttendMonth.Lunch}
检查的时候提示:“选定公式的结果必须为布尔型”
vs05自带水晶报表
  回复  引用    

@阿泰
非常感谢,一语中的,简单实用。
谢谢泰哥
  回复  引用    

#22楼  2008-10-14 10:06 friskyang      
我是 13 楼的
是 乱码 不是格式乱了 而且选完格式后在浏览器中打开 不是 保存文件(pdf的就可以保存)

  回复  引用  查看    

#23楼 [楼主] 2008-10-14 12:25 阿泰      
@zhangjidong(20楼)
为啥要放在记录选定了,记录选定里必须返回一个布尔值。
按照你的要求,不是做个普通的公式字段就可以了了吗?

  回复  引用  查看    

#24楼 [楼主] 2008-10-14 12:28 阿泰      
@friskyang(22楼)
你用的是什么数据库?页面在gb2312和utf8之间切换会有正常显示吗还是都是乱码?

至于excel和word在ie打开的问题,可能是之前你进行过类似的操作,被IE记住了,建议找个工具把IE全面修复回原始状态看看。

  回复  引用  查看    

#25楼  2008-10-15 13:38 阿龍      
阿泰,您好。请教一个问题。水晶报表能否实现这样一种功能。查询出来的时候显示共M页。而实际只取得指定某页的数据。如果需要打印的时候能够边打印边从数据库中取数据。
  回复  引用  查看    

#26楼  2008-10-15 16:06 kingst [未注册用户]
泰哥,这个问题是怎么啦,网上搜索不到啊
我做的水晶报表,默认是全部显示,自己在上面做了一个查询条件(一个textbox输入“年月”,一个butten),现在能按查询条件查询出来,但只要点击CrystalReportView的工具栏的打印、导出、下一页等按钮,我的查询条件就无效了,即又全部显示,打印也全部打印出来了。
是回发的问题还是属性设置问题?代码加到if(!ispostback){}就不到显示。
谢谢
  回复  引用    

#27楼  2008-10-15 17:34 anyone [未注册用户]
泰哥,层次分组缩进能不能只缩进某一列的?
  回复  引用    

#28楼 [楼主] 2008-10-16 00:03 阿泰      
@阿龍(25楼)

1:可以显示共M页,用【总页数】
2:不能只取得指定某页的数据,水晶报表是一次性取完数据再分页的。同理,也不能边打印边取数据,而是一次性取好数据再打印。

  回复  引用  查看    

#29楼 [楼主] 2008-10-16 00:04 阿泰      
@anyone(27楼)

只缩进某一列是什么意思。。?

  回复  引用  查看    

#30楼  2008-10-16 16:28 mak [未注册用户]
请问水晶报表11 能部署到windows98se上吗?
  回复  引用    

#31楼 [楼主] 2008-10-16 17:25 阿泰      
@mak(30楼)
不能,CR 11 最低支持到windows2000.

  回复  引用  查看    

#32楼  2008-10-17 10:43 mak [未注册用户]
谢谢阿泰的热心解答 现在有个问题请教
新建一个公式字段 想对一列数据的 6到20行 数据进行汇总 如何做呢?(这个字段是文本格式 但只有数字)
用下面这个样子的不行
formula = Sum (ToNumber ({Command4.计数} 6 to 20))
  回复  引用    

#33楼  2008-10-17 14:45 makty [未注册用户]
阿泰!
我现在做了一个数据很多的交叉表 然后客户需要加一张折线图.现在以有的数据不能满足折线图需要,所以我添加了一张子报表拼接,可是我不想每次点到子报表就跳到子报表页面,然后就是打印的时候,他们因为大小关系分成两业,每业的页头和页尾都很大空白,打印出来很难看.
请问啊泰这个怎么解决

  回复  引用    

#34楼  2008-10-17 15:13 makty [未注册用户]
啊泰:
才忘记了,还有一个问题请教,我这里有3个字段:
name sumqty typ

分别存的是名字,数量,类型
我想能不能写一个报表公式将这些数据根据类型区分开,
比如我类型有男,女
那我现在只想现实‘男’类型的数据,怎么办,谢谢
  回复  引用    

#35楼 [楼主] 2008-10-17 15:48 阿泰      
@makty(33楼,34楼)

33楼的问题:
点击子报表就跳到子报表页面,这个是去不掉的。
大空白这个也没有根本解决办法,只能不断的手动调整他们的位置

34楼的问题,按类型分来,可以使用分组,将【类型】作为分组字段

以VS2005自带水晶报表版本为例子。
在报表模板,右键,插入,组。即可。

如果要只显示男的数据,那么可以用另外一种方法,使用选择专家

右键,报表,选择专家,选取类型字段,确定,在出来的界面上选等于,在右侧出来的框里选男即可。那个框里如果没数据出来,直接输入个男字也可以。

32楼的问题我再看看。


  回复  引用  查看    

#36楼  2008-10-17 17:04 杨1984 [未注册用户]
你好
我在做水晶报表的时候,插入数据库字段,数据总是竖向排列,如何改为横向且能自动换行?
插入数据库字段后,没显示一个数据,页面上所有内容都会显示一次,请问这个怎么解决?
插入运行总计字段后会出现和第二个问题同样的状况,而且会显示从1到最后一个结果,我想只显示最终结果,请问怎么办,是不是我做错了?

  回复  引用    

#37楼  2008-10-17 18:09 mak [未注册用户]
谢谢阿泰对我提问的关注 期待能有解决方法
  回复  引用    

#38楼  2008-10-18 00:38 阿龍      

阿泰,看过你的很多关于报表的文章,学到不少.试问一个这个报表如何做,因为每个编号的记录有1至5条.而右边所示的三个红色框代表三个字段,因为每列都相同,所以就合并了.这个是EXCEL做的.水晶报表如何达到这种效果呢
  回复  引用  查看    

#39楼 [楼主] 2008-10-21 10:11 阿泰      
@阿龍(38楼)
水晶报表做这种报表是不大方便,可以参考
http://www.cnblogs.com/babyt/archive/2008/01/08/1031133.html



  回复  引用  查看    

#40楼 [楼主] 2008-10-21 14:15 阿泰      
@杨1984(36楼)
问题1:如果你的数据不多,可以用分栏来实现。
可参考
http://www.cnblogs.com/babyt/archive/2005/03/13/118059.html
问题2:可能是字段放错了位置,具体还要看模板
问题3:可以控制其在最后一条显示,在这个运行时总计字段上点右键,设置字段格式,勾选抑制显示,编辑公式为not onlastrecord
  回复  引用  查看    

#41楼  2008-10-21 17:08 阿龍      
--引用--------------------------------------------------
阿泰: @阿龍(38楼)
水晶报表做这种报表是不大方便,可以参考 --------------------------------------------------------
比较类似。但又不同。这个位置不好定,做起来就是不太好看。
  回复  引用  查看    

#42楼  2008-10-21 19:01 加贝 [未注册用户]
大侠您好:

水晶报表遇到个问题,特来请教您。
问题是这样的:一水晶报表通过程序运行起来时,达到预期的效果。
但是发布以后发现该报表的样稍微有点问题,就是最下面的线长出来了。
这是怎么回事啊

期待大侠解答。谢谢
小弟邮箱:sxyao2003@163.com
  回复  引用    

#43楼  2008-10-22 09:11 杨1984 [未注册用户]
太感谢了
还有几个问题就是

我在vs2005里边用的水晶报表
请问怎么导出到word时自动提供一个规定好的名称?
我想统计一下数据库里一个数据列中不同值的个数,并且把这些不同的名称列出来(重复的不显示),请问如何实现?
并且在值相同的行中,列出对应行中最大值,怎么办?
即如:
数据库中有:
名称 值
a 3
a 4
a 1
b 1
b 2
要统计出不同的名称有2个,并列出:a,b
再列出
a 4
b 2
  回复  引用    

#44楼  2008-10-22 10:21 杨1984 [未注册用户]
@阿泰
关于第三个问题我试了一下
确实是显示最后一个了
但是其他内容仍然会重复显示
就是说如果总计是9,其它内容就会重复显示9次,而总计字段在最后一次重复显示9
我想是所有内容只显示一次,总计字段显示9
  回复  引用    

#45楼  2008-10-24 18:04 霖典      
请教阿泰兄
近几个月在研究水晶在jsp中的应用,遇到了一些问题
我使用的版本是:Crystal Reports XI Developer Edition
开发环境是:
JDK1.5.0+eclipse3.2+oracle10g
应用服务器是:
金蝶apusic5.1
问题大致如下:
1.在jsp页面中分页显示时,在数据量很小的情况下点击“前页”,“后页”翻页速度太慢,大约需要10~15秒不等;经查证,按钮触发的翻页都需要重新刷一次jsp页面,有没有好的办法可以解决?
2.在jsp页面中点击其自带的打印按钮时,需要用PDF格式打开后,才能打印,这样要是没有装PDF时,就不能打印,请问有直接预览打印的方法?
3.在jsp页面中导出自带的只有三种格式可选,即rpt,pdf,rtf三种,没有excel格式,请问是需要设置某个参数或配置其他文件才能否导出成Excel格式吗?
4.如果可以解决问题3,此问题就不用看了~
在jsp页面中导出的PDF文件,全角符号、标点都变为“?”,有没有办法可以解决呢?
5.套打的打印预览时,需显示背景图案,但背景图案不需要打印,能否有好的方法可以实现吗?
6.显示条码的问题,通过点击打印按钮打开的PDF文件,条码显示正常,而点击导出按钮导出,然后再打开的PDF文件,条码字体不能显示(直接显示为转换前得数字或字母),请问是否有好的方法可以解决呢?

出现这些问题应该跟应用服务器无关,我在weblogic 下发布过,问题同样如此。
情况大致如此,问题可能有点多,辛苦你了。
在网上搜索这方面的资料时,阿泰兄出现的频率比较高,所以就来此求教了~

  回复  引用  查看    

泰哥:
我用DataSet来当水晶报表(VS2005自带)的数据源,填充进数据后,如果数据有多页的话,换页会提示要数据登录信息,怎么办?
  回复  引用    

下面是我的源码:
string SqlWhere = Session["Where"].ToString();
string sql = "select [fo_id],[Product_name],[name],[keys],[qty] from Fo_to_Parame where " + SqlWhere + "";
string sql2 = "select count(distinct fo_id) as fo,count(distinct [Product_name]) as pr,count(distinct [name]) as na,count(distinct [keys]) as ke,sum([qty]) as qt from Fo_to_Parame where " + SqlWhere + "";
string Link_str = AllClass.SqlDb.ConnectionStr.ToString().Trim();
DataSet ds = new DataSet();
SqlConnection con = new SqlConnection(Link_str);
SqlCommand cmd = new SqlCommand(sql, con);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
da.Fill(ds, "Fo_to_Parame1");

SqlConnection con2 = new SqlConnection(Link_str);
SqlCommand cmd2 = new SqlCommand(sql2, con2);
SqlDataAdapter da2 = new SqlDataAdapter();
da2.SelectCommand = cmd2;
da2.Fill(ds, "countnum");

CrystalReportSource1.ReportDocument.Load(Server.MapPath("lookforpamare.rpt"));
//CrystalReportSource1.ReportDocument.Load(Server.MapPath("reportforfo_test1.rpt"));

CrystalReportSource1.ReportDocument.SetDataSource(ds);

CrystalReportViewer1.ReportSource = CrystalReportSource1;
CrystalReportViewer1.DataBind();
  回复  引用    

@杨1984
select distinct 名称,max(值)
from 你的数据表名
group by 名称

  回复  引用