往水晶报表传值问题。

lqflsh 2003-12-08 11:35:01
我用的是水晶报表9。0中文版。
安装完毕后我在开始程序运行的水晶报表,已经把数据库字段托放到了详细资料这个栏里,我预览后可以有数据。
现在的问题是这样的。我在c#(c/s)中想让用户输入条件,比如用户选了一个日期为2003-01-01这个日期,我怎么才能让报表显示条件是2003-01-01这个日期的所有数据?我怎么才能把这个用户选的日期传到水晶报表中?还是我的思路有问题?
...全文
183 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
pairs 2003-12-12
  • 打赏
  • 举报
回复
楼上们所说的筛选记录的方法,筛选的字段类型只能为数字,金额等,假如我要筛选的是城市之类的,那又该怎么写呢?
haibodotnet 2003-12-11
  • 打赏
  • 举报
回复
官方水晶报表 .NET 应用程序实例下载 (Visual Basic .NET)(翻译:海波.NET,更新:2003-12-11)
http://support.crystaldecisions.com/communityCS/TechnicalPapers/apps_vbnet.pdf.asp?recDnlReq=Record&dnlPath=apps_vbnet.pdf
----------------------------------

五、参数字段

1、vbnet_web_discreteparams.exe
该 Visual Basic .NET web 程序实例示范了如何将多个数值传递给离散参数字段 (discrete parameter field)。本程序适用于 Visual Studio .NET 内置的水晶报表 (Crystal Reports for Visual Studio .NET) 及其更新版本。
http://support.crystaldecisions.com/communityCS/FilesAndUpdates/vbnet_web_discreteparams.exe.asp

2、vbnet_web_multirangeparams.exe
该 VB.NET web 程序实例示范了如何通过水晶报表 web 窗体查看器 (Web Forms Viewer) 将多个数值传递给货币类型的范围参数 (range parameter)。本程序适用于 Visual Studio .NET 内置的水晶报表 (Crystal Reports for Visual Studio .NET) 及其更新版本。
http://support.crystaldecisions.com/communityCS/FilesAndUpdates/vbnet_web_multirangeparams.exe.asp

3、vbnet_web_rangeparams.exe
该 VB.NET web 程序实例示范了如何将初始值和最终值传递给范围参数字段 (range parameter field),并将多个数值传递给离散参数字段 (discrete parameter field)。本程序适用于 Visual Studio .NET 内置的水晶报表 (Crystal Reports for Visual Studio .NET) 及其更新版本。
http://support.crystaldecisions.com/communityCS/FilesAndUpdates/vbnet_web_rangeparams.exe.asp

4、vbnet_web_sub_daterange_param.exe
该 VB.NET web 程序实例示范了如何通过 CrystalReportViewer 将日期范围传递给子报表里的日期范围参数 (date range parameter)。本程序适用于 Visual Studio .NET 内置的水晶报表 (Crystal Reports for Visual Studio .NET) 及其更新版本。
http://support.crystaldecisions.com/communityCS/FilesAndUpdates/vbnet_web_sub_daterange_param.exe.asp

5、vbnet_win_multirangeparam.exe
该 VB.NET Windows 程序实例示范了如何通过水晶报表引擎 (Crystal Report Engine) 将多个数值传递给货币类型的范围参数 (range parameter)。本程序适用于 Visual Studio .NET 内置的水晶报表 (Crystal Reports for Visual Studio .NET) 及其更新版本。
http://support.crystaldecisions.com/communityCS/FilesAndUpdates/vbnet_win_multirangeparam.exe.asp

6、vbnet_win_paramengine.exe
该 VB.NET Windows 程序实例示范了如何使用引擎对象模型 (engine object model) 将多个数值传递给一个离散参数字段 (discrete parameter field)。本程序适用于 Visual Studio .NET 内置的水晶报表 (Crystal Reports for Visual Studio .NET) 及其更新版本。
http://support.crystaldecisions.com/communityCS/FilesAndUpdates/vbnet_win_paramengine.exe.asp

7、vbnet_win_paramsub.exe
该 VB.NET Windows 程序实例示范了如何通过主报表参数字段定义 (Parameter Field Definitions) 集合将日期范围传递给子报表的参数。本程序适用于 Visual Studio .NET 内置的水晶报表 (Crystal Reports for Visual Studio .NET) 及其更新版本。
http://support.crystaldecisions.com/communityCS/FilesAndUpdates/vbnet_win_paramsub.exe.asp

