2016-06-11 9 views
1

Ich habe einen Bericht und ein DataSet. Das DataSet verfügt über 2 Tabellen, die als Projekte und die anderen als ShipListItems bezeichnet werden. Ich versuche, meine Berichtsdatenquelle mithilfe des Datasets zu füllen.Füllen von Crystal Reports mit DataSet und Entity Framework

Ich bin mir nicht sicher, wo ich falsch liegen kann. Ich habe this gefunden, aber ich sehe wirklich nicht den Unterschied, den ich tue.

 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 

ich tun 2 Ausnahmen

Zusätzliche Informationen sagen: Mixed-Modus Montage gegen Version gebaut wird ‚v2.0.50727‘ der Laufzeit und kann nicht in der 4.0-Laufzeit ohne zusätzliche Konfigurationsinformationen geladen werden.

und

Zusätzliche Informationen: Die Datei oder Assembly ‚Datei laden: /// C: \ Program Files (x86) \ SAP Business \ Crystal Reports für .NET Framework 4.0 \ Common \ SAP BusinessObjects Enterprise XI 4.0 \ win32_x86 \ dotnet1 \ crdb_adoplus.dll 'oder eine seiner Abhängigkeiten. Die angegebene Datei wurde vom System nicht gefunden.

Die Ausnahmen passieren auf report.SetDataSource(ds);.

danke für Ihre Hilfe!

Antwort

1

Meine Antwort war, dass ich zur Konfigurationsdatei hinzufügen musste.

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

Wie jeder sagt: Sie fügen einfach Folgendes in die Datei app.config ein.

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

Der eigentliche Trick besteht darin, die App zu finden, die Ihr Werkzeug ist, wenn Power Shell ein Plugin ist:

nur mit dem Programmiertool Laufen (In meinem Beispiel Visual Studio mit einer PS-Lösung loaded):

  • Öffnen Sie den Task-Manager und Powershell-Prozess finden (wird es zwei sein ... so werden Sie unter zwei „app.config“ Dateien erstellen müssen
  • Rechtsklick Prozess. und wählen Sie "Dateispeicherort öffnen". (PowerShellToolsProcessHost.exe und PowerShellToolsProcessHostConsole.exe wo beide in einem zufällig generierten Extensions-Ordner in meinem Fall)
  • Erstellen eine zwei Dateien mit dem oben xml
    • PowerShellToolsProcessHost.exe.config
    • PowerShellToolsProcessHostConsole.exe.config
  • Dann sollten Sie wahrscheinlich Ihre Anwendung neu starten (in meinem Fall VS)

Hinweis: Sie müssen die Berechtigung zum Bearbeiten des Ordners ProgramFiles (x86) haben.Allerdings Ich hatte diese Dateien bereits in meinem USERS-Verzeichnis, außer dass sie in einem anderen zufällig generierten Ordner waren. Um meinen Post zu verbessern: Sie könnten einfach versuchen, sicherzustellen, dass Ihr USERS-Pfad mit dem in Ihrem ProgramFiles-Ordner übereinstimmt.

  • Was meine Bewerbung wurde Referenzierung: C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ Extensions * mhoykkws.b1d *

vs

  • Wo Meine nutzlosen verwaisten Dateien waren: C: \ Benutzer \ Benutzer \ AppData \ Lokal \ Microsoft \ VisualStudio \ 14.0 \ Erweiterungen \ 43kbvqc0.xoo