发表用户:讨论帖
收集整理:James.Liu
相关讨论:http://www.mygis.com.cn/forum/dispbbs.asp?boardID=13&ID=1864
信息原始来源:James MapInfo技术论坛

文章标题:怎么用MAPX读出一个数据库中所有表的数据呢

wenmier

怎么用MAPX查出一个数据库中各表的数据呢?(因为我一个城市的图是放在一个库中的)

先前各位的列子都是指定了表的,能查出并显示出单表的图层,可我要从库中读出整幅图(多个图层,当然就有多个表了),怎么办呢?

然后怎么整合?

谢谢,愁死我了? 

?也即 我想在MAPX连接到ORACLE数据库时下载多表的数据,可是该怎么下呢?只是在
 Dim Lyr As MapXLib.Layer 
  Dim LayerInfo As New MapXLib.LayerInfo 
   
  LayerInfo.Type = miLayerInfoTypeServer 
  LayerInfo.AddParameter "NAME", TableName 
  LayerInfo.AddParameter "connectstring", "uid=system;pwd=manager;srvr=TRANDB" 
  LayerInfo.AddParameter "query", "select * from " + TableName 
  LayerInfo.AddParameter "cache", "off" 
  LayerInfo.AddParameter "MBRSearch", "on" 
  LayerInfo.AddParameter "toolkit", "ORAINET" 

  LayerInfo.AddParameter "AutoCreateDataset", 1 
  LayerInfo.AddParameter "datasetname", TableName 
  Set Lyr = MainFrm.MainMap.Layers.Add(LayerInfo, 1) 
   
  Set Lyr = Nothing 
  Set LayerInfo = Nothing 
 中能添加一层,即一个表的数据,可再要添加下一层
我还是用上述代码,只改了表名;但出错,就说
“Run-time error'1006':
Non-Unique Name specified.(Name alresdy in use by another object),”
怎么回事,有办法解决吗?

wenmier :解决了,就是读出的图层重命个名就是。

leocq

我这里有个基于列表框的循环,希望有用~
Dim i As Integer
  For i = 0 To List1.ListCount - 1
  Dim LayerInfo As MapXLib.LayerInfo
  Set LayerInfo = New MapXLib.LayerInfo
  LayerInfo.Type = miLayerInfoTypeServer
  LayerInfo.AddParameter "NAME", List1.List(i)
  LayerInfo.AddParameter "connectstring", "uid=xxx;pwd=xxx;srvr=xxx"
  LayerInfo.AddParameter "query", "select * from " + List1.List(i)
  LayerInfo.AddParameter "cache", "off"
  LayerInfo.AddParameter "MBRSearch", "on"
  LayerInfo.AddParameter "toolkit", "ORAINET"

  LayerInfo.AddParameter "AutoCreateDataset", i
  LayerInfo.AddParameter "datasetname", List1.List(i)
  frmMain.Map.Layers.Add LayerInfo
   
  Set LayerInfo = Nothing
  Next i