web-dev-qa-db-ja.com

Crystal Reportが64ビットマシン用に開かれていない

私のレポートは32ビットマシンでは正常に動作しますが、64ビットでは開きません。画面の1つにデータをロードするとメモリの問題が発生するため、64ビットが必要です。32ビットでは機能しません。

  1. Windows 10 64ビット
  2. Crystal Reportsのインストール 13.0.20(最新)のインストールとPCの再起動を試みましたが、動作しませんでした。
  3. Application Target Framework 4.6.2(4.0でも試しましたが、同じエラーです)
  4. Visual Studio 2017コミュニティの使用(VS 2015を試しました)
  5. プラットフォームx64(AnyCPUではない)
  6. レポートは、DataTable、アクティブな接続、またはレポート内のConnectionStringを渡して生成されています
  7. エラーメッセージ

enter image description here

#1を編集

  1. Web.configにはuseLegacyV2RuntimeActivationPolicy="true"が含まれます
  2. X86とx64のDataTablesは同じです enter image description here

#2を編集

レポートを表示するためのソースコードは

CrystalDecisions.CrystalReports.Engine.ReportClass c = new 
    CrystalDecisions.CrystalReports.Engine.ReportClass();

c.FileName = System.IO.Path.Combine(Root_Path, 
    "Reports", "Prod", mFileName);

c.Load();
c.SetDataSource(dt);  // dt => DataTable
c.SetParameterValue("prmSystemDate", Current_Date);

frmReportViewer v = new frmReportViewer();
v.ReportClass = c;
v.Show();

そして、frmReportViewer FormLoadは

private void frmReportViewer_Load(object sender, EventArgs e)
        {
            CRViewer.ReportSource =  ReportClass;
            //CRViewer => 
            //CrystalDecisions.Windows.Forms.CrystalReportViewer
        }

私はどこか間違っていますか?

#3を編集

X86とx64のDataTableは同じです。 (xmlにデータテーブルを保存し、両方のファイルはまったく同じです)。

プロセスモニターは、私のプログラムが次のファイルに対してCreateFile操作を実行することを示します

C:\ WINDOWS\Microsoft.Net\Assembly\GAC_64\CrystalDecisions.Web\v4.0_13.0.2000.0__692fbea5521e1304\CrystalDecisions.Web.dll C:\ WINDOWS\Microsoft.Net\Assembly\GAC_MSIL\CrystalDecisions.Web\v4.0_13 .0.2000.0__692fbea5521e1304\CrystalDecisions.Web.dll C:\ WINDOWS\Microsoft.Net\Assembly\GAC\CrystalDecisions.Web\v4.0_13.0.2000.0__692fbea5521e1304\CrystalDecisions.Web.dll C:\ WINDOWS\Assembly\Assembly\.Web\13.0.2000.0__692fbea5521e1304\CrystalDecisions.Web.dll

すべてがPATH NOT FOUND結果で失敗します。成功する

C:\ Windows\Assembly\GAC_MSIL\CrystalDecisions.Web\13.0.2000.0__692fbea5521e1304\CrystalDecisions.Web.dll

そして、この同じファイルで2つのBUFFER OVERFLOWが発生します。

x64でのみ発生します。 x86のCrystalDecisions.Web.dllに関連する操作はありません。

それは何を示していますか?

9
bjan

まだトラブルシューティングを行い、助けを求めているため、これは完全な「答え」ではないかもしれませんが、コメントするには長すぎます。注目すべきは、現時点ではSAPはVS 2017をサポートしておらず、これに関連する可能性がありますが、VS 2010でも同様のメッセージが表示されているため、ここに進みます...

簡単な推測で、これをapp.configファイルに追加します。

<startup useLegacyV2RuntimeActivationPolicy="true"></startup>

または、より具体的には.NETをターゲットにします。

<startup useLegacyV2RuntimeActivationPolicy="true">
 <supportedRuntime version="v4.0"/>
</startup>

より長いトラブルシューティング思考プロセス。通常、エラーメッセージは、DataSet(この場合はDataTable)がレポートオブジェクトで使用されるときに設定されていないことを示します。ブレークポイントをそこに置いて、これが真であるかどうかを確認できます(SetDataSourceが使用されている場合)。

ここで私が間違っている可能性があり、その時点でも適切に設定されたDataSetがあり、ビューアーで問題が少し後に発生します。私はずっと前にこのような問題に遭遇しました、そして、メモリが役立つならば、これは私が解決策を追跡するために取ったルートでした。

