このウォークスルーでは、米国の州の注文合計を州別にまとめて表示するレポートにマップを追加します。マップを含まないレポートは非常に単純で、州ごとのすべての注文の合計をリストしているだけです。以下にその全体を示します。
注文 州名
16325.15 アラスカ
3490.02 カリフォルニア
115673.39 アイダホ
1947.24 モンタナ
52245.9 ニューメキシコ
30393.93 オレゴン
31001.65 ワシントン
12489.7 ワイオミング
マップをこのレポートに追加し、それぞれの州を、緑(注文のない州)から黄と赤の陰影(合計注文額で決定)までの色で塗りつぶします。さらに、各州は合計に比例する直径の円形マーク、およびこの合計を示すラベルを持ちます。最後に、アラスカとハワイを表示する2つの小さいインセット地図を追加します。
このウォークスルーでは次のファイルを使用することに注意してください。
以下の手順を実行します。
デザイナで新しいレポートを追加して、データソースとして C1NWindMaps.mdbを指定し、次の SQL クエリーを使用します。
SELECT Orders.ShipRegion, Orders.ShipCountry, StateNamesGeo.StateName,
Sum([Order Details].UnitPrice*[Order Details].Quantity) AS OrderValue,
(select Longitude from StateNamesGeo where StateNamesGeo.Abbr = Orders.ShipRegion) as Longitude,
(select Latitude from StateNamesGeo where StateNamesGeo.Abbr = Orders.ShipRegion) as Latitude
FROM ((Categories INNER JOIN Products ON Categories.CategoryID = Products.CategoryID)
INNER JOIN (Orders INNER JOIN [Order Details] ON Orders.OrderID = [Order Details].OrderID)
ON Products.ProductID = [Order Details].ProductID)
INNER JOIN StateNamesGeo on Orders.ShipRegion = StateNamesGeo.Abbr
WHERE Orders.ShipCountry = "USA"
GROUP BY Orders.ShipRegion, Orders.ShipCountry, StateNamesGeo.StateName
ORDER BY Orders.ShipRegion;
レポートウィザードを使用し、OrderValue と StateName フィールドを[詳細]セクションに追加します。レポートを実行し、上に示したデータを印刷することを確認します。
マップをレポートのヘッダーに追加します。
マップのプロパティを次のように設定します(デフォルト以外のみを次に示します)。
米国のマップを表示しているため、必要に応じて、座標を手動で設定する(特に、アラスカとハワイのインセット用に右側に十分なスペースを残す)ことに注意してください。
MarkerStyles コレクションを開き、1つのスタイルを追加します。そのコントロールのプロパティを次のように設定します。
このスタイルは、注文合計を示すサイズの円形マーカーを州上に描画するために使用されます。塗りつぶし色はこの場合に効果的な半透明であることに注意してください。また、マーカーのサイズが注文額(合計)の平方根に比例することにも注意してください。スタイル名(msTotalSales)はこのスタイルを参照するために使用されます。
必要に応じて、他のプロパティ(フォント、ストローク、およびテキスト色)も設定できます。
注文合計に応じて、すべての州を6つのグループに分けます。
したがって、これらのグループのそれぞれに KML 項目スタイルを作成する必要があります。KmlItemStylesコレクションを開き、上記のグループに対応する名前を持つ6つのスタイル、およびマップ上の州を区別する FillColor値を追加します。
これらの名前は、ここでは非常に重要です。KML 項目式でこれらの名前を使用し、州の注文合計値に応じてスタイルを選択するからです。
マップの最も重要な部分は、州境界を表示して適切な色で州を塗りつぶす KML レイヤです。これを追加するには、マップの Layersコレクションエディタに移動し、KML レイヤを追加します。そのコントロールのプロパティを次のように設定します。
KmlFileName: us_states_abbr.kmz(パス付きでないファイル名を指定すると、レポート定義と同じ場所からファイルがロードされます。
RecordSource:
SELECT Orders.ShipRegion,
Sum([Order Details].UnitPrice*[Order Details].Quantity) AS OrderValue
FROM (Categories INNER JOIN Products ON Categories.CategoryID = Products.CategoryID)
INNER JOIN (Orders INNER JOIN [Order Details] ON Orders.OrderID = [Order Details].OrderID)
ON Products.ProductID = [Order Details].ProductID
WHERE Orders.ShipCountry = "USA"
GROUP BY Orders.ShipRegion
ORDER BY Orders.ShipRegion;
ItemFilterExpr: kmlItemName=ShipRegion(KML 項目式、特に、KML 項目の描画に使用するスタイルが現在の KML 項目に対応する州のデータで評価されるようにします)。
KmlVisibleExpr: kmlItemName<>"AK"(メインマップがアラスカを表示しないようにします)。
ItemStyleExpr:
iif (OrderValue > 100000, "ks100kup", iif (OrderValue > 50000, "ks50k100k", iif (OrderValue > 30000, "ks30k50k", iif (OrderValue > 10000, "ks10k30k", iif (OrderValue > 0, "ks0k10k", "ksNoOrders" )))))
上の式は、RecordSourceどおり、1つの州の全注文の合計である現在の OrderValueに応じて、KML 項目スタイル名(上を参照)の1つに評価されます。前記の ItemFilterExprは、この式が KML ファイルから現在ロード中の州に対して評価されるようにします。
マップの視覚的効果をさらに高めるには、州の合計注文に比例してサイズ変更して州上に配置されたた円形マーカーを含むポイントレイヤも追加します。それには、PointsLayerを Layersコレクションに追加し、KML レイヤの上に移動して、マップがレンダリングされるときにポイントレイヤが KML レイヤの上に表示されるようにします。レイヤのプロパティを次のように設定します。
MarkerStyleExpr: 「msTotalSales」(これは既にマップの MarkerStyles コレクションに追加したスタイルを使用します。比例的なサイズ変更はこのスタイルに含まれているため、ここでは他に何もする必要がありません)。
Latitude: 緯度(レコードソースによって提供される空間データを使用します)。
Longitude: 経度(レコードソースによって提供される空間データを使用します)。
タイトルを表す凡例(右上端)、および KML 項目スタイルへの色キー(右下)の2つの凡例をマップに追加します。
色キーを追加するには、凡例をもう1つ追加して、配置を BottomRightに設定し、その Itemsコレクションを開き、次の項目を追加します。
アラスカとハワイの2つのインセット地図を追加します。それには、次の手順を実行します。
インセット地図はどちらもメインマップで定義されたスタイルを再使用するため、スタイルをインセット地図のスタイルコレクションに追加する必要はありません。
レイヤはメインマップのレイヤを複製します。したがって、2つのレイヤを各インセット地図の Layers コレクションに追加します。
ポイントレイヤ。MarkerStyleExpr は「msTotalSales」に設定され、MarkerVisibleExpr は
StateName = "Alaska"
(ハワイインセットの場合は「Hawaii」)のように設定され、すべての他のプロパティはメインマップのポイントレイヤと同様です。
KMLレイヤ。すべてのプロパティ(RecordSource を含む)はメインマップの KML レイヤの対応するプロパティからコピーされますが、ItemVisibleExpr は
kmlItemName="AK"
(ハワイの場合は kmlItemName="HI")に設定されます。特に、ItemStyleExprは、評価されるスタイル名が別のマップのスタイルコレクション内のスタイルを参照する場合でも機能することに注意してください。
最後に、州の名前を使用して、単一の固定テキストを持つ凡例を各インセット地図に追加します。
これで完了です。では、レポートを実行して、正しく機能することを確認します。