各フィールドやレコードの集計情報を表示することができます。 式フィールド条件式をセットすると、図1 のクリスタルレポートに 図2 のような列を追加することができます。
1.クリスタルレポートのデザインから式フィールド追加
※ここでは、例として式フィールド「支給額」を作成しています。同じ手順で「性別(新)」、「所属(新)」も作成してください。
2.式フィールドの値に条件式セット
図1. | ![]() |
↓ | |
図2. | ![]() |
1.既存のクリスタルレポートをソリューションエクスプローラから開きます。
2.フィールドエクスプローラを表示し、式フィールドを右クリックで「新規」。
3.表示されるダイアログの名前の欄に適当な「式フィールド名(プログラム側から参照する名前)」を入力し、「エキスパートを使用」もしくは「エディタを使用」ボタンを選択。
※新しいダイアログが開くと思いますが、プログラム側から式を生成するので、何も入力しないで閉じます。
4.作成した式フィールドを右クリックで「レポートに挿入」し、クリスタルレポートの任意の箇所に挿入します。 ※この場合は各レコードの給与と手当の合計を求めたいので、「詳細」に追加します。
'インポートクラス Imports CrystalDecisions.CrystalReports.Engine Imports CrystalDecisions.Shared
'ReportDocument(.RPT)のディレクトリパス設定 Dim reportPath As String = "ファイルパス" & "ファイル名.rpt" 'ReportDocumentのオブジェクト生成 Dim RD As New ReportDocument 'レポートをロード RD.Load(reportPath) 'レコードごとの支給額の条件式をセット RD.DataDefinition.FormulaFields("支給額").Text = _ "if IsNull ({社員マスタ.手当}) then {社員マスタ.給与} else {社員マスタ.給与}+{社員マスタ.手当}" 'レコードごとの性別(新)の条件式をセット RD.DataDefinition.FormulaFields("性別(新)").Text = _ "if {社員マスタ.性別} = 0 then ""男"" else if {社員マスタ.性別} = 1 then ""女""" 'レコードごとの所属(新)の条件式をセット RD.DataDefinition.FormulaFields("所属(新)").Text = _ "select {社員マスタ.所属}" & _ " case ""0001"" : ""総務部""" & _ " case ""0002"" : ""システム部""" & _ " case ""0003"" : ""管理部""" 'CrystalReportViewerへReportDocumentを渡す() CrystalReportViewer1.ReportSource = RD