阅读:3295回复:2
[求助]ArcEngine Runtime
<P>'ArcEngine RUNTIME客户端创建要素集</P>
<P>'设置连接属性<BR>Function SetConnProperty_Oracle() As IPropertySet<BR> Dim ipParamSet As IPropertySet<BR> Set ipParamSet = New PropertySet<BR> ipParamSet.SetProperty "SERVER", "kyo"<BR> ipParamSet.SetProperty "INSTANCE", "5157"<BR>' ipParamSet.SetProperty "Database", "dbsd_kyo"<BR> ipParamSet.SetProperty "USER", "sd"<BR> ipParamSet.SetProperty "PASSWORD", "sd"<BR> ipParamSet.SetProperty "VERSION", "SDE.DEFAULT"<BR> <BR> Set SetConnProperty_Oracle = ipParamSet<BR>End Function</P> <P>Function GetWks_Oracle() As IWorkspace<BR> Dim ipWF As IWorkspaceFactory<BR> Set ipWF = New SdeWorkspaceFactory<BR> If ipWF Is Nothing Then<BR> Set GetWks_Oracle = Nothing<BR> End<BR> End If<BR> <BR> Dim ipWks As IWorkspace<BR> Dim ipParamSet As IPropertySet<BR> Set ipParamSet = SetConnProperty_Oracle()<BR> <BR> Set ipWks = ipWF.Open(ipParamSet, 0)<BR> <BR> Set GetWks_Oracle = ipWks<BR>End Function</P> <P>' 创建表<BR>Function TestSDE_CreateTbl_Oracle1()<BR>On Error GoTo Err_TestSDE_CreateTbl_Oracle1<BR> Dim bSuccess As Boolean<BR> <BR> '取要素空间<BR> Dim pWks As IWorkspace<BR> Dim pFWks As IFeatureWorkspace<BR> Set pWks = GetWks_Oracle()<BR> Set pFWks = pWks <BR> <BR> '新建要素空间参考系<BR> Dim pFDS As IFeatureDataset<BR> Dim ipSpatialReferenceFactory As ISpatialReferenceFactory<BR> Dim ipSpatialReference As ISpatialReference <BR> Set ipSpatialReferenceFactory = New SpatialReferenceEnvironment<BR> Set ipSpatialReference = ipSpatialReferenceFactory.CreateESRISpatialReferenceFromPRJFile("E:\\65lnd\\Beijing 1954 3 Degree GK CM 117E.prj")<BR> <BR> 'success<BR> Set pFDS = pFWks.CreateFeatureDataset("sd.test", ipSpatialReference)<BR> bSuccess = True<BR> <BR> <BR>Err_TestSDE_CreateTbl_Oracle1:<BR> If bSuccess = False Then<BR> MsgBox "ErrCode : " ; CStr(Err.Number) ; vbCrLf ; Err.Description<BR> End If<BR>End Function</P> |
|
1楼#
发布于:2007-10-06 12:13
看看返回的错误代码,在帮助FDOERROR CONSTANT中查看一下,就知道原因了!我现在碰到是<b>FDO_E_NO_SCHEMA_LICENSE, 不知道谁有这样的LICENSE文件!哎,真不习惯这个鸟公司!<br></b>
|
|
2楼#
发布于:2006-12-29 15:33
<P>上面大VB代码是对的,可是我在VC里面测试的代码有问题,如下:</P>
<P>//相关环境初始化</P> <P>#pragma warning (disable:4786)<BR>#pragma warning(disable : 4192)<BR>#pragma warning (disable:4146)</P> <P>#import "d:\Program Files\ArcGIS\COM\esriSystem.olb" raw_interfaces_only raw_native_types no_namespace named_guids exclude("OLE_COLOR", "OLE_HANDLE")<BR>#import "d:\Program Files\ArcGIS\COM\esriGeometry.olb" raw_interfaces_only raw_native_types no_namespace named_guids exclude("OLE_COLOR", "OLE_HANDLE")<BR>#import "d:\Program Files\ArcGIS\COM\esriGeoDatabase.olb" raw_interfaces_only raw_native_types no_namespace named_guids exclude("OLE_COLOR", "OLE_HANDLE")<BR>#import "d:\Program Files\ArcGIS\COM\esriDataSourcesGDB.olb" raw_interfaces_only raw_native_types no_namespace named_guids exclude("OLE_COLOR", "OLE_HANDLE")</P> <P>//arcgis组件初始化<BR> AfxOleInit();<BR> <BR> if(m_ipAoInit == NULL)//类成员变量IAoIntialize<BR> m_ipAoInit.CreateInstance(CLSID_AoInitialize);<BR> if(m_ipAoInit == NULL)<BR> return FALSE;<BR> esriLicenseStatus aeLicense; <BR> m_ipAoInit->IsProductCodeAvailable(esriLicenseProductCodeEngineGeoDB,;aeLicense);<BR> if(aeLicense!=esriLicenseAvailable ;; aeLicense!=esriLicenseCheckedOut)<BR> {<BR> m_ipAoInit->Initialize(esriLicenseProductCodeEngineGeoDB,;aeLicense);<BR> if(aeLicense!=esriLicenseAvailable ;; aeLicense!=esriLicenseCheckedOut)<BR> {<BR> AfxMessageBox("没有可用的License!");<BR> return FALSE;<BR> }<BR> }</P> <P>//测试主体代码</P> <P>void CMainFrame::Ontest() <BR>{ <BR> //创建workspace<BR> IWorkspaceFactoryPtr ipWorkSpaceFactory;<BR> HRESULT hr = ipWorkSpaceFactory.CreateInstance(CLSID_SdeWorkspaceFactory);<BR> if(FAILED(hr))<BR> return;</P> <P> IWorkspacePtr ipWorkspace;<BR> IPropertySetPtr ipPropertySet(CLSID_PropertySet);<BR> if(ipPropertySet==NULL)<BR> return ;<BR> <BR> // 设置链接属性<BR> ipPropertySet->SetProperty(_bstr_t("SERVER"), _variant_t("kyo")); //服务器<BR> ipPropertySet->SetProperty(_bstr_t("INSTANCE"), _variant_t("5157")); //服务端口号<BR> ipPropertySet->SetProperty(_bstr_t("USER"), _variant_t("sd")); //sde用户名<BR> ipPropertySet->SetProperty(_bstr_t("PASSWORD"), _variant_t("sd")); //sde密码<BR> ipPropertySet->SetProperty(_bstr_t("VERSION"), _variant_t(_T("SDE.DEFAULT")));//default<BR> hr = ipWorkSpaceFactory->Open(ipPropertySet, NULL, ;ipWorkspace); <BR> if(FAILED(hr) || ipWorkspace == NULL)//打开成功1111<BR> return;</P> <P> IFeatureDatasetPtr ipRtnDataset;<BR> IFeatureWorkspacePtr ipFeatureWS(ipWorkspace); <BR> if(ipFeatureWS == NULL)<BR> return;<BR> <BR> //准备空间参考系<BR> ISpatialReferenceFactoryPtr ipSpatialReferenceFactory;<BR> ISpatialReferencePtr ipSpatialReference;<BR> ipSpatialReferenceFactory.CreateInstance(CLSID_SpatialReferenceEnvironment);<BR> hr = ipSpatialReferenceFactory->CreateESRISpatialReferenceFromPRJFile(_bstr_t("E:\\65lnd\\Beijing 1954 3 Degree GK CM 117E.prj"),;ipSpatialReference);<BR> if(FAILED(hr) || ipSpatialReference == NULL)//创建参考系也成功2222<BR> {<BR> AfxMessageBox("创建空间参考系失败!");<BR> return;<BR> }</P> <P> IFeatureDatasetPtr ipFDS;<BR> hr = ipFeatureWS->CreateFeatureDataset(_bstr_t("sd.test"),ipSpatialReference,;ipFDS);<BR> if(FAILED(hr) || ipFDS == NULL) //创建要素集失败3333<BR> {<BR> AfxMessageBox("创建要素集失败!");<BR> return;<BR> }<BR>}</P> <P>3333失败,不知道为什么....</P> |
|