レポート作成

この章ではレポートを作成する手法を学びます。

レポートは下記のデータベースファイル上に実装します。
Base
練習_Query.odb
なお、レポート作成後のデータベースファイルは下記のファイルとなります。
Base
練習_Report.odb

マスター用レポートの作成

それでは、マスター用レポートの例として「部門別担当者一覧」を作成してみましょう。

Base編集画面左ペインの「データベース」欄より「レポート」を選択し、右ペイン上部の「タスク」欄で[デザイン表示でレポートを作成]をクリックします。

すると下図のように「レポートビルダー」画面が表示され、さらにダイアログボックス「フィールドの追加」が表示された状態になります。
ここで「レポートビルダー」画面について少し説明しておきます。画面右側の青い破線で囲った領域は「プロパティ」ウインドウです。レポート全体や、これから設定していくフィールドの属性を設定していく領域です。画面左上に赤い破線で囲ったアイコン「プロパティ」をクリックすると「プロパティ」ウインドウが消えます。アイコン「プロパティ」はトグルスイッチになっていますので、表示・非表示を随時切り替えることができます。また、メニュー「表示>プロパティ」を選択しても同じ効果が得られます。
画面左側に注目して下さい。褐色系の3つの領域があります。これはグループと呼ばれるもので、デフォルトで「ページヘッダー」、「詳細」、「ページフッター」の3つのグループが用意されています。Writerのメニュー「挿入」で可能になるヘッダーやフッターのようなものと考えて頂いて構いません。また、それぞれのグループに属するフィールドを設定するのが右側の白い領域で、それぞれのグループに対応する領域を「セクション」と呼びます。各セクションはグレーのボーダーラインで区切られており、セクションの高さはマウスでボーダーラインをグリップして移動することにより調整することができます。

画面の説明はこれくらいにして、作業を進めましょう。「プロパティ」ウインドウには「データ」タブが開かれていますので、「内容の種類」欄のデフォルト値「テーブル」を「クエリー」に変更します。
すると下図のように画面の背景が黒くなってしまう場合があります。これはBaseの現バージョンでの不具合と思われますが、特に支障ないので、作業を続行します。
「内容」欄で「クエリー:Staff」を選択します。

すると下図のようにダイアログボックス「フィールドの追加」にクエリー「クエリー:Staff」の取得フィールド名がリストで表示されます。
ここでダイアログボックス「フィールドの追加」を閉じてメニュー「表示>並べ替えとグループ化」を選択して下さい。

すると下図のようにダイアログボックス「並べ替えとグループ化」が表示されますので、グループ欄の「フィールド/式」の1行目で「部門名」を選んで下さい。
すると下図左側のようにグループ「部門ヘッダー」が作成されます。
次に「フィールド/式」の2行目で「ID」を選んで下さい。

すると下図左側のようにグループ「部門ヘッダー」の下にグループ「IDヘッダー」が作成されます。
ここでダイアログボックス「並べ替えとグループ化」を閉じ、アイコン「フィールドの追加」(下図参照)をクリックします。

すると下図のように再びダイアログボックス「フィールドの追加」が表示されます。
次に画面左側のグループ「部門名ヘッダー」をクリックすると、グループ名が白い線で囲まれて指定された状態になりますので、ダイアログボックス「フィールドの追加」のリストからフィールド「部門名」を指定してアイコン「挿入」をクリックするか、またはフィールド「部門名」をダブルクリックします。

すると、下図のようにグループ「部門名ヘッダー」のセクション内に設定されたフィールドの一部が見えます。
次に画面左側のグループ「IDヘッダー」をクリックしてダイアログボックス「フィールドの追加」のリストからフィールド「ID」をダブルクリックします。

すると、こんどはグループ「IDヘッダー」のセクション内に設定されず、グループ「部門名ヘッダー」のセクション内に連続して設定されてしまいました。このような場合は設定されたフィールドをドラッグしてグループ「IDヘッダー」のセクション内に移動して下さい。

下図がグループ「IDヘッダー」のセクション内にフィールド「ID」が設定された状態です。フィールドはマウスでドラッグするほかにカーソル移動キーでも移動できますので、微調整する時に利用して下さい。
㉑再び画面左側のグループ「IDヘッダー」をクリックしてダイアログボックス「フィールドの追加」のリストからフィールド「担当者名」、「電話番号」、「性別」をそれぞれダブルクリックしてダイアログボックス「フィールドの追加」を閉じます。

