Web上でレポートを作成し、クライアントに配信するシステムにおいて、エラーが発生する原因や解決方法について教えてください。
対象製品
ActiveReports 2.0J Standard
詳細
- サーバー環境のプリンタ設定について
ActiveReports は、レポート作成時にプリンタドライバを必要とします。Run メソッド実行時にエラーが発生する場合は、サーバ環境のプリンタ設定(プリンタドライバ)が存在しないことが原因と考えられます。サーバ側にプリンタドライバがインストールされ、権限などが適切に設定されていることをご確認ください。
IISサーバ側のプリンタ設定につきましては、下記の情報もご参照ください。
[[IIS]ASP によるサーバ側での印刷方法について]
http://support.microsoft.com/kb/419321/ja
なお、クライアント側のさまざまなプリンタに対応するためには、仮想プリンタを使用したレポートの作成を行う方法もご検討ください。
この情報に関連した「よくある質問」
接続されたプリンタドライバの影響を受けることなく、設定されたプリンタのプロパティに従ってレポートを作成するには?
- ユーザーインタフェースの表示について
レポートを作成する ActiveX DLL の場合、ダイアログボックスやフォームなど、いかなるユーザーインタフェースでも表示してはいけません。
サーバー DLL でユーザーインタフェースを表示してしまうと、入力待ちのロック状態に陥ってしまいます。
レポートの各イベントでは、On Error Goto などのエラーハンドリングを確実に行い、また、ActiveReport オブジェクトの Error イベントでは CancelDisplay 引数を True に設定して、ActiveReports が独自に表示するエラーメッセージダイアログの表示を防ぐ必要があります。
また、ActiveReports オブジェクトに用意されている ShowMessages プロパティの値を False に設定することでも、警告メッセージおよびエラーメッセージを表示しないようにすることができます。
サンプルコード
Private Sub ActiveReport_ReportStart()
Me.ShowMessages = False
End Sub
- 書き込み権限について
RDF ファイル出力時にエラーが発生する場合は、RDF ファイルを出力するディレクトリに対して、書き込み権限が設定されていないことが原因として考えられます。
IIS を使った Web アプリケーションで発生するエラーの原因は、多くの場合、実行するユーザのアクセス権にあります。特に、RDF ファイルを出力するディレクトリがサーバ上に存在し、アクセス権限が正しく設定されていることをご確認ください。
例えば、インターネット匿名ユーザーに許可を与えるには、下記のように設定します。これは一例であり、使用される環境で特定ユーザーやグループに対してのみ認証が必要であれば、その認証を行う特定ユーザーやグループに対して、権限を設定する必要があります。
- インターネットインフォメーションサービスで、許可を与えたいサイト(今回の場合は、Sample)を選択し、右クリックします。
- ポップアップメニューからプロパティを選択し、ディレクトリセキュリティタブの編集ボタンを選択します。
- 匿名アクセスのチェックボックスをONにします。(匿名アクセスで使用されるアカウントが、IUSR_XXXになっているかと思います(XXXは、マシン名)。
- OKボタンをクリックします。
- エクスプローラからSampleフォルダを選択し、右クリックします。
- ポップアップメニューから共有とセキュリティを選択し、セキュリティタブでインターネットゲストアカウント(IUSR_XXX)を追加します。書き込み許可のチェックボックスをONに設定します。
- 適用ボタンをクリックし、OKボタンを押して終了します。
- Sample01.RDFを選択し、右クリックします。
- ポップアップメニューから共有とセキュリティを選択し、セキュリティタブでインターネットゲストアカウント(IUSR_XXX)を追加します。
- 変更と書き込み許可のチェックボックスをONに設定します。
- 適用ボタンをクリックし、OKボタンを押して終了します。
- ランタイムファイルの配布・登録について
Web サーバ上には、ActiveReports のランタイムファイルの他に、作成された DLL や必要に応じて Visual Basic のランタイム等が必要になりますが、それらが正常に配布・登録されていることをご確認ください。
なお、DLL ファイルのレジストリ登録の際には、「IIS Admin」と「WorldWide WebPublishing」のサービスを停止させた状態で行い、OS を再起動することを確実に行ってください。
- ActiveX Dll のコンパイルについて
Visual Basic で作成した ActiveX DLL は、コンパイルした環境と動作環境が異なる場合に、正常に動作しない場合があります。
WEB サーバの OS の種類を確認し、それと同じ OS 上でコンパイルした DLL で、動作をご確認ください。
- 「対話型インターフェイスの抑制」オプションの設定について
Microsoft社から COM+ および IIS 上で利用する VB のコンポーネントには [対話型インターフェイスの抑制]、[メモリの保持]をチェックしていただくことが推奨されております。
この情報に関連した「よくある質問」
VB 6.0でDLLを作成する場合に、「対話型インターフェイスの抑制」と「メモリに保持」オプションを指定することができません。
- レポートサーバ上での動作検証用サンプルについて
製品をインストールしたディレクトリ内の以下のフォルダに、レポートサーバ上での動作を検証するためのサンプルプログラムが収められております。
..TutorialWeb上での使用レポートサーバーClient Test App
上記のような検証用プログラムを作成して実行することで、原因を特定できる場合があります。
- イベントログへの出力について
エラーの発生箇所を特定するために、Visual Basic に用意されている App オブジェクトの LogEvent メソッドなどを使用して、アプリケーションのイベントログに処理内容を書き出す処理を行なってください。イベントログの内容から直接エラーの原因を特定することはできないかもしれませんが、エラーの発生箇所を特定することで、その原因を調べる役に立ちます。
[Active Server Pages からイベントをログに記録する方法]
http://support.microsoft.com/kb/301309/ja
[Visual Basic から Windows NT イベント ログへの書き込み方法]
http://support.microsoft.com/kb/154576/ja
- メモリの消費について
作成したアプリケーションを実行中にメモリ不足の状態になり、正常にアプリケーションが実行できなくなる場合がございます。ActiveReports にはメモリの消費量を抑制する直接的な機能は用意されておりません。誠に恐れ入りますが、一度に作成・印刷するレポートのデータ量を減らしたり、実行環境の物理メモリや仮想メモリを増やす等の運用面での対処をご検討ください。
また、パフォーマンス向上の一般的な情報として、Microsoft社のWebサイトで公開されております以下のような情報がございます。こうした技術資料も参考までにご参照ください。
[[INFO] ASP で実行する Visual Basic コンポーネントの設計ガイドライン]
http://support.microsoft.com/kb/243548/ja
[ASP アプリケーションのパフォーマンス向上]
http://msdn.microsoft.com/ja-jp/library/dd313975.aspx
[IIS 上で動作する Web アプリケーションでメモリ不足エラーが発生する場合にトラブルシューティングする方法]
http://support.microsoft.com/kb/954828/ja
関連情報
- ASPにおいて、PDF形式のバイト配列を出力すると、正しくPDFが作成されず、クライアントのAcrobat Readerでエラーが発生します。
- Webアプリケーションで ActiveXビューワを使用している場合に、クライアントに既にインストールされているActiveXビューワよりも新しいバージョンのビューワを自動的にダウンロードさせる方法はありますか?
キーワード
HowTo 問題 Web
この文書は、以前は次のFAQ IDで公開されていました : 2950