海波.NET
问题:
如何在水晶报表中控制每页的行数啊(比如每页20条记录)???
——————————————————————————————————————
解决方案一
1、右键单击“详细资料”节的灰色横条,选择“节专家”,进入“节专家”对话框;
2、在“公用”选项卡,选中“在后面页新建页”复选框;
3、单击后面的“x+2”按钮,进入“公式工作室 - 格式公式编辑器”对话框;
4、输入“RecordNumber mod 20 = 0”,并单击左上角的“保存并关闭”按钮。
注意:是 Crystal Report 语法。OK

解决方案 »

  1.   

    海波.NET
    问题:
    如何在水晶报表中控制每页的行数啊(比如每页20条记录)???
    ——————————————————————————————————————
    解决方案一
    1、右键单击“详细资料”节的灰色横条,选择“节专家”,进入“节专家”对话框;
    2、在“公用”选项卡,选中“在后面页新建页”复选框;
    3、单击后面的“x+2”按钮,进入“公式工作室 - 格式公式编辑器”对话框;
    4、输入“RecordNumber mod 20 = 0”,并单击左上角的“保存并关闭”按钮。
    注意:是 Crystal Report 语法。OK
      

  2.   

    大家一起去这个贴子支持一下!!!
    http://expert.csdn.net/Expert/TopicView1.asp?id=2291055
    CSDN 开个 Crystal Report 版吧!!!&&&我与水晶报表……
    haibodotnet 海波.NET
      

  3.   

    to haibodotnet(海波.NET) :
    第一个问题已经解决,第二个怎么解决?谢谢
      

  4.   

    我们采用下面的几步使用Push模式执行水晶报表:
    1. 设计一个DataSet
    2. 创建一个.rpt文件同时将其指定给上一步建立的DataSet。
    3. 在aspx页面中拖放一个CrystalReportViewer控件同时将其与前面的rpt文件建立联系。
    4. 在代码中访问数据库并把数据存入DataSet
    5. 调用DataBind方法。
     设计一个DataSet
    1) 右击“解决方案浏览器”,选择“添加”--“添加新项”-->“数据集”  
    2) 从“服务器资源管理器”中的“SQL Server”中拖放“Stores”表(位于PUBS数据库中)。
    3) 此时在数据集中就会有一个Stores表的结构图。 
    - .xsd文件中仅仅包含一个结构图,但是不会有任何数据在里面。
    创建 .rpt 文件 :
    4) 使用上面的介绍过的方法创建此文件,唯一的不同就是使用数据集来代替前面的直接连接数据。
    5)建立.rpt文件之后,右击“详细资料”-->"添加/删除数据库“
    6) 在”数据库专家“窗口中,展开”项目数据“(代替以前的OleDb),展开“ADO.Net数据集”--"DataSet1“,选择”Stores“表。
    7) 将”Stores"表添加到“选定的表”中,点击“OK”
    8) 使用PULL模式下的方法,建立一个WebForm
    建立一个Crystal Report Viewer 控件
    9) 建立一个Crystal Report Viewer 控件,并设定其属性,此处与PULL模式下是一致的。
    Code Behind 代码:
    10) 在Page_Load方法中使用下面的子函数:
    VB.Net代码:
        Sub BindReport()
            Dim myConnection As New SqlClient.SqlConnection() 
            myConnection.ConnectionString= "server= (local)\NetSDK;database=pubs;Trusted_Connection=yes"
            Dim MyCommand As New SqlClient.SqlCommand()
            MyCommand.Connection = myConnection
            MyCommand.CommandText = "Select * from Stores"
            MyCommand.CommandType = CommandType.Text
            Dim MyDA As New SqlClient.SqlDataAdapter()
            MyDA.SelectCommand = MyCommand
            Dim myDS As New Dataset1()
           '这就是我们在设计模式上使用的DataSet     
            MyDA.Fill(myDS, "Stores")   
            '你不得不使用与你前面DataSet相同名字。
            Dim oRpt As New ReportDocument()
             ' 水晶报表绑定
            oRpt.SetDataSource(myDS)
             ' 设定水晶报表的ReportSource
            CrystalReportViewer1.ReportSource = oRpt
        End Sub
    C#代码:
    private void BindReport()
    {
        string strProvider = "Server=(local);DataBase=pubs;UID=sa;PWD=";
        ReportDocument oCR = new ReportDocument();
        Dataset1 ds = new Dataset1();
        SqlConnection MyConn = new SqlConnection(strProvider);
        MyConn.Open();
        string strSel = "Select * from Stores";
        SqlDataAdapter MyAdapter = new SqlDataAdapter(strSel,MyConn);
        MyAdapter.Fill(ds,"stores");
        oCR.SetDataSource(ds);
        this.CrystalReportViewer1.ReportSource = oCR;
    }
     
    注意:在上面的代码中,你得注意一下oRpt是"Strongly Typed"的报表文件。如果你需要使用"UnTyped"报表,你得使用ReportDocument对象,然后再调用报表文件。
     运行你的程序。 
    11) 运行你的程序
    备注:
    Dim oRpt As New ReportDocument()
    1、在菜单“项目”-〉“添加引用”:CrystalDecisions.CrystalReports.Engine
    2、在源代码里添加引用:using CrystalDecisions.CrystalReports.Engine;
      

  5.   

    参数字段运行时自定义可支持用户在 Crystal 报表中通过参数进行输入。这种参数有多种用途。例如: 使参数基于数据库字段并允许用户指定该字段的值,以便对报表中的数据进行筛选。 
    使用参数字段将条件格式应用于报表。 
    使用参数字段来定义排序顺序。 
    下列示例说明如何在运行时通过代码设置参数字段值。此例解释了如何设置两个不同的参数:第一个是多值离散参数,第二个是区域值参数。在运行时修改参数字段[Visual Basic] 
    ' 声明将参数传递给
    '查看器控件所需的变量。
    Dim paramFields As New ParameterFields()
    Dim paramField As New ParameterField()
    Dim discreteVal As New ParameterDiscreteValue()
    Dim rangeVal As New ParameterRangeValue()' 第一个参数是具有多个值的离散参数。' 设置参数字段的名称,它必须
    '和报表中的参数相符。
    paramField.ParameterFieldName = "客户姓名"' 设置第一个离散值并将其传递给该参数
    discreteVal.Value = "AIC Childrens"
    paramField.CurrentValues.Add(discreteVal)' 设置第二个离散值并将其传递给该参数。
    ' discreteVal 变量被设置为新值,这样,以前的设置
    '就不会被覆盖。
    discreteVal = New ParameterDiscreteValue()
    discreteVal.Value = "Aruba Sport"
    paramField.CurrentValues.Add(discreteVal)' 将该参数添加到参数字段集合。
    paramFields.Add(paramField)' 第二个参数为区域值。paramField 变量
    '被设置为新值,这样,以前的设置就不会被覆盖。
    paramField = New ParameterField()' 设置参数字段的名称,它必须
    '和报表中的参数相符。
    paramField.ParameterFieldName = "客户 ID"' 设置区域的开始值和结束值并将区域传递给该参数。
    rangeVal.StartValue = 42
    rangeVal.EndValue = 72
    paramField.CurrentValues.Add(rangeVal)' 将第二个参数添加到参数字段集合。
    paramFields.Add(paramField)' 将参数字段集合放入查看器控件。
    crystalReportViewer1.ParameterFieldInfo = paramFieldscrystalReportViewer1.ReportSource = "c:\reports\my report.rpt"
    [C#] 
    // 声明将参数传递给
    //查看器控件所需的变量。
    ParameterFields paramFields = new ParameterFields ();
    ParameterField paramField = new ParameterField ();
    ParameterDiscreteValue discreteVal = new ParameterDiscreteValue ();
    ParameterRangeValue rangeVal = new ParameterRangeValue ();// 第一个参数是具有多个值的离散参数。// 设置参数字段的名称,它必须
    //和报表中的参数相符。
    paramField.ParameterFieldName = "客户姓名";// 设置第一个离散值并将其传递给该参数。
    discreteVal.Value = "AIC Childrens";
    paramField.CurrentValues.Add (discreteVal);// 设置第二个离散值并将其传递给该参数。
    // discreteVal 变量被设置为新值,这样,以前的设置
    //就不会被覆盖。
    discreteVal = new ParameterDiscreteValue ();
    discreteVal.Value = "Aruba Sport";
    paramField.CurrentValues.Add (discreteVal);// 将该参数添加到参数字段集合。
    paramFields.Add (paramField);// 第二个参数为区域值。paramField 变量
    //被设置为新值,这样,以前的设置就不会被覆盖。
    paramField = new ParameterField ();// 设置参数字段的名称,它必须
    //和报表中的参数相符。
    paramField.ParameterFieldName = "客户 ID";// 设置范围的开始值和结束值并将该范围传递给
    //该参数。
    rangeVal.StartValue = 42;
    rangeVal.EndValue = 72;
    paramField.CurrentValues.Add (rangeVal);// 将第二个参数添加到参数字段集合。
    paramFields.Add (paramField);// 将参数字段集合放入查看器控件。
    crystalReportViewer1.ParameterFieldInfo = paramFields;
    [C++] 
    // 声明将参数传递给
    //查看器控件所需的变量。
    ParameterFields* paramFields = new ParameterFields ();
    ParameterField* paramField = new ParameterField ();
    ParameterDiscreteValue* discreteVal = new ParameterDiscreteValue ();
    ParameterRangeValue* rangeVal = new ParameterRangeValue ();// 第一个参数是具有多个值的离散参数。
    // 设置参数字段的名称,它必须
    //和报表中的参数相符。
    paramField->ParameterFieldName = "客户姓名";// 设置第一个离散值并将其传递给该参数。
    String* val = "AIC Childrens";
    discreteVal->Value = val;
    paramField->CurrentValues->Add (discreteVal);// 设置第二个离散值并将其传递给该参数。
    // discreteVal 变量被设置为新值,这样,以前的设置
    //就不会被覆盖。
    discreteVal = new ParameterDiscreteValue ();
    val = "Aruba Sport";
    discreteVal->Value = val;
    paramField->CurrentValues->Add (discreteVal);// 将该参数添加到参数字段集合。
    paramFields->Add (paramField);// 第二个参数为区域值。paramField 变量
    //被设置为新值,这样,以前的设置就不会被覆盖。
    paramField = new ParameterField ();// 设置参数字段的名称,它必须
    //和报表中的参数相符。
    paramField->ParameterFieldName = "客户 ID";// 设置范围的开始值和结束值并将该范围传递给
    //该参数。
    rangeVal->StartValue = __box(42);
    rangeVal->EndValue = __box(72);
    paramField->CurrentValues->Add (rangeVal);// 将第二个参数添加到参数字段集合。
    paramFields->Add (paramField);// 将参数字段集合放入查看器控件。
    crystalReportViewer1->ParameterFieldInfo = paramFields;crystalReportViewer1->ExportReport();
      

  6.   

    海波.NET
    问题:
    动态改变水晶报表中的文本字段
    ————————————————————————————————————————————————————————————————————————————
    一、TextObject 类
    ——————————————————————————————————————
    请参见:
    TextObject 成员 | CrystalDecisions.CrystalReports.Engine 命名空间
    ——————————————————————————————————————
    要求:
    命名空间:CrystalDecisions.CrystalReports.Engine 
    平台:Windows 98,Windows NT 4.0,Windows Millennium Edition,Windows 2000
    程序集:CrystalDecisions.CrystalReports.Engine
    语言C#,C++ Visual,Basic
    ——————————————————————————————————————
    表示报表中的文本对象。该对象提供属性和方法,以检索信息和设置报表中的文本对象选项。
    有关该类型所有成员的列表,请参见TextObject 成员。
    Object
    ReportObject
          TextObject
    [Visual Basic] 
    Public Class TextObject
       Inherits ReportObject
    [C#] 
    public class TextObject : ReportObject
    [C++] 
    __gc public class TextObject : public ReportObject
    备注
    通过ReportObjects集合的Item 属性,按索引或按名称来检索ReportObject对象,并将 ReportObject 转换as(为)TextObject。
    ——————————————————————————————————————
    示例
    下面的示例返回 TextObject 对象。 
    [Visual Basic] 
    Private Function GetTextObject _ 
    (ByVal reportObjectName As String) As TextObject
       Dim text As TextObject   ' 按名称获取 ReportObject,将其转换为 TextObject,
       ' 并返回此对象。
       If TypeOf _
       (Report.ReportDefinition.ReportObjects. _ 
       Item(reportObjectName)) Is TextObject Then
          text = _ 
          Report.ReportDefinition.ReportObjects. _ 
          Item(reportObjectName)
          GetTextObject = text
       Else : GetTextObject = Nothing
       End If
    End Function
    [C#] 
    private TextObject GetTextObject
    (string reportObjectName) 
    {
       TextObject text;   // 按名称获取 ReportObject,将其转换为 TextObject,
       //并返回此对象。
       text = Report.ReportDefinition.ReportObjects[reportObjectName] 
       as TextObject;
       if (text != null) return text;
       else return null;
    }
    [C++] 
    TextObject* GetTextObject(String* reportObjectName)
    {
       TextObject* text;   // 按名称获取 TextObject ,将其转换为 TextObject,
       //并返回此对象。
       try
       {
          text = __try_cast<TextObject*>
          (Report->ReportDefinition->
          ReportObjects->Item[reportObjectName]);
          return text;
       }
       catch(System::InvalidCastException*)
       {
          return 0;
       }
    };
    ————————————————————————————————————————————————————————————————————————————
    二、TextObject 成员
    ——————————————————————————————————————
    请参见
    TextObject 类 | CrystalDecisions.CrystalReports.Engine 命名空间
    ——————————————————————————————————————
    公共实例属性
    Border(从 ReportObject 中继承而来) Border。获取 Border 对象。 
    Color System.Drawing.Color。获取或设置对象的颜色。 
    Font System.Drawing.Font。获取 Font 对象。使用ApplyFont方法应用更改。 
    Height(从 ReportObject 中继承而来) Int32。获取或设置以缇为单位的对象高度。 
    Kind(从 ReportObject 中继承而来) ReportObjectKind。获取报表对象的类型。 
    Left(从 ReportObject 中继承而来) Int32。获取或设置以缇为单位的对象左上角位置。 
    Name(从 ReportObject 中继承而来) 字符串。获取对象名。 
    ObjectFormat(从 ReportObject 中继承而来) ObjectFormat。获取 ObjectFormat 对象。  
    Text 字符串。获取或设置文本对象中的文本。 
    Top(从 ReportObject 中继承而来) Int32。获取或设置以缇为单位的对象顶部位置。 
    Width(从 ReportObject 中继承而来) Int32。获取或设置以缇为单位的对象宽度。 
    ——————————————————————————————————————
    公共实例方法
    ApplyFont 应用对System.Drawing.Font对象所做的更改。