首页 文章

使用Crystal Reports ReportDocument

提问于
浏览
8

我最近开始在c#windows应用程序(表单)中使用Visual Studio 2010和SharpDevelop的最新版Crystal Reports . 我从SAP下载了最新的Visual Studio 2010 Crystal DLL,并手动创建了对以下内容的引用

using CrystalDecisions.CrystalReports;
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.ReportSource;

然后我创建一个ReportDocument,以便我可以打开一个rpt文件:

ReportDocument rptDoc = new ReportDocument();

这一切都很好 . 当我尝试使用rtpDoc对象做任何事情时,问题就出现了;

rptDoc.Load(@"c:\DialLeadsByDistributor.rpt");

它's as if the compiler doesn' t意识到它是一个类对象,尽管当我将鼠标悬停在变量上时它正确报告为 CrystalDecisions.CrystalReports.Engine.ReportDocument ,但不仅intellisense没有向我显示该对象的任何方法或属性,我得到以下编译器错误让我难过:

无效的标记'('在类,结构或接口成员声明中

它将上述陈述称为违规行......

任何人都可以对此有所了解吗?如果我查看ReportDocument类的元数据,则确实包含三个Load方法,第一个方法接受一个字符串,即rpt文件路径 . 在Visual Studio 2010和SharpDevelop中出现此问题的事实至少是一致的,但对我来说仍然没有意义 .

2 回答

  • 1

    试试这个代码......它在VS2010和sharpdevelop4中都有效:

    using System;
    using System.Drawing;
    using System.Windows.Forms;
    using CrystalDecisions.CrystalReports;
    using CrystalDecisions.CrystalReports.Engine;
    using CrystalDecisions.ReportSource;
    using CrystalDecisions.Windows.Forms;
    
    namespace myapp
    {
    
    public partial class tstfrm1 : Form
    {
        public tstfrm1()
        {
    
            InitializeComponent();
    
            ReportDocument rptDoc = new ReportDocument();
            rptDoc.Load(@"C:\CrystalReport1.rpt");
            /*If you have a datasource, link it like below*/
            //rptDoc.SetDataSource(dataset.Tables["tripsheet"]);
            CrystalReportViewer crystalReportViewer1 = new CrystalReportViewer();
            crystalReportViewer1.ReportSource = rptDoc;
            crystalReportViewer1.Refresh(); 
            this.Controls.Add(crystalReportViewer1);
            crystalReportViewer1.Dock = DockStyle.Fill;
        }
    }
    

    }

  • -1

    试着摆脱@符号 . 我目前正在围绕同样的想法 Build 一个程序,我没有包含这个标志,没有任何问题 .

相关问题