- PR -

クリスタルレポートに値を渡す方法

1
投稿者投稿内容
reiko
ベテラン
会議室デビュー日: 2004/11/19
投稿数: 84
投稿日時: 2007-04-24 16:23
この度はお世話になります。
ASP.NET(VisualStudio2005)に付属されている(?)
クリスタルレポートを使用して、帳票出力処理を作っています。

そこで、質問なのですが、プログラム側で加工した文字列を
レポートに表示させたいのですが、方法が良くわかりませんでした。

まず「式フィールド」を使うのか、「テキストオブジェクト」を使うのか、
どちらが最適なのかも悩むところなのですが、
ネットで調べるとテキストオブジェクトの例しか見つけられなかったので
テキストオブジェクトを使用することにしました。

そしてネットで見つけたソースを元にコードを記述しようとするのですが、
ネットで見つけた方法は、クリスタルレポートがクラス化されていて、
変数の宣言時に作成したレポートのオブジェクトを使用する方法しかありませんでした。

・・・これは、テキストに値を渡す方法に限った事ではないのですが、
私が開発しているソリューション内では、私が作ったクリスタルレポートが
クラスとして認識されていないようです。

普通、クラスとして認識されていたら、「Dim 変数名 As」と入力して
スペースキーを押下した時に、表示される候補にクリスタルレポート名が表示されるはずですよね?
ここにクリスタルレポートの名称が出てきてくれません。
当然無理やり名称を書いてもエラーになります;

クリスタルレポートプレビュー用aspxファイルと、クリスタルレポートファイルは同一ソリューションの、同一フォルダ内に存在します。

私が見つけたサンプルはどのソースも作成したクリスタルレポートの
オブジェクト変数を宣言して、その変数から動作する方法ばかりでしたので、
どうしたらいいか、困っています。

クリスタルレポートのプレビュー処理をコーディングする時にも、自分が作ったレポートがクラスとして認識できない為、違う方法を探すのに苦労しました・・・。

私が見つけたプレビュー方法は
クリスタルレポート名 cr = new クリスタルレポート名();
crystalReportViewer1.ReportSource = cr;

という方法だったのですが(私はVBで開発しているのですが)


CrystalReportSource1.ReportDocument.SetDataSource(ds)
CrystalReportSource1.DataBind()

という方法でプレビューを書きました。

同じようにReportDocumentを使用して何らかの方法があるのでしょうか・・・?

そもそも、作成したクリスタルレポートがクラスとして認識されないのはなぜなのでしょうか?他になんらかの設定をする必要があるのでしょうか?

二つの質問になってしまいますが、どちらかのみのご回答でもかまいませんので、皆さんの情報をお待ちしております。
何卒よろしくお願いいたします。
reiko
ベテラン
会議室デビュー日: 2004/11/19
投稿数: 84
投稿日時: 2007-04-24 17:06
すみません。テキストの表示方法がわかりました。

Dim section As CrystalDecisions.CrystalReports.Engine.Section
Dim textObject As CrystalDecisions.CrystalReports.Engine.TextObject


section = CrystalReportSource1.ReportDocument.ReportDefinition.Sections.Item("Section2")
textObject = section.ReportObjects("Text1")
textObject.Text = "test"

・・・で、テキストに値を渡す事が出来ました。

ただ、「作ったレポートがクラスとして認識されない」疑問は出来れば解決したいので、この件で何か情報をお持ちの方がいらっしゃればご回答よろしくお願い致します。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-04-24 18:32
引用:

reikoさんの書き込み (2007-04-24 17:06) より:

ただ、「作ったレポートがクラスとして認識されない」疑問は出来れば解決したいので、この件で何か情報をお持ちの方がいらっしゃればご回答よろしくお願い致します。


CrystalReports Document は、プロジェクトのどこに参加させていますか?
App_Code の下に配置されているでしょうか?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
reiko
ベテラン
会議室デビュー日: 2004/11/19
投稿数: 84
投稿日時: 2007-04-25 08:59
引用:

