zoukankan      html  css  js  c++  java
  • 水晶报表主从关系

    开发环境:VS2010

    水晶报表连接数据源有两种模式,Pull和Push两种,即拉和推。

    •     用水晶报表的“数据库专家”直接连接数据库,报表数据会即时显示在报表上就是“拉”模式,即把数据直接从数据库拉到报表上,这样与程序没有直接关系,即报表与数据库之间多了一个数据连接,与程序的数据库连接没有直接关系。
    •     先在程序中建立数据集,然后设计报表,再用程序填充数据到数据集,这样报表会显示这些数据,这就是“推”模式。

    以下为开发水晶报表的步骤:

    1. 下载水晶报表的插件并安装
    2. 打开vs2010,新建一个WinForm程序,在“资源管理器”中设置此项目的属性,把应用程序的目标框架“.Net Framework 4 Client Profile”改成“.Net Framework 4”即可。这样才能把工具箱中的crystalReportViewer和crystalReportDocument组件显示出来。
    3. 建立“数据库连接”新连接,本例以数据库为原sql2000中的 Northwind数据库,用它的orders 及order details表来做报表。
    4. 在此项目右键->"添加-新建项"弹出框中选择左边的“数据”并选择右边的“数据集”,会产生一个*.xsd的页面,把第3步中建立的orders及order details表拖到此页面中即可(两者关系已建立),如下图
    5. 给此项目添加一水晶报表CrystalReport1.rpt,此处我建立了一个空白报表,然后在此报表左边的“字段资源管理器”中设置“数据库字段”,把第4项的两个ado.net数据集加到这里面来,“推”模式必须要用到ado.net数据集,如下图:

        

      6.因我们建立的是主从表,以是orderid为条件分组的,所在把order details中的一些字段拖动到报表的“详细资料”段中,

      7.建立分组:在“详细资料”空白处右键,插入个组,并以orders.orderid为分组条件,如下图

     

       8.把orders表中的一些字段拖放到报表的"组头"部分,并给其它段中添加一些其它东西,设计完后如下图:

    9.以上做完后,就要用程序把数据填充到数据集中,这样报表才能显示出来。打开Form1的设计部分,把工具箱中的crystalReportViewer拖放到此窗体上,主要用来显示上步中我们建立的报表。 在窗体的Load事件中写如下代码:

     private void Form1_Load(object sender, EventArgs e)
            {
                string connstr = ConfigurationManager.ConnectionStrings["WindowsFormsApplication1.Properties.Settings.NorthwindConnectionString"].ConnectionString;
                SqlConnection conn = new SqlConnection(connstr);
                conn.Open();
                try
                {
                    SqlDataAdapter sda = new SqlDataAdapter("select * from Orders", conn);
                    DataSet ds = new DataSet("ds");
                    sda.Fill(ds, "Orders");
                    sda.SelectCommand.CommandText = "select * from [Order Details]";
                    sda.Fill(ds, "Order Details");
                    ReportDocument rd = new ReportDocument();
                    rd.Load(@"C:UsersAdministratorDesktopWindowsFormsApplication1WindowsFormsApplication1CrystalReport1.rpt");
                    rd.SetDataSource(ds);
                    this.crystalReportViewer1.ReportSource = rd;
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                finally
                {
                    conn.Close();
                }
            }

      代码中的sda.Fill(ds,表名称)中的表名称就是建立xsd页面中表的名称,不一定是数据库表的默认名称,你可以随便改,程序集的数据库连接在app.config配置文件中。ReportDocument是报表的内容,用到填充数据的。

      10.运行程序,会发现弹出错误信息,此时要改动app.config的配置文件,主要改动<startup>节,web项目中不用改动,如下为app.config的内容:

    <?xml version="1.0"?>
    <configuration>
        <configSections>
        </configSections>
        <connectionStrings>
            <add name="WindowsFormsApplication1.Properties.Settings.NorthwindConnectionString" connectionString="Data Source=.;Initial Catalog=Northwind;Persist Security Info=True;User ID=sa;Password=abc123..." providerName="System.Data.SqlClient"/>
        </connectionStrings>
    <!--<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>-->
      <startup useLegacyV2RuntimeActivationPolicy="true">
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
      </startup>
    </configuration>

    11.运行效果图:

      

  • 相关阅读:
    win10 uwp 弹起键盘不隐藏界面元素
    win10 uwp 存放网络图片到本地
    win10 uwp 存放网络图片到本地
    sublime Text 正则替换
    sublime Text 正则替换
    win10 uwp 绘图 Line 控件使用
    win10 uwp 绘图 Line 控件使用
    AJAX 是什么?
    什么是 PHP SimpleXML?
    PHP XML DOM:DOM 是什么?
  • 原文地址:https://www.cnblogs.com/yagzh2000/p/3224600.html
Copyright © 2011-2022 走看看