外字が表示されない
RDF、TEXT、HTML、Excel、RTFの場合
これらの形式において外字を表示するには、表示する環境にその外字が登録されている必要があります。
なお、Windows、および Micorosoft Office の仕様により、特定の条件で外字が使用できなかったり、一部の外字が表示されなかったりする場合があります。詳細はmsdnをご参照してください。
Webアプリケーションにおいて、システムのデフォルトリンク外字(EUDC.TTE)以外のリンク方式の外字を使用する場合には、レジストリ情報をコピーしておく必要があります。詳細については、PDF外字をご参照してください。
Flashビューワを使用した場合、レポート生成環境(サーバー)およびクライアント環境の両方に外字フォントが登録されていても、外字が表示/印刷されません。
既存のレポートをプロジェクトに追加する
既存のレポートを、別のプロジェクトに追加する方法は、下記のような手順で実現できます。
こうすることで、レポートに関連するファイルが、プロジェクトに追加されます。
なお、この方法はMicrosoft社の下記サイトにて紹介されている方法と同様の方法です。こちらもあわせてご覧ください。
[方法 : 項目を除去、削除、除外する]
http://msdn.microsoft.com/ja-jp/library/9f4t9t92.aspx
複数のプロジェクト間でレポートを共用する
プロジェクトに直接追加されたレポートを、複数のプロジェクト間で共用して使用することはできません。
ただし、クラスライブラリのプロジェクトにレポートを追加し、そのクラスライブラリのDLLを各プロジェクトから参照することで、間接的に複数のプロジェクト間でレポートを共用すること が可能です。
なお、ActiveReportsを使用したクラスライブラリを参照して、アプリケーションを開発する場合には、その環境に開発ライセンス(製品版がインストールされていること)が必要で す。また、この方法の場合には、クラスライブラリを参照するプロジェクトにライセンス情報が自動的に付与されませんので、手動でプロジェクトに追加してください。
ActiveReportsのライセンス情報の詳細については、「アプリケーションのライセンスの組み込み」を参照してください。
デザイナが表示されない
ActiveReportsのレポートデザイナはVisual Studio IDEと統合され動作します。デザイナが表示されない場合、以下の点を確認してください。
メモリが大量に消費される場合の対応方法
大量のメモリが消費される原因は、いくつか存在します。ActiveReports にはメモリの消費量を抑制するための直接的な機能は用意されておりません。大量のメモリが消費される場合の対処策としては、以下のようなものが考えられます。
レポートが使用するメモリを明示的に解放する
ActiveReportsが使用したメモリは、通常、共通言語ランタイム(CLR)のガベージコレクタにより定期的に自動解放されます。この自動解放は、メモリが十分に余っている場合には実行されないため、解放のタイミングやレポートの構造によっては、一時的にメモリが増加する場合があります。 ActiveReportsが使用したメモリを明示的に解放するには、Disposeメソッドの呼び出しと、Nothingのセットによるオブジェクトの解放を行ってください。この後に、GC.Collect()を実行することで、明示的なガベージコレクションを行うことができます。
ただし、この場合においても、即座に未回収メモリが回収されるのではなく、実際に行われるのはガベージコレクタ次第であり、その長さは未知です。また、一度のガベージコレクションによって未回収メモリがすべて回収されるわけではありません。実際に計測を行う場合は、GC.Collectを何度か実行しガベージコレクションによって回収される十分なインターバルを見越して、計測を行ってください。
レポートインスタンスが使用しているメモリを、明示的に解放します。
Visual Basic
Visual Basicコード |
コードのコピー
|
---|---|
Dim rpt As New SectionReport1() rpt.Run(False) ・・・ ' レポートインスタンスをDisposeします。 rpt.Document.Dispose() rpt.Dispose() rpt = Nothing ' ガベージコレクションを実行します。 System.GC.Collect() ' ファイナライゼーションが終わるまでスレッド待機します。 System.GC.WaitForPendingFinalizers() |
C#
C#コード |
コードのコピー
|
---|---|
SectionReport1 rpt = new SectionReport1();
rpt.Run(false);
・・・
// レポートインスタンスをDisposeします。
rpt.Document.Dispose();
rpt.Dispose();
rpt = null;
// ガベージコレクションを実行します。
System.GC.Collect();
// ファイナライゼーションが終わるまでスレッド待機します。
System.GC.WaitForPendingFinalizers();
|
サブレポートを使用している場合は、メインレポートのReportEndイベント内で、SubreportコントロールのDisposeメソッドを実行します。
Visual Basic
Visual Basicコード |
コードのコピー
|
---|---|
' レポートインスタンスをDisposeします。
Me.Subreport1.Report.Document.Dispose()
Me.Subreport1.Report.Dispose()
Me.Subreport1.Report = Nothing
Me.Subreport1.Dispose()
Me.Subreport1 = Nothing
|
C#
C#コード |
コードのコピー
|
---|---|
// レポートインスタンスをDisposeします。
this.Subreport1.Report.Document.Dispose();
this.Subreport1.Report.Dispose();
this.Subreport1.Report = null;
this.Subreport1.Dispose();
this.Subreport1 = null;
|
印刷が終了する前にスレッドが停止する
印刷が個別のスレッドで行われる場合、Printを呼び出す前にアプリケーションが終了すると、スレッドも停止します。PrintメソッドのusePrintingThread引数をFalseに設定することで、印刷を同じスレッドで実行できます。
Visual Basic
Visual Basicコード |
コードのコピー
|
---|---|
document.Print(False, False, False) |
C#
C#コード |
コードのコピー
|
---|---|
document.Print(false, false, false); |
ActiveReportsコントロールがツールボックスに表示されない
ActiveReportsコントロールがツールボックスに表示されない場合は、「ActiveReportsコントロールを追加する」でコントロールを手動で追加してください。
.NET Coreアプリケーションにおいて、OleDbデータプロバイダでパラメータ付きのクエリを使用する時にエラーが表示される
.NET Coreアプリケーションでは、OleDbデータプロバイダでパラメータ付きのクエリを使用する時にエラーが発生します。
これは、データセットで指定されたクエリパラメータの数は、データセットのSQLクエリで使用されているパラメータと一致しないことに関連して発生します。ただし、これは完全な.NET FrameworkのOleDbデータプロバイダで正常に機能します。
この事象を回避するには、SQLクエリで指定されたクエリパラメータの数は、データセット内のクエリパラメータの数と同じである必要があります。