基本的に私の問題は、EXEがビューアーでADOオブジェクトを使用する方法でした。プロジェクトに関するすべての知識がなければ、このパスからデバッグを開始します。

他の質問は、VS 2015で動作しますか? X64で動作し、動作を停止しましたか?レポートオブジェクトにプログラムでアクセスでき、ビューアーでエラーが発生するなど、他の操作でも機能しますか?

2
Jason Hughes

これがあなたに役立つかどうかはわかりません。しかし、サーバー2012で問題が発生したときに、次のソリューションに出会いました。

Framework 4.6により、Crystal Reports for Visual Studioは、Crystalreportsviewer13フォルダーへの一意のフォルダーパスをIISおよびIISExpress DEVで作成します。

環境

Crystal Reports for Visual Studio 
Windows 7
Windows 8.x
Windows 2012 Server
Windows 2016
Windows 10 

問題の再現

このような問題を認識しています。実際には、Win10またはWindows Server 2016のプレビュー(これらのOSはデフォルトで.Net 4.6がインストールされている)だけに限らず、.Net Framework 4.6に関連しています。 .Net 4.6をWin7にインストールすると、同じ問題が発生します。根本的な原因は、MSがWindows Updateを介して.Net Framework 4.6にアップデートを提供することです。その後、.Net 4.6の小さなバージョンが変更されます。 .Net 4.6アプリプールをターゲットとするASP.NET Webサイトの場合、CRビューアーは..\aspnet_client\system_web\4_6_xx\crystalreportviewers13 \からビューアーリソースファイル(jsおよびアイコン)を見つけようとします。ハイライトxxはの小さなバージョンです。 Net Framework 4.6。 Win10 RTMでは、4_6_79です。 Win7 + .Net 4.6では4_6_81で、ユーザーが最新のKB3098786をインストールした場合は4_6_118になります….Net Framework 4.6の次のKBが更新されると、バージョン番号が再び変更されます。そのため、BOSAPケースを作成してください。少なくともSP16では、別の小さなバージョンの.Net Framework 4.6をサポートするために、さらにシンボルリンクを追加する必要があります。そして、より良い解決策は、読み込まれたビューアリソースファイルのパスを変更することです。たとえば、IISの下の仮想フォルダを指します。 Viewer側での修正が必要であり、さらに時間が必要です。SP16での実装を試みます…ありがとう、Soda

解決

開発者はこの問題を認識しており、Service Pack 16で修正プログラムを提供できるはずです。

この問題は、.Net Framework 4.6に関連しています。

根本的な原因は、MSがWindows Updateを介して.Net Framework 4.6にアップデートを提供することです

ASP.NET Webサイトは.Net 4.6アプリプールをターゲットとし、CRビューアーはビューアーリソースファイル(js&アイコン)を見つけようとします

..\aspnet_client\system_web\4_6_xx\crystalreportviewers13 \

Xxは、.Net Framework 4.6の小さなバージョンです。

For example on Win10 RTM, it is 4_6_79;
on Win7+.Net 4.6 it is 4_6_81,
if user installed recent KB3098786 it will be 4_6_118x. 

.Net Framework 4.6の次のKBアップデートがインストールされると、バージョン番号が再び変更されます。

現在の回避策は、Web.Configファイルを更新して、更新されたバージョンのフレームワークを含めることです。

そして、\ CrystalReportsViewer13フォルダーを新しいパスにコピーします。

..\aspnet_client\system_web\4_6_xx\crystalreportviewers13 \

更新および最新のダウンロードについては、次のリンクにアクセスしてください。

http://scn.sap.com/docs/DOC-7824

ホームページは:

http://scn.sap.com/community/crystal-reports-for-visual-studio

0
Ketan Kotak

マシンが64ビットであっても、Crystal Reportsの32ビットバージョンをインストールします。

私のマシンも64ですが、32ビットバージョンのソフトウェアを使用しており、正常に動作します。

0
11311212

Crystal Report DataSourceに32ビットとのデータソースまたは接続(odbc\daoなど)がありますか?また、32ビットおよび64ビットのCRランタイムを既にインストールしているのは奇妙ですが、なぜVisual StudioのCRバージョンをインストールしたのですか?私はあなたと同じような問題を抱えていましたが、32ビットMDBとDAOをDataSetに置き換えた後、すべてがうまくいきます。 32ビットと64ビットの両方のCRランタイムをインストールしました。

0
louie_nz