2012-02-14 555 views
4

我最近開始在c#windows應用程序(窗體)中使用最新版本的Crystal Reports,同時使用Visual Studio 2010和SharpDevelop。我從SAP下載的Visual Studio 2010的最新水晶DLL和手動創建引用以下使用Crystal Reports ReportDocument

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

然後我創建的ReportDocument,這樣我可以打開的RPT文件:

ReportDocument rptDoc = new ReportDocument(); 

這所有編譯都很好。當我嘗試使用rtpDoc對象執行任何操作時會出現問題;

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

就好像編譯器並沒有意識到這是一個類的對象,儘管事實上,當我將鼠標放在變量它正確地報告爲CrystalDecisions.CrystalReports.Engine.ReportDocument,但不僅智能感知不顯示我的任何方法或對象的屬性,我得到它有我難倒了以下編譯器錯誤:

無效令牌「(」類,結構或接口成員聲明

它引用了上面的語句爲鄰狡猾的線...

任何人都可以對此有所瞭解嗎?如果我查看ReportDocument類的元數據,它是否包含三個Load方法,其中第一個使用一個字符串,它是rpt文件路徑。在Visual Studio 2010和SharpDevelop中出現此問題的事實至少是一致的,但對我來說仍然沒有意義。

+0

語法錯誤的地方?發佈更多的代碼...你把rptDoc.Load()放在哪裏? – dotjoe 2015-09-25 13:25:54

回答

-1

試着擺脫@符號。我目前正在圍繞這個想法制定一個計劃,而且我沒有包括這個標誌,也沒有問題。

+2

@符號需要將字符串作爲文字。在c#中\是一個轉義字符。 – reckface 2015-02-12 20:42:07

0

試試這個代碼...它無論是在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; 
    } 
} 

}