|
阅读:2027回复:8
请问在AO中,版本协调出现冲突要用什么函数解决?
请问在AO中,版本协调出现冲突要用什么函数解决?
Private Function ReconcileVersion(ByVal pVersionEdit As IVersionEdit, _ ByVal sParentVersionName As String, _ ByVal bPost As Boolean) 'As Boolean Dim pVersion As IVersion ReconcileVersion = True Set pVersion = pVersionEdit 'check to make sure nobody has it locked. If IsLocked(pVersionEdit) Then ReconcileVersion = False Else StartEditing pVersionEdit On Error GoTo AbortOperation MsgBox "Reconciling " ; pVersion.versionName ; " with " ; sParentVersionName If pVersionEdit.Reconcile(sParentVersionName) Then <P> 'There were conflicts, get out without saving MsgBox "Found conflicts reconciling " ; pVersion.versionName ; " with " ; sParentVersionName</P> <P>''''这里出现版本冲突,这时我想用当前编辑版本替换,应该用什么函数?</P> <P> StopEditing pVersionEdit, False ReconcileVersion = False</P> <P> Else 'No Conflicts in reconcile If pVersionEdit.CanPost And bPost Then</P> <P> 'Post and save edits MsgBox "Posting " ; pVersion.versionName pVersionEdit.Post sParentVersionName StopEditing pVersionEdit, True Else 'Not posted, but save edits StopEditing pVersionEdit, True End If End If End If Set pVersion = Nothing Exit Function AbortOperation: StopEditing pVersionEdit, False ReconcileVersion = False MsgBox "Error in ReconcileVersion: " ; Err.Description End Function</P> |
|
|
1楼#
发布于:2004-07-02 15:17
<P>可以把图层恢复到某个时间点前的状态,列出一简单函数,不知道有木有帮助</P><P>'进行历史回溯
Public Sub GoBackToHisLib(pFeaturelayer As esriCore.IFeatureLayer, strVerTime As String) Dim pQueryFilter As esriCore.IQueryFilter Dim lUpdateCount As Long Dim pUpdateFeatureCursor As esriCore.IFeatureCursor Dim lDeleteCount As Long Dim pDeleteFeatureCursor As esriCore.IFeatureCursor Dim pFeature As esriCore.iFeature Dim pos_end As Long Dim strUpdateTime As String</P><P> On Error GoTo ErrorHandler Set pQueryFilter = New esriCore.QueryFilter pQueryFilter.WhereClause = "ENDTIME>'" + strVerTime + "' AND ENDTIME<'" + RetuMaxTime + "' AND STARTTIME<='" + strVerTime + "'" lUpdateCount = pFeaturelayer.FeatureClass.FeatureCount(pQueryFilter) Set pUpdateFeatureCursor = pFeaturelayer.FeatureClass.Search(pQueryFilter, False) pQueryFilter.WhereClause = "STARTTIME>'" + strVerTime + "'" lDeleteCount = pFeaturelayer.FeatureClass.FeatureCount(pQueryFilter) Set pDeleteFeatureCursor = pFeaturelayer.FeatureClass.Search(pQueryFilter, False) Load frmProgress frmProgress.Height = 1290 frmProgress.Caption = "数据回溯" frmProgress.Show 0, frmMapView With frmProgress .Statuslbl1.Caption = "正在回溯" ; pFeaturelayer.Name ; "层" .ProgressBar1.Max = lUpdateCount + lDeleteCount .ProgressBar1.min = 0 .ProgressBar1.value = 0 End With Set pFeature = pUpdateFeatureCursor.NextFeature If Not pFeature Is Nothing Then pos_end = pFeature.Fields.FindField("ENDTIME") End If strUpdateTime = RetuMaxTime Do While Not pFeature Is Nothing pFeature.value(pos_end) = strUpdateTime pFeature.Store Set pFeature = pUpdateFeatureCursor.NextFeature DoEvents With frmProgress .ProgressBar1.value = .ProgressBar1.value + 1 End With Loop Set pFeature = pDeleteFeatureCursor.NextFeature Do While Not pFeature Is Nothing pFeature.Delete Set pFeature = pDeleteFeatureCursor.NextFeature DoEvents With frmProgress .ProgressBar1.value = .ProgressBar1.value + 1 End With Loop ErrorHandler: Unload frmProgress End Sub</P> |
|
|
|
2楼#
发布于:2004-07-02 15:46
<P>真牛,收藏先!</P>
|
|
|
|
3楼#
发布于:2004-07-02 15:47
牛,支持,收藏!~
|
|
|
|
4楼#
发布于:2004-07-05 08:35
<P>你的这个历史回溯是用ARCGIS本身的创建历史版本的功能实现吧,我觉得它这个方法占用的数据库空间资源大,我想用自己设计的一个算法来实现。</P>
|
|
|
5楼#
发布于:2004-07-05 17:52
用自己设计的算法来实现,那可能要用到sde c api开发了,那样工作可能不少了,还没想过,希望能听到你的好消息,期待ing
|
|
|
|
6楼#
发布于:2004-07-05 18:25
已基本完成功能,就是速度有点慢,但我的历史回放可以精确到任何时间而且是秒级。
|
|
|
7楼#
发布于:2004-07-05 20:11
有空贴出来看看了,最近也在忙这些
|
|
|
|
8楼#
发布于:2007-10-23 09:06
<STRONG>版本协调出现冲突要用什么函数解决怎么回复成了图层的历史点的情况了.</STRONG>
|
|