MapX中access表圖形化為mapinfo表的兩種途徑

發表于:2007-07-01來源:作者:點擊數: 標簽:
access表-- MI 表有兩種途徑: 1.bindlayerXY方式綁定。 指定bindlayer.filespec就可以創建永久表,不指定則為臨時表。 Private Sub Command4_Click() 只能創建一個字段,GeoName,來源于City字段。當City字段不能唯一是,state字段用于限定。 不能創建索引 D

access表-->MI表有兩種途徑:


1.bindlayerXY方式綁定。
指定bindlayer.filespec就可以創建永久表,不指定則為臨時表。

Private Sub Command4_Click()
´只能創建一個字段,GeoName,來源于City字段。當City字段不能唯一是,state字段用于限定。
´不能創建索引
Dim BindlayerObject As New mapxlib.BindLayer
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim ds As mapxlib.Dataset

Set db = DBEngine.WorkSpaces(0).Opendatabase("C:\Program Files\MapInfo\MapX 4.0\Data\Mapstats.mdb")
Set rs = db.OpenRecordset("US_Cust")

BindlayerObject.LayerName = "新圖層名"
BindlayerObject.Filespec = App.Path + "\mytab.tab" ´若不指定,則為臨時表
BindlayerObject.RefColumn1 = "X"
BindlayerObject.RefColumn2 = "Y"
BindlayerObject.LayerType = miBindLayerTypeXY

Set ds = Map1.Datasets.Add(miDataSetDAO, rs, "數據集名", "City", "State", BindlayerObject)
End Sub


2.layerInfo新建表
layers.add lyrinfo創建好一個有完備字段的空表
ds.rowvalues,
lyr.addfeature ftr,rvs填入圖元和屬性

Private Sub Command1_Click()
´可以創建多個字段
´mapx5中可以創建索引,mapx4中不可以
Dim rs As DAO.Recordset
Dim db As DAO.Database

Dim flds As New MapXLib.Fields

Dim lyrNew As MapXLib.Layer
Dim ptNew As New MapXLib.Point
Dim ftrNew As MapXLib.Feature
Dim ff As MapXLib.FeatureFactory
Dim li As New MapXLib.LayerInfo
Dim rvs As New MapXLib.Rowvalues
Dim ds As MapXLib.Dataset

Set db = DBEngine.OpenDatabase("C:\Program Files\MapInfo\MapX 4.0\data\mapstats.mdb")
Set rs = db.OpenRecordset("US_Cust")

Set ff = Map1.FeatureFactory

flds.AddStringField "Company", 50 ,true ´mapx5中可以創建索引,
´flds.AddStringField "Company", 50 ´mapx4中不可以創建索引,
flds.AddStringField "City", 50
flds.AddStringField "State", 2
flds.AddNumericField "Order_Amt", 12, 2


li.Type = miLayerInfoTypeNewTable
li.AddParameter "FileSpec", App.Path & "\custtab.tab"
li.AddParameter "Name", "mycustomers"
li.AddParameter "Fields", flds


Map1.Layers.Add li, 1
´到此為止,已經用access表建好mapinfo表,也設置好了字段,但是沒有圖元在上面,也沒有記錄。
´下面從access表中x,y創建點圖元,同時把其屬性數據也添加進去
´--------------------------------------------------------------------

Set lyrNew = Map1.Layers(1)
Set ds = Map1.Datasets.Add(miDataSetLayer, lyrNew)
Set rvs = ds.Rowvalues(0)

rs.MoveFirst
Do While Not rs.EOF
rvs.Item("Company").value = rs.Fields("Company") ´rvs.Item("Company")可寫為rvs("Company")
rvs.Item("City").value = rs.Fields("City")
rvs.Item("State").value = rs.Fields("State")
rvs.Item("Order_Amt").value = rs.Fields("Order_Amt")

ptNew.Set rs.Fields("X"), rs.Fields("Y")
Set ftrNew = ff.CreateSymbol(ptNew)
Set ftrNew = lyrNew.AddFeature(ftrNew, rvs) ´ 圖元+屬性,即feature+Rowvalues
´Set ftrNew = lyrNew.AddFeature(ftrNew)
´ftrNew.Update True, rvs

rs.MoveNext
Loop

Set rs = Nothing
Set db = Nothing
End Sub

==================MapX專家論壇()===================


原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97