| 网站镜像:电信 网通 | 加入收藏 | 设为首页

.Net(c#)调用采用“提取模式”获取数据的水晶报表

  • using System;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using CrystalDecisions.CrystalReports.Engine;
    using CrystalDecisions.Shared;
    namespace DLLCrystal
    {
    /// <summary>
    /// frmCrystalView 的摘要说明。
    /// </summary>
    internal class frmCrystalView : System.Windows.Forms.Form
    {
    private CrystalDecisions.Windows.Forms.CrystalReportViewer crView;
    /// <summary>
    /// 必需的设计器变量。
    /// </summary>
    private System.ComponentModel.Container components = null;
    private string[] strInfo;

    public frmCrystalView(string[] strInfomation)
    {
    //
    // Windows 窗体设计器支持所必需的
    //
    InitializeComponent();

    //
    // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
    //
    strInfo=strInfomation;
    }

    /// <summary>
    /// 清理所有正在使用的资源。
    /// </summary>
    protected override void Dispose( bool disposing )
    {
    if( disposing )
    {
    if(components != null)
    {
    components.Dispose();
    }
    }
    base.Dispose( disposing );
    }

    #region Windows 窗体设计器生成的代码
    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {
    this.crView = new CrystalDecisions.Windows.Forms.CrystalReportViewer();
    this.SuspendLayout();
    //
    // crView
    //
    this.crView.ActiveViewIndex = -1;
    this.crView.Dock = System.Windows.Forms.DockStyle.Fill;
    this.crView.Location = new System.Drawing.Point(0, 0);
    this.crView.Name = "crView";
    this.crView.ReportSource = null;
    this.crView.ShowRefreshButton = false;
    this.crView.Size = new System.Drawing.Size(640, 509);
    this.crView.TabIndex = 0;
    //
    // frmCrystalView
    //
    this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
    this.ClientSize = new System.Drawing.Size(640, 509);
    this.Controls.Add(this.crView);
    this.Name = "frmCrystalView";
    this.Text = "预览报表";
    this.Load += new System.EventHandler(this.frmCrystalView_Load);
    this.ResumeLayout(false);

    }
    #endregion

    private void frmCrystalView_Load(object sender, System.EventArgs e)
    {
    ReportDocument rdView=new ReportDocument();
    rdView.Load(@strInfo[0]);
    foreach (Table tbView in rdView.Database.Tables)
    {
    TableLogOnInfo tliView=new TableLogOnInfo();
    tliView=tbView.LogOnInfo;
    tliView.ConnectionInfo.ServerName=strInfo[1];
    tliView.ConnectionInfo.DatabaseName=strInfo[2];
    tliView.ConnectionInfo.UserID=strInfo[3];
    tliView.ConnectionInfo.Password=strInfo[4];
    tbView.ApplyLogOnInfo(tliView);
    }

    string [] strParameter=strInfo[5].Split(new char[] {'+'});
    for (int i=0;i<strParameter.Length;i++)
    {
    string [] strSubParam=strParameter[i].Split(new char[] {'='});
    ParameterValues pvValue=new ParameterValues();
    ParameterDiscreteValue pdvValue=new ParameterDiscreteValue();
    pdvValue.Value=strSubParam[1];
    pvValue.Add(pdvValue);
    rdView.DataDefinition.ParameterFields[strSubParam[0]].ApplyCurrentValues(pvValue);
    }
    crView.ReportSource=rdView;
    this.Location = new Point(0, 0);
    this.Size = new System.Drawing.Size(1024,744);
    }
    }
    }