私のレポートは32ビットマシンでは正常に動作しますが、64ビットでは開きません。画面の1つにデータをロードするとメモリの問題が発生するため、64ビットが必要です。32ビットでは機能しません。
#1を編集
#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
に関連する操作はありません。
それは何を示していますか?
まだトラブルシューティングを行い、助けを求めているため、これは完全な「答え」ではないかもしれませんが、コメントするには長すぎます。注目すべきは、現時点では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で動作し、動作を停止しましたか?レポートオブジェクトにプログラムでアクセスでき、ビューアーでエラーが発生するなど、他の操作でも機能しますか?
これがあなたに役立つかどうかはわかりません。しかし、サーバー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
マシンが64ビットであっても、Crystal Reportsの32ビットバージョンをインストールします。
私のマシンも64ですが、32ビットバージョンのソフトウェアを使用しており、正常に動作します。
Crystal Report DataSourceに32ビットとのデータソースまたは接続(odbc\daoなど)がありますか?また、32ビットおよび64ビットのCRランタイムを既にインストールしているのは奇妙ですが、なぜVisual StudioのCRバージョンをインストールしたのですか?私はあなたと同じような問題を抱えていましたが、32ビットMDBとDAOをDataSetに置き換えた後、すべてがうまくいきます。 32ビットと64ビットの両方のCRランタイムをインストールしました。