数据绑定文档格式.docx

上传人:b****4 文档编号:6417711 上传时间:2023-05-06 格式:DOCX 页数:14 大小:22.90KB
下载 相关 举报
数据绑定文档格式.docx_第1页
第1页 / 共14页
数据绑定文档格式.docx_第2页
第2页 / 共14页
数据绑定文档格式.docx_第3页
第3页 / 共14页
数据绑定文档格式.docx_第4页
第4页 / 共14页
数据绑定文档格式.docx_第5页
第5页 / 共14页
数据绑定文档格式.docx_第6页
第6页 / 共14页
数据绑定文档格式.docx_第7页
第7页 / 共14页
数据绑定文档格式.docx_第8页
第8页 / 共14页
数据绑定文档格式.docx_第9页
第9页 / 共14页
数据绑定文档格式.docx_第10页
第10页 / 共14页
数据绑定文档格式.docx_第11页
第11页 / 共14页
数据绑定文档格式.docx_第12页
第12页 / 共14页
数据绑定文档格式.docx_第13页
第13页 / 共14页
数据绑定文档格式.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数据绑定文档格式.docx

《数据绑定文档格式.docx》由会员分享,可在线阅读,更多相关《数据绑定文档格式.docx(14页珍藏版)》请在冰点文库上搜索。

数据绑定文档格式.docx

创建特定数据集并将它添加到该集合中。

Setds=Map1.Datasets.Add_(miDataSetDAO,rs)

删除

从Datasets集合中删除指定的DataSet对象。

Map1.Datasets.Remove2

DataSets.Add方法

使用DataSets.Add方法,可向MapX绑定来自数据源的数据。

使外部数据源和地图建立联系。

语法如下:

DataSets.AddType,SourceData,[Name],[Geofield],[SecondaryGeofield],[BindLayer],[Fields],[Dynamic]

Type参数

此参数用来说明所添加数据集的类型。

它获取DataSetTypeConstants的值。

下面列出的是DataSet类型常量:

miDataSetADO

ADO

miDataSetDAO

DataAccessObject

miDataSetDelphi

DelphiNative

miDataSetDelphi4

Delphi4

miDataSetGlobalHandle

以Tab键分隔的数据

miDataSetLayer

MapInfo表

miDataSetNotesQuery

LotusNotesQuery

miDataSetNotesView

LotusNotesView

miDataSetODBC

ODBC数据库

miDataSetOEO

OracleexpressObjects

miDataSetOLEData

OLEdatasource

miDataSetRDO

RDO

miDataSetSafeArray

SafeArray

miDataSetUnbound

MapX从容器中请求数据

SourceData参数

该参数用来引用数据,随Dataset类型的不同而不同。

下面是每一种数据集类型的有效数据源:

Dataset类型

有效源数据

ADO表

DAORecordset对象.

miDataSetDelphi4

Delphi4记录集

VT_I4类型的变量且lVal相当于全局内存句柄.

ODBCQueryInfo对象

Oracleexpress对象

被Datasets.Add忽略

RDO表格

无类型(对应地,使用RequestData事件访问只有程序员知道的数据格式)。

Name参数

该参数为唯一标识数据集的字符串。

属于可选参数,如果不指定,则缺省名为DataSetN,其中“N”为Datasets集合中的数字。

Geofield参数

该参数是数据源中包含地理信息的列名称或索引。

如果该参数未指定,则MapX搜索所有字段,以决定数据源中哪一列包含了GeoDictionary中指定的地理信息。

此字段不必是地理数据字段,因为它可能是诸如邮政编码之类的唯一关键列。

但是,如果已经知道数据源中的哪一列包含了地理信息,则应当指定它。

如果打算在地图上查看图元数据,那么数据源中的GeoField列必须是唯一的。

GeoField列用来为新点层的图元命名。

若值不唯一,则将导致在新点层中添加的只是单个点,该点是在多个重复关键值中首次遇到的,并且将会聚合重复行中的数据值。

如果指定了Fields集合,Geofield参数引用Fields集合的列,而不是数据源的列。

