- - PR -
Activereports1.5でレコードセットのデータの一部が出力されない
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-08-24 10:38
なお、
rptGyouseikaikaku_list_ss.Run (True) rptGyouseikaikaku_list_ss.Show (vbModal) としてRunとShowの間に時間間隔を置いた場合は正常にレポートが出力されます。 | ||||
|
投稿日時: 2007-08-24 12:56
あれ?同期実行はパラメタがFalseじゃないんですか? いや、バージョン違いでパラメタの意味合いが変わるとは思えないんで。 それとも敢えて非同期実行? | ||||
|
投稿日時: 2007-08-24 17:39
> J.J.さん
rptGyouseikaikaku_list_ss.Run (True) rptGyouseikaikaku_list_ss.Show (vbModal) について、RunとShowの間に時間間隔を置かなかった場合は「〜ss.Run(True)」「〜ss.Run(False)」「〜ss.Run(カッコを省略)」のいずれの場合でもレコードセットの内容の一部が出力されませんでした。 一方、間隔を置いた場合では「〜ss.Run(True)」の場合のみ正常にレポートが出力されましたが、「〜ss.Run(False)」「〜ss.Run(カッコを省略)」の場合は内容の一部が出力されませんでした。 ちなみに(申し遅れましたが)VBのフォームにActiveReport1.5のビューアは組み込んでいません。 | ||||
|
投稿日時: 2007-08-25 00:10
そうですか。
とあったので、「ひょっとして同期実行でいけるんじゃ?」と思ったもので。 2.0Jで同期実行・非同期実行共に試してみましたが、現象は再現できませんでした。 ===ここからは完全に予想=== 考えられる対応策は、 ・RunとShowの間にDoEventsを入れる ・RunとShowの間でSleepなどで時間間隔をあける ぐらいでしょうか。根本的な解決にはならないと思いますけども。 あと、GrapeCity社のFAQに関係しそうなものがありました。 参考程度に。 http://www.grapecity.com/Japan/Support/Search/FaqContent.asp?id=8583 ===ここまで=== お役に立てず、申し訳ないです。 | ||||
|
投稿日時: 2007-08-27 10:54
> J.J.さん
Run(Restart)とShowの間にDoEventsを入れてみましたが、結果は同じでした。 (どうもRunの後にすぐShowが実行されてレコードセットの一部が反映されない状態で Activereportが表示されるようです。) 「時間間隔を置いた状態」というのはSleepを実行しているのと同じ意味です。 私が考えているのはできればプリンタへの印刷作業を実行しない状態で Activereportの作成が終わるタイミングをキャッチしてそのタイミングで Activereportのプレビューを表示させたいのですが・・・。 (Activereportの作成にかかる時間はデータの多少によって違うと思うので) よい方法がありましたらご教示願います。 なお、現在VBのフォームにTimerやActiveReportビューアは組み込んでいません。 | ||||
|
投稿日時: 2007-08-27 11:31
#再度言いますが、こちらは2.0Jなので参考程度に。
レポート処理が完了すればReportEndイベントが発生しますので、そこで完了フラグを立てるなどをすれば可能だと思います。 | ||||
|
投稿日時: 2007-08-27 11:42
いろいろ試していますが、J.J.さんのおっしゃるとおり
rptGyouseikaikaku_list_ss.Run (True) DoEvents Sleep (ミリ秒数) rptGyouseikaikaku_list_ss.Show (vbModal) と適切にDoeventsとSleepを挟んである程度の インターバルを置いてあげるのがベストなのかも知れませんね。 | ||||
|
投稿日時: 2007-08-28 11:14
この方法も試してみましたが、フラグを立てた時点でActiveReportを表示してしまうと レコードセットの一部が反映されない状態は変わりませんでした。 一方、 DoEvents Sleep (dwMillisecond) の方法だとおよそdwMillisecond=300(300ミリ秒)以上で正常に表示されました。 (dwMillisecond=200以下では正常に表示されないようです。) |