㉒下図が「レポートビルダー」画面にフィールドを設定した状態です。
㉓ここで「レポートビルダー」画面を終了して下さい。

㉔するとダイアログ「ドキュメントを保存しますか」に続いて下図のようなダイアログ「保存」が表示されますので、「ファイル名」に「Staff」と入力して[保存]をクリックします。ダイアログ「保存」上では「ファイル名」となっていますが、実際にはレポート名として命名されます。これでレポート「Staff」が登録されました。

㉕レポート「Staff」を実行してみましょう。Base編集画面右ペインの「レポート」欄に登録されているレポート「Staff」をダブルクリックします。

㉖するとレポートビューが表示されます。このままの設定ではこのように間延びしたレポートとなりますので、見栄えのよいレポートに修正しましょう。
㉗レポートビューを閉じて、レポート「Staff」を編集モードで開いて下さい。

㉘すると下図のように「レポートビルダー」画面が表示されます。最初に、このレポートに表題をつけましょう。アイコン「ラベル」(下図参照)をクリックし、WriterCalcのシェイプ作成の要領で「ページフッター」セクション上の任意の場所で対角線で四角い領域を指定して下さい。

㉙すると、「ページフッター」セクションにラベルフィールドが作られ、右側のプロパティの「タイトル」欄にデフォルト値「Label」が設定されているのが確認できます。
㉚「タイトル」を「部門別担当者一覧」に変更します。
㉛プロパティーの下から3番目「フォント」の右端のボタン「」をクリックします。

㉜すると下図のようなウインドウ「文字設定」が表示されますので、タブ「フォント」を開き、「アジア諸言語用フォント」のサイズを20ptに変更すると画面下方にそのサンプルが表示されますので、設定したフォントのイメージを確認することができます。
[OK]をクリックしてウインドウ「文字設定」を閉じて下さい。

㉞すると「レポートビルダー」画面に戻りますので、アイコン「レポートの実行」(下図参照)をクリックしてどのように表示されるか確認してみましょう。

㉟下図がその結果です。このように、レポートでもクエリーのようにアイコン「レポートの実行」をクリックすることによって、その実行結果を随時確認することができます。
㊱確認できたらレポートビューを閉じます。

㊲ラベルフィールドのハンドルを使用して大きさを調整します。「レポートビルダー」画面でタイトルのテキストが隠れない程度の大きさを調整してもレポートビュー上で隠れる場合がありますので、何度かトライして適切なラベルフィールドを大きさを会得して下さい。
㊳下図が表題のラベルフィールドの大きさを調整し、またラベルフィールド「部門名」を「部門:」に変更し、「ページヘッダー」と「部門名ヘッダー」のセクションの高さをボーダーラインを使って低く調整した状態です。

㊴次に担当者データが並ぶ「IDヘッダー」セクションでラベルフィールドとデータフィールドが並んでいる形式になっていますが、これを、対応するデータの上にラベルが表示される表形式に変更します。
㊵下図が表形式に変更した状態です。担当者データの各ラベルフィールドを「部門名ヘッダー」セクションのボーダーラインより少し上に配置するのがコツです。
IDヘッダー」セクションのフィールドの下からボーダーラインまでの高さは半行程度に、また今回は使用しない「詳細」セクションの高さはできるだけ低く調整しました。なお、プロパティウインドウは非表示にしてあります。

㊶下図がアイコン「レポートの実行」によるレポートビューです。電話番号のフィールドの大きさを小さくしすぎたため、「」マークが表示されています。また、担当者名の「内場 知子」さんのIDが表示されていません。この2点を修正することにします。

㊷電話番号のフィールドの大きさを調整し、IDのフィールドを指定してアイコン「プロパティ」(下図参照)をクリックします。

㊸「全般」タブ最後の「書式設定」欄右端のボタン「」(下図参照)をクリックします。

㊹すると下図のようにダイアログ「数の書式」が表示されます。カテゴリー欄で「数」となっているのはIDが数として扱われているためです。これをテキストに変更します。