请参阅下面的Fields参数。

SecondaryGeofield参数

此参数只有当绑定数据集的图层存在不唯一关键列时才需要。

例如,使用MapInfo表“UnitedStatesCounties”绑定数据就需要依靠Secondarygeofield参数,因为一个州中的县名是不唯一的。

可能存在在表中的多个州都有县名为“Warren”或“Washington”的情况。

这样,在数据绑定过程中,就需要更多的信息以解决可能存在的模棱两可的情况。

什么时候绑定数据到NewYork的Warren,又是什么时候绑定到NewJersey的Warren呢?

通过指定“County”列作为Geofield以及“State”列作为SecondaryGeofield,MapX经过对各州中的县名的精确数据绑定处理,就能够辨别出绑定到NewYork的Warren数据和绑定到NewJersey的Warren数据(这和创建Find对象的RefiningBoundary概念相同。

请参阅在地图中查找图元)。

如果指定了Fields集合,SecondaryGeofield参数会引用Fields集合中的列,而不是源数据中的列。

BindLayer参数

如果正在绑定属性数据,则此参数指定和数据连接的地图图层,或者,若引入的数据被地理引用到到点引用文件中(如:

邮政编码)或包含经/纬度值,则指定一个BindLayerObject。

这是可选参数,如果没有指定,则MapX会搜索GeoDictionary中的图层去连接。

如果已知要绑定的地图图层,基于性能的原因,应当指定它。

匹配BindLayer时,Geofields必须唯一。

否则只匹配不唯一设置的数据中的第一项。

其余的则被忽略。

Fields参数

该参数是Field对象集合中的Fields对象。

Field对象用来描述导入数据源的字段,以及当匹配特定地图图元的数据源记录多于一个时,使用的聚合函数。

这将建立要绑定到地图的字段(列)集合。

它是可选参数,如果没有指定,则导入所有列,并且如果每个图元有多个记录,对数据值求和。

本章后面更详细地讨论了Fields集合。

如果指定了Fields集合,则Geofield和SecondaryGeofield参数会被指定为Fields集合中的列,而不是源数据中的列。

Dynamic参数

该参数的值为布尔型,控制数据绑定是否是动态的。

它是可选的,未指定时默认为False,即静态绑定数据。

(即,当数据库打开时MapX复制所需数据)。

如果此参数指定为True,MapX只在需要数据时实时访问数据(例如,在标注时)。

如果此参数指定为True但数据集不支持动态列,则会导致异常。

DataSets.Add的简单实例

下面的代码从MSAccess数据库“MapStats”中打开US_Cust表,该数据库在MapInfoMapX4.0目录下的DATA文件夹中。

DimdsAsDataset

DimdbAsDatabase

DimrsAsRecordset

'

OpentheMapStats.MDBDatabasse

