お世話になっております。
このフォーラムにて同じ質問がありまして内容を拝見致しましたが
明確な原因が判明していないようでしたので再度質問させていただきます。
以下の環境でアプリケーションを実行するとある特定の件数で
「レポートのロードに失敗しました」が発生します。(再現性100%)
<環境>
WindowsXP SP2
Visual Basic.NET 2003
ACCESS2003
IBM Rational Robot
帳票出力先はMicrosoft Office Document Image Writer
<画面説明>
VB.NETで作成した画面でデータ入力を行い、その内容を
データベースに書き込みレポートをロードし帳票を印字している。
<動作説明>
Rational Robotを使用し画面を自動で操作し、連続して帳票を
出力している。
つまり、データ入力u21D2印刷u21D2データ入力u21D2印刷・・・の繰り返し
上記操作を行うと247件目で「レポートのロードに失敗しました」が
発生します。
画面は複数ありA画面では発生するがB画面では発生しません。
5画面試して発生したのは2画面のみです。(これは325件目で発生)
画面の差異は入力項目数が異なるだけで印刷部分の処理は
共通関数を使ってます。
<ロジック>
'レポートファイル(.rpt)のパス名を取得
Dim strRptFile As String 'レポートファイル名(フルパス)
Dim tempReport As New CrystalReport1
Dim iCnt As Short
strRptFile=XXXX.rpt
tempReport.FileName = strRptFile
For iCnt = 0 To tempReport.Database.Tables.Count - 1
tempReport.Database.Tables.Item(iCnt).Location = gstrLclMDB
Next
tempReport.PrintToPrinter(1, True, 0, 0)
・
・
tempReport.Close() u2190CLOSEはちゃんと行ってます。
上記ロジックではdisposeを行っておりませんがDisposeを入れても
結果は同じでした。
<調査>
以下の調査を実施
①プリンタ先をOffice Image・・ではなくAdobe PDFに変更・・・事象発生
②プリンタ先をImageではなく紙に変更・・・事象発生
③ROBOTを使用せずに画面のみで実行(プリンタ先はImage)・・・295件目で発生
④ROBOTを使用せずに画面のみで実行(プリンタ先は紙)・・・800件でも発生せず
上記結果よりプリンタがImageの場合かRobotを使用した場合、発生することが判明。
ちなみにパフォーマンスモニタでメモリ、CPUの状態を見ましたが一番異常値が
出ていたのは事象が発生しない上記④でした。
気になった数値としてはPrivilegedTimeがTotal User Timeの150%から200%に
なっていましたが(適正値は15%)上記④は200%ぐらいだったので問題ないのかな
という感覚です。
原因特定が難しいのですが「レポートのロードに失敗しました」が発生する
要因として何が考えられるのでしょうか?
・存在しないレポートをロードした場合
・レポートのロードを行ったあと、CLOSEを行わずに連続してロードした場合
の2件は今回は該当しません。
あとオブジェクトの開放が行われているかですがVB.NETは意識しなくても
オブジェクトの開放は標準機能で行われているとありましたので問題ない
と思ってます。
ご教授宜しくお願い致します。