【问题标题】:Populating Crystal Report using DataSet and Entity Framework使用 DataSet 和实体框架填充 Crystal Report
【发布时间】:2016-10-12 10:00:48
【问题描述】:

我有一个报告和一个数据集。 DataSet 有 2 个表,一个称为 Projects,另一个称为 ShipListItems。我要做的是使用数据集填充我的报表数据源。

我不确定哪里会出错。我找到了this,但我真的看不出我在做什么。

        private async void ChangeReport(ReportType reportType)
    {
        var ds = new ShipListDataset();
        await LoadDataSet(ds);
        
        var path = GetReportPath(reportType); //Just returns correct path for different reports
        var report = new ReportDocument();
        report.Load(path);

        report.SetDataSource(ds);
        ReportsViewer.ViewerCore.ReportSource = report;
    }//Change Report


        private async Task LoadDataSet(ShipListDataset ds)
    {
        var data = await _dataProvider.ProjectAsync();
        var projects = data.Select(x => new
        {
            Client = x.Client, JobNumber = x.JobNumber, Event = x.Event, Booth = x.Booth
        });
        
        projects.ForEach(x => ds.Projects.AddProjectsRow(x.Client, x.JobNumber, x.Event, x.Booth));

        foreach (var project in data.Select(x => x.ShipListItems))
        {
            foreach (var shipListItem in project)
            {
                ds.ShipListItem.AddShipListItemRow(Trailer: shipListItem.Trailer, Crate: shipListItem.CrateNumber, PartCode: shipListItem.PartNumber, Description: shipListItem.ItemDescription, Notes: shipListItem.Notes, ShippedOut: shipListItem.Out, Rented: !shipListItem.CustomItem, Custom: shipListItem.CustomItem, SaveGraphics: (shipListItem.SaveGraphics == SavedGraphics.Saved), GraphicsDisposed: (shipListItem.SaveGraphics == SavedGraphics.Disposed), Inbound: Convert.ToInt32(shipListItem.Inbound), InboundNotes: shipListItem.Notes, ColorScheme: shipListItem.ColorScheme, Quantity: shipListItem.Quantity, parentProjectsRowByProjects_ShipListItem: ds.Projects.FirstOrDefault(x => x.JobNumber == shipListItem.JobNumber));
            } //foreach ShipListItem
        } //foreach Project
        ds.AcceptChanges();
    } //Load DataSet

我确实得到了 2 个例外情况

附加信息:混合模式程序集是针对运行时版本“v2.0.50727”构建的,如果没有附加配置信息,则无法在 4.0 运行时中加载。

其他信息:无法加载文件或程序集 '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' 或其依赖项之一。系统找不到指定的文件。

异常发生在report.SetDataSource(ds);

感谢您的帮助!

【问题讨论】:

    标签: c# crystal-reports dataset entity-framework-6


    【解决方案1】:

    我的回答是我必须添加到配置文件中。

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

    【讨论】:

      【解决方案2】:

      正如大家所说:您只需将以下内容添加到 app.config 文件中。

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

      真实诀窍是找到电源外壳是一个插件时工具使用的应用程序:

      只有您的编程工具运行(在我的示例Visual Studio中加载PS解决方案):

      • 打开任务管理器并找到Powershell进程(会有两个...所以你必须在下面创建两个“app.config”文件。
      • 右键单击进程并选择“打开文件位置”。 (在我的例子中,PowerShellToolsProcessHost.exe 和 PowerShellToolsProcessHostConsole.exe 都在随机生成的 Extensions 文件夹中)
      • 用上面的xml创建两个文件
        • PowerShellToolsProcessHost.exe.config
        • PowerShellToolsProcessHostConsole.exe.config
      • 那么您可能应该重新启动您的应用程序(在我的情况下是 VS)

      注意:您必须拥有编辑 ProgramFiles(x86) 文件夹的权限。但是 em>我确实在我的用户目录中拥有这些文件,但它们在不同随机生成的文件夹下。要在我的帖子上改进:您可能只需确保您的用户路径与ProgramFiles文件夹中的路径匹配。

      • 我的应用程序引用的内容:C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions*mhoykkws.b1d*

      • 其中我无用的孤儿文件是:C:\ users \ userme \ appdata \ local \ microsoft \ visualstudio \ 14.0 \ extensions \ 43kbvqc0.xoo

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-07-11
        • 2019-11-02
        • 2013-09-02
        • 2017-05-10
        • 2017-09-09
        • 2011-04-18
        • 2017-01-30
        相关资源
        最近更新 更多