2016-06-11 3 views
1

У меня есть отчет и DataSet. В DataSet есть две таблицы, называемые Projects, а другая - ShipListItems. То, что я пытаюсь сделать, это заполнить источник данных моего отчета с помощью набора данных.Заполнение Crystal Report с использованием DataSet и Entity Framework

Я не уверен, где я могу пойти не так. Я нашел 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 выполнении без дополнительной информации о конфигурации.

и

Дополнительная информация: файл не удалось загрузить файл или сборку»: /// C: \ Program Files (x86) \ SAP BusinessObjects \ Crystal Reports для .NET Framework 4.0 \ Common \ SAP BusinessObjects Enterprise XI 4.0 \ win32_x86 \ dotnet1 \ crdb_adoplus.dll или одной из его зависимостей. Система не может найти указанный файл.

Исключения происходят на report.SetDataSource(ds);.

Благодарим за помощь!

ответ

1

Мой anwser был тем, что мне пришлось добавить в конфигурационный файл.

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

Как все говорят: вы просто добавляете следующее в файл app.config.

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

РЕАЛЬНАЯ Хитрость заключается в том, чтобы найти приложение, которое ваш инструмент использует при включении питания Shell плагин:

Только с вашим инструментом программирования Running (В моем примере Visual Studio с PS решением нагруженным):

  • Открыть диспетчер задач и найти процесс Powershell (Там будет два ... так что вам придется создать два файла «app.config» ниже
  • процесса правой кнопки мыши. и выберите «открыть местоположение файла». (PowerShellToolsProcessHost.exe и PowerShellToolsProcessHostConsole.exe, где и в случайно сгенерированных папке Extensions в моем случае)
  • Создать два файла с выше XML
    • PowerShellToolsProcessHost.exe.config
    • PowerShellToolsProcessHostConsole.exe.config
  • Тогда вы, вероятно, следует перезапустить приложение (в моем случае VS)

Примечание: У вас должно быть разрешение на редактирование папки ProgramFiles (x86).Однако У меня были эти файлы уже в моем каталоге USERS, за исключением того, что они находились под другой случайно созданной папкой. Чтобы улучшить мой пост: вы МОЖЕТЕ попробовать просто убедиться, что ваш путь USERS соответствует таковому в папке 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
Смежные вопросы