8、vbnet_win_paramviewer.exe
该 VB.NET Windows 程序实例示范了如何使用查看器对象模型 (viewer's object model) 将多个数值传递给一个离散参数字段 (discrete parameter field)。本程序适用于 Visual Studio .NET 内置的水晶报表 (Crystal Reports for Visual Studio .NET) 及其更新版本。
http://support.crystaldecisions.com/communityCS/FilesAndUpdates/vbnet_win_paramviewer.exe.asp

9、vbnet_win_rangeparameters.exe
该 VB.NET Windows 程序实例示范了如何使用查看器对象模型 (viewer's object model) 将初始值和最终值传递给范围参数字段 (range parameter field),以及将多个数值传递给离散参数字段 (discrete parameter field)。本程序适用于 Visual Studio .NET 内置的水晶报表 (Crystal Reports for Visual Studio .NET) 及其更新版本。
http://support.crystaldecisions.com/communityCS/FilesAndUpdates/vbnet_win_rangeparameters.exe.asp
haibodotnet 2003-12-10
  • 打赏
  • 举报
回复
在水晶报表中筛选记录的三种解决方案……(作者:海波.NET,更新:2003-11-19)

目录:
一、解决方案一:报表数据访问使用推模型
二、解决方案二:记录选定公式运行时自定义
三、解决方案三:将参数合并到记录选定公式
----------------------------------
一、解决方案一:
报表数据访问使用推模型

需要开发人员编写代码以连接到数据库,执行 SQL 命令以创建与报表中的字段匹配的记录集或数据集,并且将该对象传递给报表。该方法使您可以将连接共享置入应用程序中,并在 Crystal Reports 收到数据之前先将数据筛选出来。
----------------------------------
二、解决方案二:
记录选定公式运行时自定义

1、通过查看器控件传递选定公式
[Visual Basic]
Dim SelectFormula As String
SelectFormula = "{客户.去年销售额} > " & textBox1().Text
crystalReportViewer1.SelectionFormula = SelectFormula
[C#]
string selectFormula;
selectFormula = "{客户.去年销售额} > " + textBox1.Text;
crystalReportViewer1.SelectionFormula = selectFormula;
[C++]
String* selectFormula;
selectFormula->Concat
("{客户.去年销售额} > ", textBox1->Text);
crystalReportViewer1->SelectionFormula = selectFormula;

2、通过报表对象传递选定公式
[Visual Basic]
Dim selectFormula As String
selectFormula = "{客户.去年销售额} > " & textBox1().Text
Report.DataDefinition.RecordSelectionFormula = selectFormula
[C#]
string selectFormula;
selectFormula = "{客户.去年销售额} > " + textBox1.Text;
Report.DataDefinition.RecordSelectionFormula = SelectFormula;
[C++]
String* selectFormula;
selectFormula->Concat
("{客户.去年销售额} > ", textBox1->Text);
Report->DataDefinition->RecordSelectionFormula = selectFormula;

3、刷新相应的报表,方法是使用以下代码行结束这段代码:
CrystalReportViewer1.RefreshReport()
该公式得以更新,将使用新的最小值(上年度的销售额)。
----------------------------------
三、解决方案三:
将参数合并到记录选定公式

参数字段不必放入报表中即可在记录或组选定公式中使用。创建参数字段,然后像插入其他字段那样将其输入到公式中。

用公式进行记录选定
若要减少从数据库服务器传输的数据量并改善性能,请将参数字段直接合并到记录选定公式中。
下面的记录选定公式提请用户输入销售配额,并只显示去年销售额超过销售配额的所有客户。
{客户.去年销售额} > {?SalesQuota}

需要开发人员编写代码在运行时传递参数值……
aspritionisdead 2003-12-09
  • 打赏
  • 举报
回复
给你个用选择公式的例子:
1、构造选择公式
string selectFormula =
"{yourTableName.yourDateFieldName} = DateTime(2203,1,1)";
yourTableName是你的数据表名字,yourDateFieldName是你的表里的日期字段名字.

2、将选择公式赋值给CrystalReportViewer
CrystalReportViewer1.SelectionFormula = selectFormula;

3、显示报表
CrystalReportViewer1.Load(@"D:\xxx\xxx.rpt");
或者CrystalReportViewer1.ReportSource = reportDocument1;
总之用一种方法显示就好了.


至于把数据传到报表里也有很多方法,最简单你可以在报表里加个文本对象,然后在代码里面设定那个文本对象值为用户选择的日期.
还有一种方法是你做报表的时候就根据日期分组.
michaelowenii 2003-12-08
  • 打赏
  • 举报
回复
你可以根据用户的条件,重新到数据库中查询,然后传递数据集到水晶报表.
simanh 2003-12-08
  • 打赏
  • 举报
回复
在用Crystal Report设计报表的时候,用它的“选择专家”,一try你就知道怎么做了,很简单的
py3zhsh 2003-12-08
  • 打赏
  • 举报
回复
學習
天行健2002 2003-12-08
  • 打赏
  • 举报
回复
在水晶报表中放个文本字段世纪末 txtYears
((TextObject)reportDoc.ReportDefinition.ReportObjects["txtYears"]).Text =
"2003-1-1"
飞不动 2003-12-08
  • 打赏
  • 举报
回复
方法一、水晶报表中有参数字段,你可以在报表中引用这些参数字段去得到你所要的记录。你可以把参数字段传到报表中。
方法二、向水晶报表传入DataSet。这里你可以先在程序中处理你的参数,得到相应的记录集,再传给报表。
qimini 2003-12-08
  • 打赏
  • 举报
回复
呵呵~~~去问海波.NET
lqflsh 2003-12-08
  • 打赏
  • 举报
回复
不好意思,我要的是代码。

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