msample
路人甲
路人甲
  • 注册日期2007-12-23
  • 发帖数6
  • QQ
  • 铜币114枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:2104回复:1

[求助]VC + MO 联接SDE问题?

楼主#
更多 发布于:2007-12-25 09:37
<P>问题1:为什么我的SDE是9.2的,在输入服务器名的时候必须要写成SDE83,不然就连不上?</P>
<P>问题2:在程序执行到layer.SetGeoDataset(geoDataset);这一句时,总是出现valid object expected as argument</P>
<P>高手帮忙看看,谢谢</P>
<P>代码如下:</P>
<P>void CMODemoView::AddSDELayer(CMap1; map, LPCTSTR server, LPCTSTR user, <BR>     LPCTSTR password, LPCTSTR db, COLORREF color)<BR>{<BR> // Establish connection to data<BR> CMoDataConnection conn;<BR> if (!conn.CreateDispatch(TEXT("MapObjects2.DataConnection")))<BR>  throw "unable to create MapObjects2.DataConnection";<BR> conn.SetServer(server);<BR> conn.SetUser(user);<BR> conn.SetPassword(password);<BR> conn.SetDatabase("db");//5151:sde<BR> <BR> if (!conn.Connect())<BR> {<BR>  int code = conn.GetConnectError();<BR>  <BR>  if(code == moInvalidUser)<BR>   AfxMessageBox("用户名不正确!请检查后输入");<BR>  else if(code == moSE_INVALID_DBA_PASSWORD)<BR>   AfxMessageBox("用户密码不正确!请检查后输入");<BR>  else if(code == moInvalidDatabase)<BR>   AfxMessageBox("数据库名不正确!请检查后输入");<BR>  <BR>  else if(code == moSE_SERVICE_NOT_FOUND)<BR>   AfxMessageBox("服务名不正确!请检查后输入");<BR>  else if(code == moSE_INVALID_SERVER)<BR>   AfxMessageBox("服务器不正确!请检查后输入");<BR>  else if(code == moSE_SDE_NOT_STARTED)<BR>   AfxMessageBox("SDE服务没有启动!");<BR>  else<BR>   AfxMessageBox("无法正确连接SDE,请检查SDE的配置!");<BR>  return;<BR>  throw "unable to connect to database";<BR> }<BR> // Add layer specified by path<BR>// /*<BR> CMoLayers layers(map.GetLayers());<BR> <BR> CMoMapLayer layer;<BR>  if (!layer.CreateDispatch(TEXT("MapObjects2.MapLayer")))<BR>  throw "unable to create MapObjects2.MapLayer";<BR> CMoGeoDataset geoDataset(conn.FindGeoDataset("zhang.states.Shape.Polygons"));//db</P>
<P> layer.SetGeoDataset(geoDataset);<BR> if (color != -1)  // Set color if specified<BR> {<BR>  CMoSymbol layerSymbol(layer.GetSymbol());<BR>  layerSymbol.SetColor(color);<BR> }<BR> layers.Add(layer);</P>
<P>}<BR>此外,我换成搜索datasets后,得到的GeoDataset 数据总是0,代码如下:</P>
<P>CMoGeoDatasets dss;<BR> CMoGeoDataset ds; <BR> CMoMapLayer layer;<BR> ds.CreateDispatch("MapObjects2.GeoDataset");</P>
<P> dss = conn.GetGeoDatasets();</P>
<P> short loop = dss.GetCount();<BR></P>
喜欢0 评分0
msample
路人甲
路人甲
  • 注册日期2007-12-23
  • 发帖数6
  • QQ
  • 铜币114枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2007-12-25 10:01
<P>已经解决了,主要是MO与SDE9.2不兼容的问题,感谢GIS的sde92_for_MO_24_updated_3_9_2007.zip升级包。本人尝试升级MO2.2成功。</P>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部