阿泰的软件实用主义

水晶报表/BOE

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

环境:
VB.Net2003
水晶报表10高级开发版本
示例数据库文件,安装水晶报表时自带的xtreme.mdb

如何设定指定记录的背景颜色(如:产品表中记录大于50的背景颜色),请在此处下载操作录像
http://files.cnblogs.com/babyt/CRMOV20050802_1.rar

下面来做一下如何使用程序来控制这个指定记录的范围
首先我们要改造一下我们的模板文件

Step1: 增加一个参数cond


Step2: 修改节专家==>详细资料节==>颜色标签==>更改颜色后面开的公式
将原来的具体数值,使用参数进行代替


Step3:构造一个工程,这里使用了动态加载报表模板的方式

主要代码如下

 Private Sub Form1_Load(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles MyBase.Load
        
'加载报表
        oReport.FileName = Application.StartupPath & "\dyncolor.rpt"
        CrystalReportViewer1.ReportSource = oReport
    
End Sub




    
Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles Button1.Click

        
'离散值 
        Dim DiscreteVal = New ParameterDiscreteValue
        DiscreteVal.Value 
= CLng((TextBox1.Text))
        
'禁止弹出提示窗口
        CrystalReportViewer1.ParameterFieldInfo(0).AllowCustomValues = False
        
'赋值
        CrystalReportViewer1.ParameterFieldInfo(0).CurrentValues.Add(DiscreteVal)
        CrystalReportViewer1.ReportSource 
= oReport
        CrystalReportViewer1.Refresh()
    
End Sub

因为是测试,我没有进行错误和异常处理
请在此处下载完整代码,
不过因为我使用的是水晶报表10,如果你运行不起来,也没关系,只要把代码看懂就行了
http://files.cnblogs.com/babyt/DynColor.rar

==========================
阿泰  20050809

posted on 2005-08-09 11:40 阿泰 阅读(3138) 评论(15)  编辑 收藏 网摘 所属分类: CR我的原创

Feedback

#1楼  2005-08-09 14:42 Sunus's Blog      
问一个不相关的较弱的问题,CR9中的RDC在C#中可用吗?我一直没找到这方面的例子。看联机文档上说VB当然是最佳,但是只要支持COM的都可以使用RDC,真的吗?c#也可以吗?
  回复  引用  查看    

#2楼  2005-08-09 15:00 Sunus's Blog      
如果我没有理解错的话,难道c#中的RDC就是指ReportDocument及相关的一系列类,名字空间等等?
可是察看msdn上的类库参考,发现对比联机文档中的东东少了很多呀,比如提供的事件。例如,需要在报表页面上对用户双击某一条记录的事件作出响应,联机文档中说有DblClicked Event (CRViewer Object) 事件,可是msdn上面却没有,真不知道信谁的了
  回复  引用  查看    

#3楼 [楼主] 2005-08-09 16:15 阿泰      
To: Sunus

CR9中RDC==>Report Designer Component
是基于COM的,其实就是来源于craxdrt9.dll

.Net中的水晶报表是基于命名空间的,所以两者不一样
如果要进行类比,我想RDC=CrystalDecisions.CrystalReports.Engine更合适些
ReportDocument只是其下一级类

水晶报表有多个版本,每个版本都有些不同的特性。这是正常的
Viewer有双击事件,不过在程序中对具体记录的双击倒是没做过
在水晶报表模板中可以使用连接实现对某一记录/字段的“单击事件”
  回复  引用  查看    

#4楼  2005-08-10 07:57 sunus      
恩,对,应该是Engine名字空间,我表述得有问题

多谢指导:)
  回复  引用  查看    

#5楼  2005-08-19 10:10 ask [未注册用户]
阿泰,请问能不能在VB.NET中使用程序动态更改报表的背景颜色?
  回复  引用    

#6楼 [楼主] 2005-08-19 10:41 阿泰      
应该i可以的。
这个例子就是演示改变背景颜色的区域
同样的,你如果在公式里把颜色作为参数传进去的话,那么就能改变颜色了:)
不过要注意水晶报表颜色值跟界面值得对应关系
如红色是CRRed等。。
  回复  引用  查看    

#7楼  2005-08-19 11:45 ask [未注册用户]
阿泰,我现在想要的是能够在程序运行当中,手动修改报表的背景颜色。比如:现在有好多种颜色(255种吧 ),由用户自己决定需要哪一种颜色,而不是我事先就决定好那几种颜色的变化,我想,这应该是使用程序去修改报表的背景颜色,而不是修改好报表的背景颜色后才显示出来。明白我的意思吗?
  回复  引用    

#8楼 [楼主] 2005-08-19 13:40 阿泰      
我没看出你说的和我说的有什么大的差别
我说的其实也是用程序去修改颜色,而不是说在模板里改
模板里只是做个公式罢了
当前了,这个例子是不合适的,我只是顺着这个例子讲个思路罢了

在这个例子中,是设置好背景颜色,然后用程序指定区域进行背景颜色区域的变化
你只要把思路改一下,把颜色作为参数就可以了阿。
但是要做到让用户任意选颜色似乎不大现实吧,我还不大清楚程序中的颜色和水晶报表的颜色的对应关系。

一会我给你写个简单例子吧。
  回复  引用  查看    

#9楼  2005-08-19 14:01 ask [未注册用户]
谢谢!
  回复  引用    

#10楼  2005-08-19 14:08 ask [未注册用户]
阿泰,使用rgb来修改颜色应该可以吧?
  回复  引用    

#11楼 [楼主] 2005-08-19 14:26 阿泰      
可以的,呵呵,水晶报表里是Color(r,g,b)
我以前没用过:)
  回复  引用  查看    

#12楼  2005-08-19 16:44 ask [未注册用户]
这样就解决了你说程序中的颜色和水晶报表中的颜色的对应关系了,因为程序中也支持这个。只是我不懂得怎样用程序指定区域,只好向你请教了!
  回复  引用    

#13楼  2005-08-26 11:11 毛建华 [未注册用户]
阿泰,我现在的情况是这样的,你帮我看看。
我用SQL SERVER2000的存贮过程写好了统计方法。想实现用水晶报表先按条件显示出统计表,然后单击报表中的统计数字可出详细的明细表。
我的环境是VS.NET+水晶报表10+SQL SERVER2000
我快晕了,找了太多的方法!
  回复  引用    

#14楼  2005-08-26 11:54 毛建华 [未注册用户]
你有没有QQ号啊,这是我的Q号376808652
这样联系快点吧
  回复  引用    

#15楼  2006-04-14 11:54 vesan [未注册用户]
我的是 vb.net 2003+crystal 10
可是運行你的程式時,輸入數值,相關值的背影色沒有改變啊.
  回复  引用    





标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2006-11-09 23:35 编辑过
Google站内搜索


China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
近千种 9-95 新二手计算图书火热销售中!

相关文章:

相关链接: