方法一、水晶报表中有参数字段,你可以在报表中引用这些参数字段去得到你所要的记录。你可以把参数字段传到报表中。
方法二、向水晶报表传入DataSet。这里你可以先在程序中处理你的参数,得到相应的记录集,再传给报表。

解决方案 »

  1.   

    在水晶报表中放个文本字段世纪末 txtYears
    ((TextObject)reportDoc.ReportDefinition.ReportObjects["txtYears"]).Text = 
    "2003-1-1"
      

  2.   

    在用Crystal Report设计报表的时候,用它的“选择专家”,一try你就知道怎么做了,很简单的
      

  3.   

    给你个用选择公式的例子:
    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;
    总之用一种方法显示就好了.
    至于把数据传到报表里也有很多方法,最简单你可以在报表里加个文本对象,然后在代码里面设定那个文本对象值为用户选择的日期.
    还有一种方法是你做报表的时候就根据日期分组.
      

  4.   

    在水晶报表中筛选记录的三种解决方案……(作者:海波.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}需要开发人员编写代码在运行时传递参数值……
      

  5.   

    官方水晶报表 .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.asp5、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.asp6、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.asp7、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.asp8、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.asp9、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