iT邦幫忙

1

Visual Studio 2012中執行Crystal Report的問題

賽門 2014-03-11 16:57:4818471 瀏覽

這個問題,搞了兩天,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>
賽門 iT邦超人 1 級 ‧ 2014-03-11 17:25:30 檢舉
一樣的月光~~~一樣的照在新店溪....
一樣的錯誤~~~一樣的出在Visual Studio~~~
shuan0114 iT邦好手 1 級 ‧ 2014-03-13 08:58:22 檢舉
simon大~ 有嘗試用別的版本(VS 2010)或瀏覽器,來執行Crystal Report嗎?

※小弟不會寫程式,只懂非常皮毛!!
賽門 iT邦超人 1 級 ‧ 2014-03-19 09:15:57 檢舉
按太快..還有個訊息沒寫到...
引用Crystal Report的子專案中的app.config及其上層母專案的app.config都要修改<startup>標籤。
如果有多層,每一層的app.config都要改。

如果是WebForm,就改web.config。
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

6
tamp0001
iT邦新手 3 級 ‧ 2014-03-13 08:44:10
最佳解答

我也很想知道這個答案,在 VS2010 + CR 的確要照上面的方式去做,才不會出現問題。
從 VS2003、VS2005、VS2008、VS2010 + CR 一路上小問題不斷,而且 VS2010(含)
以後,有種 CR 被拋棄的感覺。

賽門 iT邦超人 1 級 ‧ 2014-03-19 09:09:08 檢舉

這個問題,有解答了。
不過成了自問自答。
主要是專案結構導致的問題...
我是用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>標籤為

&lt;pre class="c" name="code">    &lt;startup useLegacyV2RuntimeActivationPolicy="true"> 
        &lt;supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    &lt;/startup>

這樣就可以正確執行Crystal Report報表了。

賽門 iT邦超人 1 級 ‧ 2014-03-19 09:10:13 檢舉

simon581923提到:
母專案的進入點

是方案總管中的紅框所指的Form.cs...

賽門 iT邦超人 1 級 ‧ 2014-03-19 09:11:14 檢舉

因為借這個樓來自問自答,就選這個惟一回答當最佳解答了。

我要發表回答

立即登入回答