zoukankan      html  css  js  c++  java
  • VS2005中使用水晶报表PUSH模式完成主从表设计

     1、在App_Code文件夹上右键添加新项,选择【数据集】,命名为DataSet1.xsd,如下图:

    2、出现TableAdapter配置向导,点击取消,同时把界面上的DataTable1和DataTable1TableAdapter删除,出现空白界面后,点击“数据集工具箱”

    3、拖入两个DataTable,一个是类别Category表,一个是商品Product表,在水晶报表中显示商品信息时,不想显示本表中的类别编号,而想根据这个类别编号关联到类别表中,把类别名称取出,显示报表中。在DataTable上右键添加列,将你想显示在水晶报表中的列全部添入,并设置各列的数据类型,表名、列名不一定跟数据库表中的设置完全相同。(数据库中的类别是CategoryID,此处用的是Category,故意没有保持一致)

    3、将Category表中的CategoryID选中后拖向Product表中的Category,建立两表之间的主外键关联(从主键拖向外键),并按图示设置:

    点击“确定”后,出现下图:

    4、在解决方案中右键,添加新项,选择Crystal报表,如下图:

    5、点击“添加”后,选择使用使用报表向导,如图

    6、按照图示中,进行选择,然后直接点击“完成”

    7、点击“下一步”,创建两表之间的关系,同样是从Category表中的CategoryID拖向Product表中的Category,如下图:

    之后直接点击“完成”。

    8、在出现的界面中,左侧选择数据集中的表,选择Product表中的ProdID、ProdName、AddTime和Category表中的CategoryName拖入详细资料即可。最后将完成的CrystalReport.rpt文件拖入到App_Data文件夹中。

    9、新建一个Web窗体,在工具箱的Crystal Reports项中拖入一个CrystalReportViewer控件,ID默认为CrystalReportViewer1,切换到代码视图中,添加如下代码:

     

    代码
     1 ...
     2 using CrystalDecisions.Shared;
     3 using CrystalDecisions.CrystalReports.Engine;
     4 using System.Data.SqlClient;
     5 
     6 protected void Page_Load(object sender, EventArgs e)
     7     {
     8         //if (!IsPostBack)  报表页面中不能加此条件
     9          //{
    10             SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["strShop"].ConnectionString);
    11            //获取记录集,最终获取的记录集要跟xsd的结构一致
    12             //利用Fill方法装载时,先装载父表,再装载子表,此处先装载Category表,再装载Product表
    13              SqlDataAdapter da ;
    14             DataSet1 ds = new DataSet1();
    15             da = new SqlDataAdapter("select * from Category", conn);
    16             //表名要与xsd中的一致            
    17             da.Fill(ds, "Category");
    18             da= new SqlDataAdapter("select ProdID,ProdName,CategoryID as Category,Price,AddTime,Picture from Product",conn); 
    19             //表名要与xsd中的一致
    20              da.Fill(ds, "Product");
    21            //使用报表对象加载报表
    22              ReportDocument rd = new ReportDocument();
    23            rd.Load(Server.MapPath ("~/App_Data/CrystalReport.rpt"));
    24            //绑定数据集,一个报表用一个数据集
    25              rd.SetDataSource(ds);
    26            CrystalReportViewer1.ReportSource = rd;
    27       //}
    28     }

    10、运行此页面即可预览报表。

  • 相关阅读:
    70.BOM
    69.捕获错误try catch
    68.键盘事件
    523. Continuous Subarray Sum
    901. Online Stock Span
    547. Friend Circles
    162. Find Peak Element
    1008. Construct Binary Search Tree from Preorder Traversal
    889. Construct Binary Tree from Preorder and Postorder Traversal
    106. Construct Binary Tree from Inorder and Postorder Traversal
  • 原文地址:https://www.cnblogs.com/lavenderzh/p/1621804.html
Copyright © 2011-2022 走看看