- PR -

Activereports1.5でレコードセットのデータの一部が出力されない

投稿者投稿内容
納涼床
ベテラン
会議室デビュー日: 2006/06/28
投稿数: 53
お住まい・勤務地: 京都市下京区
投稿日時: 2007-08-23 16:19
Access2000データベースからSQL文にて取得したレコードセットを
Activereports1.5に出力するアプリケーションを作成しています。
Visual Basic 6.0側の実行時コーディングで

(Activereportのレポート名).Restart・・・(A)
(Activereportのレポート名).show(vbModal)・・・(B)

ActiveReportのReportstartイベントのコーディングで

(データコントロール名).DatabaseName = (Accessデータベースファイルのパス)
(データコントロール名).RecordSource = (ソート付のselectSQL文)

と記述しActivereportを表示させています。
(A)と(B)の間に時間の間隔を持たせると問題なくレコードセットの内容が出力されるのですが、
時間の間隔を持たせないで続けて実行すると
一部のレコードセットの一部フィールドの内容がない状態でActivereportに出力されることがあります。
(取得元のAccessテーブルにはデータがあるのにActivereportに出力されません。)

コーディングの中に何か不足している点があるのでしょうか?
よろしければご教示よろしくお願いします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-08-23 16:48
引用:

納涼床さんの書き込み (2007-08-23 16:19) より:

(Activereportのレポート名).Restart・・・(A)
(Activereportのレポート名).show(vbModal)・・・(B)


(COM 版は忘却の彼方なのですが)
Restart メソッドですか? 周辺処理のコードをそのまま載せて頂けると助かります。 Run メソッドは実行していますか? であればそのタイミングを教えてください。 また Page フィールドにアクセスしている場合は Commit メソッドと DoEvents を必ず実行してください。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
納涼床
ベテラン
会議室デビュー日: 2006/06/28
投稿数: 53
お住まい・勤務地: 京都市下京区
投稿日時: 2007-08-23 17:12
> じゃんぬねっとさんへ

コーディングをそのまま載せますと

<Visual Basic側のコーディング>
Private Sub cmdRun_Click()

rptGyouseikaikaku_list_ss.Restart
rptGyouseikaikaku_list_ss.Show (vbModal)

End Sub
(cmdRunはコマンドボタンの名前、rptGyouseikaikaku_list_ssはActivereportのレポートの名前です。)

<Activereport側のコーディング>
Private Sub ActiveReport_ReportStart()

GyoseiKanriDsr.DatabaseName = gstrMdb_Path & gcstMDB_Name
GyoseiKanriDsr.RecordSource = "SELECT 行政改革管理歳出部課別.*" & _
" From 行政改革管理歳出部課別 " & _
"ORDER BY 行政改革管理歳出部課別.対象年度, " & _
"行政改革管理歳出部課別.事業区分," & _
"行政改革管理歳出部課別.部コード," & _
"行政改革管理歳出部課別.所属コード;"

With Printer
.TrackDefault = False
.PaperSize = vbPRPSA4 'A4サイズに設定
.Orientation = ddOLandscape '用紙を縦に設定
End With

End Sub
(GyoseiKanriDsrはDAOデータコントロールの名前です。)

です。
Runメソッドは記述していません。また、

> Page フィールドにアクセスしている場合は Commit メソッドと DoEvents を必ず実行してください。

とありますが、どの位置に記述するのが適切でしょうか?(現在は記述していません。)



じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-08-23 17:23
Page への編集はないようなので DoEvents は必要ないと思います。

ところで Run メソッドと Restart メソッドの違いはご存知ですか? Restart メソッドの場合は ReportStart イベントが発生しない仕様になっています。 Restart メソッドは 2 回目以降の実行でメモリ キャッシュをクリアするために存在しています。

これでも解決しないようであれば、Run メソッドの後に DoEvents を実行してください。 ActiveReports はドキュメントを非同期で実行しますが、最終的には Show メソッドのタイミングで同期するハズなので必要ないハズですが...

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
納涼床
ベテラン
会議室デビュー日: 2006/06/28
投稿数: 53
お住まい・勤務地: 京都市下京区
投稿日時: 2007-08-23 19:08
> じゃんぬねっとさんへ

VBサイドのコーディングで

Private Sub cmdRun_Click()

rptGyouseikaikaku_list_ss.Run
rptGyouseikaikaku_list_ss.Pages.Commit
rptGyouseikaikaku_list_ss.Show (vbModal)

End Sub

としてもうまくいきませんが、どのようにDoeventsを挿入すればうまくいきますでしょうか?

(Private Sub cmdRun_Click()

rptGyouseikaikaku_list_ss.GyoseiKanriDsr.DatabaseName = gstrMdb_Path & gcstMDB_Name
rptGyouseikaikaku_list_ss.GyoseiKanriDsr.RecordSource = "SELECT 行政改革管理歳出部課別.*" & _
" From 行政改革管理歳出部課別 " & _
"ORDER BY 行政改革管理歳出部課別.対象年度, " & _
"行政改革管理歳出部課別.事業区分," & _
"行政改革管理歳出部課別.部コード," & _
"行政改革管理歳出部課別.所属コード;"


rptGyouseikaikaku_list_ss.Restart
rptGyouseikaikaku_list_ss.Show (vbModal)

End Sub

としてなおかつRestartとShowの間に間隔をあけた時は所望どおりのものが出力されるのですが・・・)
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-08-23 19:14
引用:

納涼床さんの書き込み (2007-08-23 19:08) より:

としてもうまくいきませんが、どのようにDoeventsを挿入すればうまくいきますでしょうか?


何だかわからなくなってきましたが。 Show メソッドの直前に挿入してもダメでしょうか?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
nakaP
大ベテラン
会議室デビュー日: 2005/09/27
投稿数: 138
お住まい・勤務地: 高知
投稿日時: 2007-08-23 19:19
こんにちは。

Active Reports 2.0の話なので参考程度に。

Restartメソッドをヘルプで調べてみると、サンプルでは以下の順序で記述されてました。

Restart
Run
Show

言葉的になんか変な感じがしますが、どうでしょうか。
あと、Runメソッドを同期モードで実行するのも手かもしれません。
納涼床
ベテラン
会議室デビュー日: 2006/06/28
投稿数: 53
お住まい・勤務地: 京都市下京区
投稿日時: 2007-08-24 10:13
> J.J.さん、じゃんぬねっとさん

 rptGyouseikaikaku_list_ss.Run (True)
DoEvents
'rptGyouseikaikaku_list_ss.Pages.Commit
rptGyouseikaikaku_list_ss.Show (vbModal)

の状態でやってみましたが、相変わらずレコードセットの内容の一部が出力されません。
(症状としてはある1レコードだけ一部フィールドのデータが出力されない状態です。出力されないフィールドは場合によってまちまちです。)

 rptGyouseikaikaku_list_ss.Restart
 rptGyouseikaikaku_list_ss.Run (True)
'rptGyouseikaikaku_list_ss.Pages.Commit
rptGyouseikaikaku_list_ss.Show (vbModal)

でも同様でした。
さらにどちらのケースでもCommitの部分のコメントをはずして実行すると
Activereportに何も内容がない空白の状態で表示されてしまいます。

[ メッセージ編集済み 編集者: 納涼床 編集日時 2007-08-24 10:19 ]

スキルアップ/キャリアアップ(JOB@IT)