Accessテクニックのホームへ戻る

■ 営業担当者別受注額をピボットテーブルに表示する (2002,2003,2007)

 

営業担当者別受注額をピボットテーブルに表示

 

営業担当者別の受注額を四半期別にピボットテーブルに表示します。さらに、ピボットテーブルの県名を展開/折りたたむ手順についても解説します。

 

 

1. 新規データベース作成

Accessを起動したら、ツールバーから新規作成のアイコンをクリックして、作業フォルダworkW114.mdbを作成します。

 

2. テーブル、クエリをインポート

Windowsのエクスプローラから、114.mdb(このページの最後からダウンロードできます)をダブルクリックして開きます。データベースウィンドウのオブジェクトから[テーブル]をクリックしたら、社員テーブル(tblEmployees)をドラッグしてW114.mdbのデータベースウィンドウにドロップします。同様の手順で、受注テーブル(tblOrders)と受注明細テーブル(tblOrderDetails)をドラッグ&ドロップします。さらに[クエリ]から営業担当者別受注クエリ(qry2002OrdersByEmployeePT1)をドラッグ&ドロップします。テーブル、クエリをインポートしたら114.mdbを閉じます。

 

3. フォームにピボットテーブル作成

データベースウィンドウのオブジェクトから[フォーム]を選択したら、[新規作成]ボタンをクリックします。「新しいフォーム」のダイアログが表示されたら、リストボックスから[オートフォーム:ピボットテーブル]を選択します。基になるテーブルまたはクエリの選択から[qry2002OrdersByEmployeePT1]を選択します。[OK]ボタンをクリックしてダイアログを閉じます。

 

ピボットテーブルのウィザードが起動されたら、「ピボットテーブルフィールドリスト」から[四半期]をドラッグして「ここに列のフィールドを・・・」にドロップします。[営業担当]をドラッグしたら「ここに行のフィールドを・・・」にドロップします。以下、同様の手順で[]を「ここにフィルタを設定するフィールドを・・・」にドラッグ&ドロップ、[受注額]を「ここに詳細のフィールドを・・・」にドラッグ&ドロップします。

 

フィールドリストからフィールドをドラッグして対応するボックスにドロップする

 

営業担当者別の四半期別受注額がピボットテーブルに表示されます。

 

営業担当者別の四半期別受注額がピボットテーブルに表示される

 

4. 県名を表示

営業担当者別の四半期別受注額が表示されたら、[]をドラッグして[営業担当]の右側にドロップします。

 

[]をドラッグしたら[営業担当]の右側にドロップする

 

ピボットテーブルに県別受注額の内訳が表示されます。ピボットテーブルの[営業担当]をクリックして選択したら、ツールバーから折りたたみのアイコンをクリックして県名を隠します。ツールバーから展開のアイコンをクリックすると、県名が表示されます。

 

ピボットテーブルに受注額の県別内訳を表示

 

5. フォームを保存して閉じる

ツールバーから上書き保存のアイコンをクリックしたら、「frm2002OrderByEmployeePT1」の名称で保存します。

 

 

●解説

 

ここでは、社員テーブル、受注テーブル、受注明細テーブルから営業担当者別の四半期別の受注額を集計するのに2個のクエリを使用しています。qryOrderSubtotalsのクエリは、受注テーブルと受注明細テーブルを結合して受注ID別の受注額を集計します。

 

qryOrderSubtotals:

SELECT tblOrders.OrderID, Sum(CCur([UnitPrice]*[Quantity])) AS Subtotal

FROM tblOrders

INNER JOIN tblOrderDetails ON tblOrders.OrderID = tblOrderDetails.OrderID

GROUP BY tblOrders.OrderID;

 

qry2002OrdersByEmployeePT1のクエリは、社員テーブル、受注テーブル、qryOrderSubtotalsを結合して、四半期別の受注額を集計します。このクエリの抽出条件には、「OrderDate Between #1/1/2002# And #12/31/2002#」を設定して、2002年度の受注データを抽出するようにしています。

 

SELECTステートメントの列に「EmployeeName AS 営業担当」のように別名を追加していますが、これはピボットテーブルのフィールドリストに日本語を表示するためです。

 

qry2002OrdersByEmployeePT1:

SELECT EmployeeName AS 営業担当,

ShipKen AS ,

Format([OrderDate],"q") AS 四半期,

qryOrderSubtotals.Subtotal AS 受注額

FROM tblEmployees

INNER JOIN (tblOrders INNER JOIN qryOrderSubtotals

ON tblOrders.OrderID=qryOrderSubtotals.OrderID)

ON tblEmployees.EmployeeID=tblOrders.EmployeeID

WHERE (((tblOrders.OrderDate) Between #1/1/2002# And #12/31/2002#));

 

ダウンロード (114.lzh)