Setdb=DBEngine.Workspaces(0).OpenDatabase(_

"

C:

\ProgramFiles\MapInfoMapX4.0\Data\Mapstats.mdb"

rsisthesourceDatarecordsetwhichisanMSAccesstable

Setrs=db.OpenRecordset("

US_Cust"

Addthedatasettothemap

Setds=Map1.Datasets.Add(miDataSetDAO,rs)

第四节使用Fields集合

数据源有多个数据列。

MapX管理绑定的每一列数据,因此应当只绑定地图上所需的数据(例如,想要进行专题化地图或标注用的数据)。

用DataSets.Add(Fields)的最后一个参数来建立要绑定到地图的字段(列)的Fields集合。

说明:

声明字段变量时使用“MapXLib.Fields”。

这样可防止与DAO"

Fields"

对象发生冲突。

DimfldsAsNewMapXLib.Fields

可以通过Dataset.Fields的属性访问数据集的Fields集合。

Add

向Fields集合中添加一个字段

flds.Add“Sales”,“Sum_of_Sales”_,miAggregationSum

Remove

从Fields集合中删除一个字段

flds.Remove3

RemoveAll

从该集合中删除所有Field对象

flds.RemoveAll

Fields.Add方法

Fields.Add方法使您得以将数据源中的一列数据作为字段添加到Fields集合中。

Fields集合使用DataSets.Add方法建立。

Datasets.Add的Fields参数获取Fields集合,并使用Add方法建立它。

一旦数据集已经创建,就不能再将Add方法用在数据集的Fields集合上。

Fields.Add的语法规则如下所示:

Fields.AddDataSourceCol,Name,[AggregateFunction],[Type]

部件

DataSourceCol

数据源的列名或列索引。

Name

欲添加的字段名。

AggregateFunction

所使用的聚合函数。

此参数获取AggregationFunctionConstants值。

Type

列中的数据类型。

此参数获取FieldTypeConstants值。

此参数仅用于非绑定DataSets。

其它DataSet类型则忽略它。

数据聚合

Fields.Add方法的AggregateFunction参数决定当多匹配情况出现时MapX怎样计算Field的值。

下面是用于处理多匹配情况的聚合:

AggregationFunction常量

常量

MiAggregationSum

数据求和。

MiAggregationAverage

求数据平均值。

MiAggregationIndividual

拖进每一个单独记录里。

MiAggregationCount

对记录计数。

下面的示例显示了怎样从DAO记录集数据源创建字段集合,以及随后如何用Fields集合向数据集添加数据。

PrivateSubcmdOK_Click()

DimdsAsMapXLib.Dataset

DimrsAsRecordset

Dimiasinteger

DimfldsAsNewMapXLib.Fields

Opentherecordsetselectedfromalistbox

Setrs=db.OpenRecordset(DatasetsList.Text)

UsetheAggregationFunctionconstantselectedfromacombobox

DimAggregateTypeNumAsInteger

SelectCaseAggregateType.ListIndex

Case0

AggregateTypeNum=miAggregationSum

Case1

AggregateTypeNum=miAggregationAverage

Case2

AggregateTypeNum=miAggregationCount

Case3

AggregateTypeNum=miAggregationIndividual

Case4

AggregateTypeNum=miAggregationAuto

EndSelect

LoopthroughtheDAOfieldsoftheRecordse

'

andaddthemtoaMapXFieldscollection.

Fori=0Tors.Fields.Count-1

flds.Addrs.Fields(i).Name,rs.Fields(i).Name,AggregateTypeNum

Next

Addthedataset,usingthefieldscollection

Setds=Map1.Datasets.Add(miDataSetDAO,rs,"

USStateData"

,,,flds)

MsgBox"

Dataset"

&

DatasetsList.Text&

Added"

UnloadMe

EndSub

第五节将数据显示为点图层(BindLayer)

BindLayer数据绑定是数据绑定的一种类型,它用来在由数据指定的位置处创建新的点图层。

通常在下面两种情况下使用:

•数据包含x和y坐标时(如经度和纬度)。

•在指定的位置创建点。

•数据包含参照信息时,例如ZipCodes。

当绑定数据具有X/Y坐标或点信息(例如ZipCodes)时,以及想要在新的或已存在的图层上看到由数据指定位置的点时,就需要用到Bindlayer对象。

使用BindLayerObject添加数据集时,这些点会自动显示在地图上。

如果没有用BindLayerObject添加数据集,则点是不会自动显示的。

只有BindLayerObjects才有这种行为。

BindLayer对象属性

属性

LayerType

指定数据绑定图层的图层类型。

ABindLayerTypeConstant:

•MiBindLayerTypeNormal

•MiBindLayerTypeXY

•MiBindLayerTypePointRef

CoordSys

指定创建图层的坐标系统。

CoordSys对象

FileSpec

标识文件名及文件路径的文本字符串.

AStringValue

KeyLength

正数,代表结果图层中字符串列的期望大小。

(1-254)之间的正整数值。

LayerName

如果LayerType是miBindLayerTypeNormal,则指定要绑定数据的图层名称。

如果LayerType是miBindLayerTypeXY或miBindLayerTypePointRef,它则表示新创建图层的名称。

字符串值

RefColumn1

当LayerType是miBindLayerTypeXY时,该字段包含经度,当LayerType是miBindLayerTypePointRef时。

该字段包含的是参数值(例如ZIPCode)。

列的字符串或整型参数(one-based索引)。

RefColumn2

当LayerType是miBindLayerTypeXY时,指定该字段包含纬度。

列的字符串或整型参数(one-based索引).

ReferenceLayer

如BindLayer.LayerType是miBindLayerTypePointRef,则指定要使用的参照文件的名字。

字符串。

使用BindLayer对象的操作步骤如下:

1.创建BindLayer对象。

2.当通过datasets.Add方法中的BindLayer参数传递此对象来添加数据集时,使用它。

下面显示了如何创建BindLayer对象并显示X/Y或者点参数数据。

在地图上将X/Y数据作为点图层显示

如果数据包含X/Y坐标,就可以通过数据绑定创建并显示点图元图层。

使用BindLayer对象,并设置:

•LayerType属性为miBindLayerTypeXY。

•RefColumn1属性为包含X坐标值的列名或索引(one-based)。

•RefColumn2属性为包含Y坐标值的列名或索引(one-based)。

示例

DimBindLayerObjectAsNewMapXLib.BindLayer

DimfldsAsNewMapXLib.Fields

DimdbAsDatabase

DimdsAsMapXLib.Dataset

Gettherecordsettomap

MapStatsAccessdatabase

HasLongitude,Latitudecolumns

Setdb=DBEngine.Workspaces(0).OpenDatabase(_

Setrs=db.OpenRecordset("

rs.Movelast

Debug.Print"

RecordSethas"

rs.RecordCount&

records."

FillintheBindlayerobject

BindLayerObject.LayerName="

USCustomers"

Nameofnewlayer

BindLayerObject.RefColumn1=“X”'

Longitude"

UseColumnnumber(one'

based!

)orColumnname

BindLayerObject.RefColumn2=“Y”'

Latitude"

BindLayerObject.LayerType=miBindLayerTypeXY

'

TypeforX/Ybinding

FinishedsettingupBindLayer"

Setds=Map1.Datasets.Add(miDataSetDAO,rs,"

U.S.Customers"

_

"

City"

"

State"

BindLayerObject)

Finishedaddingdataset"

使新点图层变为永久图层

使BindLayer对象创建的新点图层成为永久的MapInfo表是很容易的。

使用BindLayer.Filespec属性或者指定文件的名字和位置,使得Datasets.Add方法能够创建永久图层来替代临时图层。

如果不指定这个属性,则图层就是临时的。

第六节使用GeoDictionary进行数据绑定

 

MapX使用GeoDictionary文件(默认名是GEODICT.DCT)记录与数据绑定有关的信息。

使用DataSets.Add方法时,MapX能够分析数据,然后决定怎样绑定数据到地图上去。

此方法有以下自动行为:

•确定数据源中哪一列包含地理信息。

•确定绑定到哪个图层。

这两个操作都是可选的。

有参数使您得以明确地指定包含地理信息的是数据源中的哪一列,或者哪一个地图图层将用来绑定数据。

如果知道这些值中的任一个,就应当明确地指定它们以提高性能。

为使MapX能够绑定数据到地图图层上,下面的几个条件必须确保为真:

1.此地图的地理关键列需要被索引

2.此地图和它的关键列必须在GeoDictionary中指定

第七节数据绑定使用的MapX事件

一旦数据源的某列被定义为地理列,并且确定了绑定数据的地图图层,则绑定就开始进行。

数据源的每一行都和一个图元相匹配且数据将会带入地图。

如果某包含地理列的行和图元不匹配(或许是键入错误[“NA”代替“MA”]或仅是一个非地图上的值[“PuertoRico”]),则DataMismatch事件被激活来通知容器。

可以忽略DataMismatch事件,这种情况下MapX将简单地忽略此行。

在自动数据绑定期间,如果数据有模棱两可的情况,MapX就会调用ResolveDataBind事件。

在使用“非绑定”类型数据的数据绑定期间,使用RequestData事

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2