這個問題,搞了兩天,Google了好久,大家都說解決是那個,但我照作怎麼樣就是無法解決....
我在Visual Studio 2012中安裝Crystal Studio for VS2012。
畫好Crystal Report,也寫好呼叫Crystal Report的C#程式....
ReportDocument crRPT = new ReportDocument();
// Your .rpt file path will be below
crRPT.Load(sReportName);
// Add Report Parameters
foreach (FieldDef fld in fReportParameters)
{
crRPT.SetParameterValue(fld.FieldName.ToString(), fld.FieldValue);
}
//set dataset to the report viewer.
crRPT.SetDataSource(dtSource);
CRViewer.ReportSource = crRPT;
CRViewer.Refresh();
執行時,到了"crRPT.SetDataSource(dtSource);"這一條,先會跳出...
我建了dotnet1資料夾再複製DLL檔案,再執行....出現...
查Google,混合模式,在v4.0執行v2.0要加useLegacyV2RuntimeActivationPolicy="true",我在app.config(這是Winform)中加入後,app.config內容是這樣子...
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
</startup>
<system.serviceModel>
<bindings />
<client />
</system.serviceModel>
</configuration>
執行後...還是出現混合模式問題...
繼續Google,又有人說要在app.config中加入
<runtime>
<NetFx40_LegacySecurityPolicy enabled="true"/>
</runtime>
還是一樣問題,還有人說...所以我改app.config...
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v2.0.50727" />
<supportedRuntime version="v4.0" />
</startup
問題照舊....後來看到一篇是說Crystal Report是SAP在搞,SAP說是硬不起來公司在亂搞...
其實是Crystal Report Runtime還是v2.0的產物,到了v4.0有時候會有問題,這是看天時地利人和的...呃...不....是看電腦上的安裝。但,又沒詳說。
好吧!我已經沒有什麼方法可以解決這個問題了。
各位聰明的邦友,可有妙方?
<startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> </startup> <runtime> <generatePublisherEvidence enabled="false" /> </runtime>
我也很想知道這個答案,在 VS2010 + CR 的確要照上面的方式去做,才不會出現問題。
從 VS2003、VS2005、VS2008、VS2010 + CR 一路上小問題不斷,而且 VS2010(含)
以後,有種 CR 被拋棄的感覺。
這個問題,有解答了。
不過成了自問自答。
主要是專案結構導致的問題...
我是用Visual Studio 2012,Crystal Report是下載http://scn.sap.com/docs/DOC-7824中的support pack 8...如下圖紅框所指...
目前這個專案的方案總管如下圖所示:
共有60個子專案。
而母專案的進入點和呼叫Crystal Report的子專案有不同的app.config...
因為整個專案是MDI結構的WinForm,所以要改app.config中的<startup>標籤為
<pre class="c" name="code"> <startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
這樣就可以正確執行Crystal Report報表了。
simon581923提到:
母專案的進入點
是方案總管中的紅框所指的Form.cs...
因為借這個樓來自問自答,就選這個惟一回答當最佳解答了。