如何使用LINQ to SQL查看晶体报告上的数据

时间:2015-03-01 23:39:39

标签: c# linq crystal-reports

我有Form.cs,其中有“crystal report viewer”和“button”,当我按下按钮时,执行以下代码。但是,当我运行此代码时,会出现以下错误“应用程序已停止工作”。为什么?

 private void button1_Click(object sender, EventArgs e)
 {
    DateTime dt = DateTime.ParseExact("2012/11/11", "yyyy/MM/dd", CultureInfo.InvariantCulture);
    DataClasses1DataContext dc = new DataClasses1DataContext();
    var data = (from a in dc.GetTable<Voucher>()
               where a.V_Date == dt
               select new { a.V_No }).ToList();

    CrystalReport1 cr = new CrystalReport1();
    cr.Load(@"CrystalReport1.rpt");
    cr.SetDataSource(data);
    crystalReportViewer1.ReportSource = cr;
 }

此外我正在使用SQL Server 2012,当我创建CrystalReport1时,我选择了“OLE DB&gt;&gt; Microsoft OLE DB Provider for SQL server&gt;&gt; Integrated Security&gt;&gt; Table&gt;&gt; Table field”< / p>

编辑:

使用调试器我在此行发现错误cr.SetDataSource(Data);

An unhandled exception of type 'System.IO.FileNotFoundException' occurred in mscorlib.dll 

Additional information: Could not load file or assembly 'file:///C:\Program Files (x86)\SAP BusinessObjects\Crystal Reports for .NET Framework 4.0\Common\SAP BusinessObjects Enterprise XI 4.0\win32_x86\dotnet1\crdb_adoplus.dll' or one of its dependencies. The system cannot find the file specified.

2 个答案:

答案 0 :(得分:1)

我找到了答案,代码没有任何问题。在App.config文件中。我替换了这个

<startup > 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
</startup>

用这个

<startup useLegacyV2RuntimeActivationPolicy="true"> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
</startup>

现在一切正常。 感谢大家的帮助。

答案 1 :(得分:1)

在解决方案资源管理器中的App.config文件中,只需替换此行

即可
<startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
</startup>

用这个

<startup useLegacyV2RuntimeActivationPolicy="true"> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
</startup>

它应该有效。