じゃんぬねっとさんの書き込み (2007-04-24 18:32) より:
CrystalReports Document は、プロジェクトのどこに参加させていますか?
App_Code の下に配置されているでしょうか?



じゃんぬねっとさん、ありがとうございます。
今実際のプログラムで呼んでいるレポートの保存場所は
違うところなのですが、一度配置してみて試したので、
今もApp_Code内に同ファイルが保存されたままになっています。
駄目でしたが・・・。では、その辺がポイントなんですね。

配置の仕方が悪いのでしょうか。
「既存項目の追加」で違うフォルダから追加したのですが、
保存した時にちゃんとローカルのApp_Codeフォルダ内に保存されている事も
エクスプローラからも確認しましたが・・・。


APP_Codeの下に私が作成したDataSetは問題なく
宣言部の「As」を書いてスペースキーを押した時の候補リストに
出てきますが、クリスタルレポートは出てきてくれません(泣)

もし、また何か思い当たる事がありましたら教えてください。
よろしくお願い致します。





[ メッセージ編集済み 編集者: reiko 編集日時 2007-04-25 09:03 ]

[ メッセージ編集済み 編集者: reiko 編集日時 2007-04-25 09:04 ]
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-04-25 09:20
引用:

reikoさんの書き込み (2007-04-25 08:59) より:

今実際のプログラムで呼んでいるレポートの保存場所は違うところなのですが、


それでは多分ダメです。
新規に Document を追加した時に App_Code に移動する旨の問い合わせメッセージがありませんでしたか?

引用:

配置の仕方が悪いのでしょうか。「既存項目の追加」で違うフォルダから追加したのですが、


と思うのでしたら、新規に追加し直した上で試されてみてはいかがでしょうか。
それと、CrystalReport Document 自体のソースは確認済みですか? (完全修飾名など)

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
reiko
ベテラン
会議室デビュー日: 2004/11/19
投稿数: 84
投稿日時: 2007-04-25 09:46
じゃんぬねっとさん、早速のお返事ありがとうございます。

引用:

じゃんぬねっとさんの書き込み (2007-04-25 09:20) より:
新規に Document を追加した時に App_Code に移動する旨の問い合わせメッセージがありませんでしたか?



DataSet作成時には出てきましたが・・・。
Webconfigのチェックアウトを促すメッセージとかは出てきた気がします。

引用:

と思うのでしたら、新規に追加し直した上で試されてみてはいかがでしょうか。
それと、CrystalReport Document 自体のソースは確認済みですか? (完全修飾名など)



そうですね。ためしに何かもうひとつ新規作成で作ってみます。
あと、「CrystalReport Document 自体のソース」というのはどうやって確認できるのでしょうか・・・?
他のファイルのようにはソースを表示出来ないのですが・・・(泣)
どんどん質問の初歩的度がUPしてますね;すみません・・・。

新規作成で試してみて、また報告させていただきます。
有難うございます。
reiko
ベテラン
会議室デビュー日: 2004/11/19
投稿数: 84
投稿日時: 2007-04-25 09:53
早速新規作成を試してみました。
App_Codeフォルダで右クリックして
「新しい項目の追加」を選択したら、
テンプレートを選択する画面が出てきますが、
その中にクリスタルレポートがありませんでした・・・。

App_Codeより1つ上の階層・・・というか1番上の階層になるのですが、
作業フォルダのパスが表示されているフォルダ(?)のところで右クリックしたときには
クリスタルレポートも出てきました。

App_Codeフォルダの右クリックでは、
・クラス
・テキストファイル
・データセット
・レポート
・クラスダイアグラム
と、「マイテンプレート」
しか選択できませんでした。

しょーがないので一番上の階層で追加してみましたが、
やっぱりクラスとしては認識されていないようです。
1

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