㊺下図のようにカテゴリー欄を「テキスト」に変更して[OK]をクリックします。

下図がアイコン「レポートの実行」によるレポートビューです。電話番号が正常に表示され、また担当者名の「内場 知子」さんのIDが「0」と表示されていることが確認できます。
レポートビューを最下部までスクロールするとグループ「部門名ヘッダー」内では部門名が昇順に並び、グループ「IDヘッダー」内では担当者IDが昇順に並んでいることが分ります。

㊽これで部門別担当者一覧が完了しましたので、レポート「Staff」を保存して終了して下さい。
 修正作業を行った後はデータベースファイル自体の保存も忘れずに行って下さい。

トランザクション用レポートの作成

トランザクション用レポートの例としてレポート「受注伝票」を作成してみましょう。受注データはクエリーでも扱いましたが、今回はレポートの機能を利用して、ヘッダー部と明細部を持つ、伝票イメージに近いオブジェクトを作成しようと思います。レポート作成の前にレポートの内容(コンテンツ)として使用するためのクエリーを作成します。

レポート用クエリーの作成

前章ではクエリーを直接実行した際の見栄えを考慮して作成しましたが、レポート用クエリーはレポートで使用するフィールドの設定を主な目的として作成します。つまりレポートの部品としてのクエリーを作成するわけです。

Base編集画面左ペインの「データベース」欄より「クエリー」を選択し、右ペイン上部の「タスク」欄で[デザイン表示でクエリーを作成]をクリックします。
表示された「クエリーデザイン」画面上のダイアログボックス「テーブルまたはクエリーの追加」では「クエリー」を選択し、クエリーリストから「クエリー:Slip1」を選択し、[追加]をクリックした後、[閉じる]をクリックします。
「クエリーデザイン」画面上部にクエリー「クエリー:Slip1」の構造を表す図が表示されますので、ここで一番左端の列の「フィールド」行に「クエリー:Slip1.*」を入力してアイコン「クエリーの実行」をクリックします。
すると下図のように画面上部に全てのフィールドの結果が表示されます。

