我们通过如下步骤实战一个带地图控件的AR8页面报表:
- Visual Studio winform工程添加页面报表
- 页面报表添加数据源(Data Source)
- 页面报表添加数据集(DataSet)
- 添加地图控件到页面报表并配置数据-空间数据源、分析数据
- 配置地图控件的外观
- 浏览页面报表(运行时效果)
备注:
- 本例使用的报表数据源是Reels.mdb文件,当您安装AR8后可在C:\Users\[计算机名]\Documents\ComponentOne Samples\ActiveReports 8\Data\Reels.mdb下找到。
- 新建一个Windows form工程,本例用的Visual Studio 2013创建。
设计时截图(Design Time):
运行时截图(Runtime):
- Visual Studio winform工程添加页面报表
选择AR8_winform_Map(VS Winform类型)项目,添加ActiveReports 8页面报表。命名为”PageReport1_map.rdlx”
- 页面报表添加数据源(Data Source)
在【报表资源管理器 8】中点击数据源,右键--添加数据源,在弹出的【报表数据源--常规】中选择类型为”Microsoft OleDb Provider”类型的数据源;同时选择OLE DB提供程序为“Microsoft.Jet.OLEDB.4.0”。
-
点击服务器或文件名称后面的…按钮,选择上面提到的Reels.mdb文件(AR8安装后自带数据库)
连接到服务器选择:使用一个特定的用户名和密码,并选择空密码即可。
启动【报表资源管理器 8】办法:在VS中通过【视图】-->【其他窗口】-->【报表资源管理器 8】点击启动。
- 页面报表添加数据集(DataSet)
在上一步建立好的DataSource1上,右键--添加数据集。
在【弹出的数据集--查询】对话框中,输入如下的SQL语句,并点击验证对号。SELECT Address.Region, Customer.CustomerID FROM (Address INNER JOIN Person ON
Address.[AddressID] = Person.[AddressID])
INNER JOIN Customer ON Person.[PersonID] = Customer.[PersonID]; -
-
点击确认,添加DataSet1到DataSource1下面。
添加地图控件到页面报表并配置数据-空间数据源、分析数据
从 Visual Studio 控件工具栏(toolbox)添加Map控件到页面报表PageReport1_map.rdlx(设计器视图下),并选择默认的地图模板--美国地图。
点击美国地图后,则自动会添加一个多边形图层(PolygonLayer1),并加载系统自带的美国各州图层数据.
通过点击多边形图层PolygonLayer1,右键--层数据,在【地图层数据属性--常规】中,有2个字段:
STATE_NAME: 美国各州名称(全程)
STATE_ABBR: 美国各州名称(简写)
在地图上显示标签的方法:
通过点击多边形图层PolygonLayer1,右键--编辑,在【地图多边形层--常规】中,选择标签文本,如#STATE_ABBR则显示各州字母简称.
综上所述,我们已经能够添加一个默认的多边形地理图层,并能够呈现标签,事实上,已经完成了空间数据源的基本操作。 下面,我们需要把报表业务的核心--分析数据在地图上呈现出来,首先要明确一个概��:
空间数据源是一堆经纬度集合;分析数据是有业务意义。
为了在地图上呈现分析数据,需要这2者能够映射(Mapping),如我们可通过美国各州的分母简写来作为映射的“桥梁”,操作如下:
在地图【层数据】属性--分析数据对话框中,选择上面添加的数据集DataSet1;点击匹配按钮,选择空间字段STATE_ABBR和分析字段=[Region] (下拉选择即可,不用输入)
点击确定,我们已经成功了完成了空间数据源和分析数据在多边形图层PolygonLayer1中的映射(Mapping)
备注:
1 每个图层,需要各种配置映射(Mapping)
2 空间和分析字段要求:数据类型相同、数据内容相同
- 配置地图控件的外观
为了在报表运行时呈现出真正的业务分析数据,我们需要配置渲染颜色和分段。
通过点击多边形图层PolygonLayer1,右键--编辑,在【地图多边形层--颜色规则】中,选择“通过调色板显示数据”,并在常规--数据字段中输入:=Count([CustomerID]) , 调色板选择:SemiTransparent。
则会在地图运行时刻/浏览下呈现出:各州客户总数的业务渲染效果。
特别注意:能够被地图渲染的数据字段一定是数字型字段。 如已在Access下测试过的String、货币单位都无法被渲染。
其他的外观设置见列表
在页面报表,选择地图控件,在【属性】里面分别设置如下属性。Property Name Property Value BackgroundColor White BackgroundGradientEndColor White BorderStyle Solid ColorScale > Hidden True DistanceScale > Hidden True Location 0in, 0.625in Size 6.5in, 4.75in ViewPort > BackgroundColor LightSteelBlue ViewPort > BackgroundGradientEndColor White ViewPort > BorderStyle None ViewPort > CoordinateSystem Planar ViewPort > Margin > Right 20pt ViewPort > Meridians > Hidden True ViewPort > Parallels > Hidden True ViewPort > View > Zoom 115 图层(Layer)属性中:
Property Name Property Value BackgroundColor LightSteelBlue BackgroundGradientEndColor White Location > DockOutsideViewport False Location > DockPosition RightBottom Title > (Caption) Number of Customers Title > Font Normal, Arial, 10pt, Bold 标题(Title)属性:
Property Name Property Value (Text) 消费者数量 Color Black 配置完上上面属性后,在【设计器】中截图如下:
浏览页面报表(运行时效果)
下面我们来完成最后一公里:通过地图上的州来钻取报表(Drill-Through)---查询各州的消费者详细数据。
参数传递前面已经有多篇博客专门说过,供深入了解参考:
ActiveReports报表案例之:招聘系统--个人简历模板报表
有过编程经验的都知道,参数传递中,参数分形参(函数声明)和实参(调用者)两种:在2个报表调用过程,触发调用动作的是实参,负责传递参数过去;接收参数的属于形参。
源码如下所示:C# VS2013.net
立即下载 ActiveReports 8, 体验 交互式地图控件 的强大功能吧。