- PR -

CrystalReportsViewerのツールバーにあるボタンについて

1
投稿者投稿内容
ぷり
ベテラン
会議室デビュー日: 2008/02/22
投稿数: 60
投稿日時: 2008-11-20 14:51
visual studio 2008にてWebアプリケーションを作成しています。

下記の内容とまったく同じ現象に陥っています。

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=43083&forum=7

この現象はやはりバグなのでしょうか?

VS2008を再インストールした方が良いのでしょうか?

解決方法をご存知の方、宜しくお願いします。
なかむら
ベテラン
会議室デビュー日: 2008/11/11
投稿数: 67
お住まい・勤務地: 福岡
投稿日時: 2008-11-20 15:41
Crystal Reports のバージョンは同じ(Ver.10)なんでしょうか?
_________________
Nakamura Blog
ぷり
ベテラン
会議室デビュー日: 2008/02/22
投稿数: 60
投稿日時: 2008-11-20 16:14
なかむら様、返信ありがとうございます。

Crystal Reports のバージョンは、Visual Studio 2008 proに入っていた

「Crystal Reports Basic for Visual Studio 2008」です。

環境は違うのですが、現象がまったく同じで困っています。

画面に内容が表示されて、次ページボタンを押すと2ページまでは表示されるのですが、3ページ以降は表示されずに2ページ目のままです。

最終ページボタンを押すと、ちゃんと最終ページが表示されます。

前ページボタンを押すと、どのページからでも1ページ目に戻ってしまいます。


他に足りない情報がありましたら、記載しますので宜しくお願いします。
なかむら
ベテラン
会議室デビュー日: 2008/11/11
投稿数: 67
お住まい・勤務地: 福岡
投稿日時: 2008-11-20 16:56
私の環境では、[次のページ]ボタンで2ページ目以降も表示されるんですが・・・。

環境は
・Windows Vista SP1
・VisualStudio 2008 Professional Edition SP1
・Crystal Reports は VisualStudio 2008 Professional Edition に同梱されているもの
です。

試した内容は次の通り。
(1)新規作成で Visual Basic の Crystal Reports アプリケーションを選択
(2)ウィザードで空のレポートを作成
(3)「項目の追加」で DataSet を追加
(4)サーバーエクスプローラーから適当なテーブルを DataSet のデザイナにドロップ
(5)レポートに(4)で追加したテーブルの列を配置
(6)Form の OnLoad をオーバーライドし、DataAdater でテーブルの全データを取得
(7)(6)で取得したデータを、すぐに CrystalReportのインスタンスにセット


_________________
Nakamura Blog

[ メッセージ編集済み 編集者: なかむら 編集日時 2008-11-20 17:01 ]
なかむら
ベテラン
会議室デビュー日: 2008/11/11
投稿数: 67
お住まい・勤務地: 福岡
投稿日時: 2008-11-20 17:10
しまった、「Web アプリケーション」でしたね。
失礼しました。
kuta
会議室デビュー日: 2008/06/25
投稿数: 8
お住まい・勤務地: 東京都
投稿日時: 2008-11-21 13:14
こんにちは。
バージョンは違いますが、Crystal Reports for Visual Studio 2005で同様の現象が発生して行った対処を載せます。(参考になればよいのですが・・・)


// レポートドキュメント → プレビュー表示ページ(クラス)のPrivate変数
private CrystalDecisions.CrystalReports.Engine.ReportDocument Report;

protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
// セッション情報からレポートドキュメントを取得してビューワーへセット
rptViewer.ReportSource =
(CrystalDecisions.CrystalReports.Engine.ReportDocument)Session[Constants.RPT_DOCUMENT];
return;
}

// 出力レポートの生成
Report = new CrystalDecisions.CrystalReports.Engine.ReportDocument();
Report.Load(Request.MapPath("ReportFile.rpt"));

// レポートデータテーブルへの格納
dsOriginalRpt dsRpt = new dsOriginalRpt();

  ・
  ・
  ・

Report.SetDataSource(dsRpt);

// セッションへレポートドキュメントを設定
Session[Constants.RPT_DOCUMENT] = Report;

// レポートソースへのバインド
rptMatterViewer.ReportSource = Report;
}


要するに、初期ロード時はレポートデータをDB等から取得してレポートドキュメントを生成した後に「レポートドキュメントをセッションへ格納」、ポストバック時は、セッション変数のレポートドキュメントをビューワーにバインドする手法です。
ぷり
ベテラン
会議室デビュー日: 2008/02/22
投稿数: 60
投稿日時: 2008-11-21 16:08
kuta様 ありがとうございます。

ご提示頂いたコードを元に試してみたいと思います。

不明点が出てきた際は、再度質問してしまうかもしれませんが宜しくお願いします。
1

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