ここまでは前章でクエリー「クエリー:Slip2作成したときの手順どおりです。
次に第2列目のフィールド行に下記の式を入力し、エイリアス行に「税込金額」と入力します。
“Amount” + “Tax”
(これもクエリー「クエリー:Slip2作成したときと同じですね。)
次に第3列目のフィールド行に下記の式を入力し、エイリアス行に「税込金額合計」と入力します。
SELECT
SUM(
CEILING(“UnitPrice” * “Quantity” * (“TaxRate” + 1)))
FROM “Item”, “SlipDetail”
WHERE “SlipDetail”.”Slip_ID” = “
受注伝票ID”
AND “Item”.”ID” = “SlipDetail”.”Item_ID”
どうでしょう?これは少し難解に感じる方がいらっしゃるのではないでしょか。
SQL文というのは「デザインビューのオン/オフ切り替え」をクリックした時に表示される、クエリーで自動生成されるものだ』と認識されていた方には「取得するフィールドを定義する個所で入力するSQL文とは何じゃろ・・・」と頭を抱えてしまうかもしれませんね。
実はSQLは文中に複数のサブSQLを組み込むことが可能なのです。ここではレポート上で伝票合計として表示する値を、フィールドのひとつとして定義したいのです。
それでは上記のSQL文を解説しましょう。
CEILING(“UnitPrice” * “Quantity” * (“TaxRate” + 1))
この赤字の部分の関数「CEILING()」については前章で解説済みですね。次に関数内の式は前章より簡素化しています。つまりこの部分は下記の意味となります。
単価×数量×(消費税率+1
つまり、消費税率が0.08であれば、「単価×数量」で求めた金額に1.08を掛けてやれば答えが出ます。
あとはこの式を関数「SUM()」で括ってやればいいわけです。関数「SUM()」は値の合計を求める関数ですが、どの括りで合計を出そうとしているのかが次の疑問になるでしょう。それはWHERE句が鍵となります。上記SQL文のWHERE句は下記の意味となります。
テーブル「SlipDetail」の「Slip_ID」が「クエリー:Slip1」の「受注伝票ID」と同じで、かつテーブル「Item」の「ID」がテーブル「SlipDetail」の「Item_ID」と同じもの、もっと平たく言えば、このクエリーが実行された時、「クエリー:Slip1」の各レコードを処理する際に「受注伝票ID」が同じテーブル「SlipDetail」のレコードの税込金額を1レコード毎に計算し、それを同じ受注伝票IDに限定して合計しているのです。今回の例ではテーブル「SlipDetail」には「受注伝票ID=0のレコードが2件、「受注伝票ID=1のレコードが1件、「受注伝票ID=2のレコードが2件あり、それぞれの合計値を求めていますので、同じ 受注伝票IDなら当然同じ値になります。
下図は「税込金額」列と「税込金額合計」列に式とエイリアスを設定してアイコン「クエリーの実行」をクリックした状態です。なお、入力したSQL文の前後に「()」が付いていますが、これはBaseのシステムが自動的に付加したものです。

⑨下図は自動生成されたSQL文です。赤い破線で囲った部分が組み込まれたSQL文です。このようにSQLは取得フィールドのひとつとして独立したSQL文を組み込むことが可能です。

⑩これでクエリーが完成しましたので、「クエリー:Slip_for_Report」と命名して保存・終了して下さい。

レポート「受注伝票」の作成

Base編集画面左ペインの「データベース」欄より「レポート」を選択し、右ペイン上部の「タスク」欄で[デザイン表示でレポートを作成]をクリックします。
「レポートビルダー」画面とダイアログボックス「フィールドの追加」が表示された状態で、「プロパティ」ウインドウの「データ」タブの「内容の種類」欄を「クエリー」に変更します。
「内容」欄で「クエリー:Slip_for_Report」を選択します。
ここでダイアログボックス「フィールドの追加」を閉じてメニュー「表示>並べ替えとグループ化」を選択します。
すると下図のようにダイアログボックス「並べ替えとグループ化」が表示されますので、グループ欄の「フィールド/式」の1行目で「受注伝票ID」を選んで下さい。
すると下図左側のようにグループ「受注伝票IDヘッダー」が作成されます。
次に「フィールド/式」の2行目でもう一度「受注伝票ID」を選んで下さい。

⑧すると下図のように2つ目のグループ「受注伝票IDヘッダー」(赤い破線個所)が作成されます。
ここで下図の青い破線個所に注目して下さい。見出し「プロパティ」下部に「グループヘッダー」欄と「グループフッター」欄があります。ここでは「グループヘッダー」欄で「存在しない」、「グループフッター」欄で「存在する」を指定します。

⑩すると下図のように2つ目のグループ「受注伝票IDヘッダー」だったものがグループ「詳細」の下に移動し(赤い破線個所)、名称も「受注伝票IDフッター」に変わります。
ここでダイアログボックス「並べ替えとグループ化」を閉じます。

⑫このあとの作業が分りやすいようにアイコン「プロパティ」をクリックして「プロパティ」ウインドウを非表示にしておきましょう。
画面左側のグループ「受注伝票IDヘッダー」をクリックし、アイコン「フィールドの追加」をクリックしてダイアログボックス「フィールドの追加」を表示させます。
すると下図のようにグループ「受注伝票IDヘッダー」が指定された状態になりますので、ダイアログボックス「フィールドの追加」でフィールド「受注伝票ID」、「取引先」、「担当者」、「販売日」をダブルクリックします。

下図が「伝票IDヘッダー」セクションに4つのフィールドが設定された状態です。
次に画面左側のグループ「詳細」をクリックし、フィールド「品目」をダブルクリックします。

すると、下図のように「伝票IDヘッダー」セクションの最後尾にフィールドが設定されます。本当は「詳細」セクションに設定したかったので、前項「マスター用レポートの作成」でも説明したようにフィールド「品目」をドラッグして「詳細」セクションの先頭まで移動して下さい。その後、フィールド「単位」、「単価」、「数量」、「Amount」、「税込金額」をダブルクリックします。

下図が「詳細」セクションにフィールドを設定した状態です。ここでダイアログボックス「フィールドの追加」を閉じて、アイコン「レポートの実行」によるレポートビューを見てみましょう。

下図のように、とりあえず伝票ID等のヘッダー部と品目~税込金額の明細部が表示されるようになりました。
このあと、まだ設定作業がありますが、作業ミスでやり直しする事態を考慮して、ここで一旦「レポートビルダー」画面を保存・終了させましょう。レポート名は「Slip」と命名します。

㉑レポート「Slip」を編集モードで開きます。
㉒最初に表題を付けましょう。グループ「ページヘッダー」のセクション内にラベルフィールドを設定し、プロパティの「タイトル」欄に「受注伝票」と設定します。今回もフォントのサイズを20ptにしましょう。
㉓次に各フィールドを適切な位置に配置し直すのですが、その前にプロパティの変更をしておきましょう。
㉔グループ「受注伝票IDヘッダー」セクションの「=受注伝票ID」と表示されたフィールドの書式設定を「テキスト」にしておきます。
㉕ラベルフィールド「受注伝票ID」を指定してアイコン「プロパティ」をクリックし、「プロパティ」ウインドウを開きます。「全般」タブの下から2番目の「横方向の配置」欄を「右」に変更します。
㉖すると、下図のようにラベルフィールドのタイトルが右詰めになるのが確認されます。
㉗同様にラベルフィールド「取引先」、「担当者」、「販売日」も右詰めにします。

㉘下図はグループ「受注伝票IDヘッダー」セクションのラベルフィールドを全て右詰めにした状態です。
㉙同様にグループ「詳細」セクションの数字を扱うラベルフィールド「単価」、「数量」、「Amount」、「税込金額」も右詰めにします。

㉚下図はグループ「詳細」セクションのグループ「詳細」セクションの数字を扱うラベルフィールドを全て右詰めにした状態です。
㉛数字を扱うデータフィールドのプロパティも変更して置きます。「=単価」と表示されているフィールドのプロパティの「全般」タブの下から2番目の「横方向の配置」欄を「右」に変更します。
㉜また、一番下にある「書式設定」欄の右端のボタン「」をクリックします。

㉝すると下記のようにダイアログボックス「数の書式」が表示されますので、「形式」欄で「-1,235」を選択し、[OK]をクリックします。このように設定すると数字がカンマ編集されます。
㉞同様にフィールド「数量」、「Amount」、「税込金額」も右詰めにし、カンマ編集にします。

㉟下図はグループ「詳細」セクションの数字を扱うデータフィールドのプロパティを変更し終わった状態です。

㊱次に、レポート「Staff」の時と同様、各フィールドを配置し直しましょう。ラベルのタイトルを適切な表現に替え、フィールドの大きさを調整しながら配置したのが下図です。途中、アイコン「レポートを実行」をクリックして実行結果を確認しながら作業を進めると楽に出来ます。

㊲この時点で実行した結果が下図です。

㊳ここまで出来たら、あとは伝票計の金額を表示させるだけです。「レポートビルダー」上部にあるアイコン「横線」(下図参照)をクリックして、グループ「受注伝票IDフッター」セクション上部の適切な位置に水平にドラッグして横線図形を設定します。
㊴グループ「受注伝票IDフッター」を指定し、アイコン「フィールドの追加」をクリックしてフィールド「税込金額合計」をダブルクリックしてセクション内にフィールドを設定します。

㊵下図が横線図形を設定し、フィールド「税込金額合計」を設定した状態です。
㊶「税込金額合計」もラベルフィールドとデータフィールドのプロパティを「詳細」セクションの数字を扱うフィールドと同じ設定にします。

㊷下図がフィールドを適切な位置に移動した状態です。ラベルのタイトルを「伝票計:」と変更しました。
㊸最後に2点手を加えます。まず、販売日が月日しか表示されないので年が表示されるようにします。「=販売日」と表示されているフィールドのプロパティを開き、「書式設定」欄の右端のボタン「」をクリックします。

㊹すると下記のようにダイアログボックス「数の書式」が表示されますので、「形式」欄で「991231日」を選択し、[OK]をクリックします。
㊺最後にグループ「ページフッター」に自社名を設定しましょう。レベルのタイトルを「白くま物産(株)」とします。

㊻下図が完成した「Slip」です。

㊼また、実行結果は下図のとおりです。

【ここでBase中級コース終了です。お疲れ様でした。】

Back> 8.クエリー作成
Back>>Base中級 コースの内容」

タイトルとURLをコピーしました