、数据绑定 11 DataSet对象和 Data sets集合 1、数据绑定的概念: 将数据从数据源放入MapX的处理过程 °能在地图上以图元浏览数据; 可首先向地图绑定属性数据,然后基于这些数据创建专题渲染地图。 数据源可以是 Visual basic数据控件,或是0DBC数据源。在MapX中,数 据由 DataSet对象表示。如果有 Visual basic的绑定数据控件,就可以在设 计时使用Map对象的 DataSet属性;或者通过使用 DataSets.Ad方法编程来 绑定数据。 结果:创建 DataSe对象 Page 7 MapI p Info
Page 7 •一、数据绑定 1.1 DataSet对象和DataSets集合 1、数据绑定的概念: 将数据从数据源放入MapX的处理过程 • 能在地图上以图元浏览数据; • 可首先向地图绑定属性数据,然后基于这些数据创建专题渲染地图。 数据源可以是Visual Basic数据控件,或是ODBC数据源。在MapX中,数 据由DataSet对象表示。如果有Visual Basic的绑定数据控件,就可以在设 计时使用Map对象的DataSet属性;或者通过使用DataSets.Add方法编程来 绑定数据。 结果:创建DataSet对象
2、数据源 DataSource DataSource参数⑩ ataSets.Add的第二个参数)实际上是一个OLE接口 MapX通过接口直接从数据源访问数据。数据并没有真正传给 Datasets.Addo 下面是详细的几种数据源: miDatasetDAO-DA0数据集( Data Access Object Recordset) DataSets.Ad的 DataSource必须是一个DA0数据集对象.可以从 Visua1 Basic的数据控件, Access窗体,或是 Visua1 Basic, Access,C++中创建 一个数据集。 miData SetODBC一ODBC数据连接( Open Data Base Connectivity data source).MapX可以通过ODBC从任意ODBC数据源中获取数据。需要指定 连接字符串,数据源名称,使用 ODBCQueryInfo执行的SQL查询语句 ( ODBCQuerylnfo包含连接ODBC数据源的信息) . miData Set Layer-如果 Dataset的类型是 miDataSetLayer ,那么参考 Maplnfo Table表中的字段创建 Dataset,则 SoureData参数项必须是一个 Layer对象。 Page 8 MapI p Info
Page 8 2、数据源DataSource DataSource参数(DataSets.Add的第二个参数)实际上是一个OLE接口。 MapX 通过接口直接从数据源访问数据。数据并没有真正传给DataSets.Add。 下面是详细的几种数据源: • .miDataSetDAO-DAO 数据集 ( Data Access Object Recordset). DataSets.Add 的DataSource必须是一个DAO数据集对象.可以从Visual Basic的数据控件,Access窗体,或是Visual Basic, Access, C++中创建 一个数据集。 • .miDataSetODBC-ODBC数据连接(Open DataBase Connectivity data source). MapX可以通过ODBC从任意ODBC数据源中获取数据。需要指定 连接字符串,数据源名称,使用ODBCQueryInfo执行的SQL查询语句 (ODBCQueryInfo包含连接ODBC数据源的信息)。 • . miDataSetLayer-如果 Dataset的 类型是 miDataSetLayer , 那么参考 MapInfo Table表中的字段创建Dataset,则SoureData参数项必须是一个 Layer对象
miDataSetGlobalhandle-引入以tab制表符为界的数据块。 Datasetado 的 Source Data参数必须是一个类型为VTI4的变体设置以及等同于全局内 存句柄的val。在全局内存块中每行的数据格式为: field taB field taB field crlF其中feld是带引号的字符串,或是不带引号的数值,TAB键的值 是0x09,CRLF值是0x0D0x0A . miDataSetolEData-这是用于 Powerbuilder这样的控件容器的数据源 当初始化MapX控件时,PB将以 miDataglobalhandle格式存在的数据传输 给MapX。之后调用 DataSets. Add方法,数据源类型显 miData SetolEData 为先前传入的数据创建 Dataset o miDataSetUnbound-如果不支持前面提到的数据源,MapX提供一个 “后门”。这种类型允许MapX通过建立事件循环向MapX控件容器请求数 据,每次一个单元。MapX将提供 RequestData事件以数据单元的行号列号。 这样就可以使用任何方式获取数据同时通过这个事件把它传给MapX RDO: remote data object ADO: Activex data object Page 9 MapI p Info
Page 9 • .miDataSetGlobalHandle – 引入以tab制表符为界的数据块。Dataset.add 的SourceData参数必须是一个类型为VT_I4 的变体设置以及等同于全局内 存句柄的lVal 。在全局内存块中每行的数据格式为:field TAB field TAB field CRLF其中field是带引号的字符串,或是不带引号的数值,TAB键的值 是0x09, CRLF 值是0x0D 0x0A. • .miDataSetOLEData – 这是用于Powerbuilder这样的控件容器的数据源, 当初始化MapX控件时,PB将以miDataGlobalHandle格式存在的数据传输 给MapX。之后调用DataSets.Add方法,数据源类型显miDataSetOLEData 为先前传入的数据创建Dataset。 • .miDataSetUnbound – 如果不支持前面提到的数据源,MapX 提供一个 “后门” 。这种类型允许MapX 通过建立事件循环向MapX控件容器请求数 据,每次一个单元。MapX将提供RequestData 事件以数据单元的行号列号。 这样就可以使用任何方式获取数据同时通过这个事件把它传给MapX。 RDO: remote data object ADO: ActiveX data object
3、 DataSe对象和 DataSets集合 Datase对象是在从数据源向MapX绑定数据的过程中生成的。 Datase包含了数据绑定的地图图层中图元的计算过的值。数据源 可能是DAO记录集,ODBC数据源等形式。 DataSets集合是代表地图中所有 Dataset的对象。 DataSets集合的 方法和属性用来添加、删除 Dataset对象,或者在集合中使用现有的 DataSet对象。 Datasets. Add一可向MapX绑定来自数据源的数据,使外部数据源和 地图建立联系。 DataSets. Add Type, SourceData, [Name], [Geofield] L SecondaryGeofield], [BindLayerl, [fields], [dynamic] Datasets. Remove Page 10 E MapInfo
Page 10 3、DataSet对象和DataSets集合 DataSet对象是在从数据源向MapX绑定数据的过程中生成的。 DataSet包含了数据绑定的地图图层中图元的计算过的值。数据源 可能是 DAO 记录集,ODBC数据源等形式。 DataSets 集合是代表地图中所有DataSet的对象。DataSets集合的 方法和属性用来添加、删除 Dataset 对象,或者在集合中使用现有的 DataSet 对象。 Datasets.Add-可向MapX绑定来自数据源的数据,使外部数据源和 地图建立联系。 • DataSets.Add Type, SourceData, [Name], [Geofield], [SecondaryGeofield], [BindLayer], [Fields], [Dynamic] • Datasets.Remove
(1)Type参数 Datase类型 有效源数据 此参数用来说明所添加类mD0AD要 的值。 uiDataSetDAO DAORecordset对象 (2) SourceData参数 muiDataSetDelphis Delphi Native+ miDataSetDelphi4 e Delphi4记录集 该参数用来引用数据, miDataSetGlobalHandle-VT_求业的变量且I相当手金局内存句柳 (3)Name参数 miDataSetNotesQuery Lotus Notes Querye miDataSetNotes view+ otus Notes view+ 该参数为唯一标识数据绳m0Dc0Qw对象 DataSet 其中“N”为Dmao 诀省名为 Oracle express对象 mD2 taSetoLEData被DeAd忽略 (4) Geofield参数 RDO表格 muiDataSetsafeArraye Safe Array+ 该参数是数据源中包含邮 无类型(对应地,使用 RequestData事件访问只有程序员知 的数据格式) 则MapX 搜索所有字段,以决定数据源中哪一列包含了 GeoDictionary中指定的地理信 。如果要在地图上查看图元数据,那么数据源中的 GeoFleld列必须是唯一的。 GeoField列用来为新点层的图元命名。 Page 11 MapI p Info
Page 11 (1)Type参数 此参数用来说明所添加数据集的类型。它获取DataSetTypeConstants的值。 (2)SourceData参数 该参数用来引用数据,随Dataset类型的不同而不同。 (3)Name参数 该参数为唯一标识数据集的字符串。属于可选参数,如果不指定,则缺省名为 DataSetN,其中“N”为Datasets集合中的数字。 (4)Geofield参数 该参数是数据源中包含地理信息的列名称或索引。如果该参数未指定,则MapX 搜索所有字段,以决定数据源中哪一列包含了GeoDictionary中指定的地理信 息。如果要在地图上查看图元数据,那么数据源中的GeoField列必须是唯一的。 GeoField列用来为新点层的图元命名