阅读:2284回复:1
[求助]VC + MO 联接SDE问题?
<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> |
|
1楼#
发布于:2007-12-25 10:01
<P>已经解决了,主要是MO与SDE9.2不兼容的问题,感谢GIS的sde92_for_MO_24_updated_3_9_2007.zip升级包。本人尝试升级MO2.2成功。</P>
|
|