ArcEngine註冊版本編輯sde中的資料(解決報錯0x80040356)
1、問題提出
在我的上一篇博文中(ArcGIS編輯SDE的向量資料(集)(解決因版本化問題不能編輯))解決了在ArcGIS中編輯sde時遇到的未註冊導致不能編輯的問題,同樣,在ArcEngine中也可以用同樣的思路解決這個問題。這個問題比較簡單,所以為了增加篇幅,我在這篇博文中整理了一下我解決ArcEngine問題的一貫思路,如果比較趕時間可以跳過第二部分。
2、解決思路
我始終堅信遇到問題最好的解決辦法第一是幫助文件,第二是百度谷歌,所以在已經知道在ArcGIS中如何解決這個問題之後就可以在幫助文件中查詢相關內容,我們在幫助文件中搜尋“RegisterAsVersioned”,得到了下圖的結果:
這就可以知道我們應該呼叫“IVersionedObject”介面,按照ArcGIS的一貫做法,當然是呼叫最新的介面IVersionedObject3。
接下來我們把目光轉移到物件模型圖(安裝ao的路徑下找),這個介面是在ESRI.ArcGIS.Geodatabase名稱空間下,所以可以開啟“GeoDatabaseObjectModel”,搜尋IVersionedObject3,得到這個介面是在這裡,這是個抽象類:
所以我們可以這樣去實現它:
IVersionedObject3 versionedObject = pDataSet as IVersionedObject3;
接下來的步驟就和在arcgis中實現基本上一樣了。
3、程式碼實現:
網上我找了很多資料,這些程式碼大多隻是將編輯的模式設定未版本化模式,但是並沒有說怎樣進行版本化,所以,首先先判斷這個資料集是否已經註冊了版本,如果註冊了版本就直接設定編輯模式未版本化編輯,否則,就需要先註冊版本再編輯。按照這個邏輯,程式碼就應該是這樣的:
if (pWorkspace.Type == esriWorkspaceType.esriRemoteDatabaseWorkspace)
{
IVersionedObject3 versionedObject = pDataSet as IVersionedObject3;
//註冊版本
if (versionedObject != null && !versionedObject.IsRegisteredAsVersioned)
{
versionedObject.RegisterAsVersioned(true);
}
pEngineEditor.EditSessionMode = esriEngineEditSessionMode.esriEngineEditSessionModeVersioned;
}
//else
//{
// pEngineEditor.EditSessionMode = esriEngineEditSessionMode.esriEngineEditSessionModeNonVersioned;
//}
//設定編輯任務
pEngineEditor.StartEditing(pWorkspace, pMap);
如果對沒有註冊版本的sde資料集搶行進行編輯操作,那麼就會報錯:HRESULT:0x80040356
相關文章
- 解決多project的angular應用單元測試報 ChromeHeadlessCI未註冊的錯誤ProjectAngularChrome
- 程式碼編輯器:sublime text for Mac 註冊版Mac
- VSCode中Flow報錯解決VSCode
- kaldi的編譯安裝與報錯解決方法編譯
- Sublime Text 4 Dev for Mac(程式碼編輯器)4.0中文註冊版devMac
- 資料庫無法註冊至監聽服務解決辦法資料庫
- vim 編輯報錯導致無法正常退出和編輯
- Springboot註解@ConfigurationProperties報錯Spring Boot
- WordPress中實現Markdown編輯的終極解決方案
- 編寫註冊介面
- Smultron for Mac(強大的網頁文字編輯器) v12.2.5中文註冊版Mac網頁
- SS報錯的解決
- 強大的程式碼編輯器Sublime Text for Mac註冊啟用版Mac
- 前端程式碼編輯神器:Sublime Text 4 Dev中文註冊版前端dev
- DrawPad for Mac(圖形編輯軟體) v6.74註冊版Mac
- hgdb資料編輯
- VMware Workstation各個版本的註冊碼
- Greenplum初始化資料庫gpinitsystem報錯以及解決資料庫
- 解決“當前擴充套件快取策略沒有進行註冊”的錯誤套件快取
- vi編輯器開啟大檔案報錯0602-101 Out of memory saving lines for undo的解決方法
- 【Spring註解開發】元件註冊-使用@Configuration和@Bean給容器中註冊元件Spring元件Bean
- 掘金MarkDown編輯手冊
- dmPython編譯後執行,連線資料庫報錯 returned a result with an exception set 問題解決Python編譯資料庫Exception
- HTML文字編輯器:BBEdit for Mac14.6.8啟用版+註冊碼HTMLMac
- Modern CSV for mac(CSV檔案編輯器) v2.0.2註冊版Mac
- 程式碼編輯器:sublime text for Mac 4.0(4164)註冊漢化版Mac
- Modern CSV for mac(CSV檔案編輯器)v2.0.2註冊版Mac
- Laravel 安裝 voyager 出現的資料庫報錯問題解決Laravel資料庫
- 解決navicat遠端連線資料庫報2059錯誤的方法資料庫
- mybatis報錯解決MyBatis
- 解決eslint報錯EsLint
- 10.註冊和登入功能實現(3)—— 註冊資料寫入資料庫資料庫
- 解決 windows遠端桌面報錯“CredSSP加密資料庫修正”Windows加密資料庫
- HGDB之資料編輯
- Jtti:linux中vboxmanage報錯怎麼解決JttiLinux
- win10執行com+應用程式編錄錯誤提示錯誤程式碼80040154-沒有註冊類怎麼解決Win10
- Angular在sublime編輯器中如何新增註釋???Angular
- Sublime Text 4 Dev 註冊碼(程式碼編輯器) v4.0(4164)dev