xuyunhe
路人甲
路人甲
  • 注册日期2003-08-25
  • 发帖数59
  • QQ
  • 铜币374枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:2027回复:8

请问在AO中,版本协调出现冲突要用什么函数解决?

楼主#
更多 发布于:2004-07-02 09:59
请问在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>
喜欢0 评分0
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15951
  • QQ
  • 铜币25345枚
  • 威望15368点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
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>
GIS麦田守望者,期待与您交流。
举报 回复(0) 喜欢(0)     评分
lilysunny
路人甲
路人甲
  • 注册日期2003-08-18
  • 发帖数160
  • QQ
  • 铜币499枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2004-07-02 15:46
<P>真牛,收藏先!</P>
黑夜给了你黑色的眼睛,你却拿它来翻白眼!
举报 回复(0) 喜欢(0)     评分
lilysunny
路人甲
路人甲
  • 注册日期2003-08-18
  • 发帖数160
  • QQ
  • 铜币499枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2004-07-02 15:47
牛,支持,收藏!~
黑夜给了你黑色的眼睛,你却拿它来翻白眼!
举报 回复(0) 喜欢(0)     评分
xuyunhe
路人甲
路人甲
  • 注册日期2003-08-25
  • 发帖数59
  • QQ
  • 铜币374枚
  • 威望0点
  • 贡献值0点
  • 银元0个
4楼#
发布于:2004-07-05 08:35
<P>你的这个历史回溯是用ARCGIS本身的创建历史版本的功能实现吧,我觉得它这个方法占用的数据库空间资源大,我想用自己设计的一个算法来实现。</P>
举报 回复(0) 喜欢(0)     评分
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15951
  • QQ
  • 铜币25345枚
  • 威望15368点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
5楼#
发布于:2004-07-05 17:52
用自己设计的算法来实现,那可能要用到sde c api开发了,那样工作可能不少了,还没想过,希望能听到你的好消息,期待ing
GIS麦田守望者,期待与您交流。
举报 回复(0) 喜欢(0)     评分
xuyunhe
路人甲
路人甲
  • 注册日期2003-08-25
  • 发帖数59
  • QQ
  • 铜币374枚
  • 威望0点
  • 贡献值0点
  • 银元0个
6楼#
发布于:2004-07-05 18:25
已基本完成功能,就是速度有点慢,但我的历史回放可以精确到任何时间而且是秒级。
举报 回复(0) 喜欢(0)     评分
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15951
  • QQ
  • 铜币25345枚
  • 威望15368点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
7楼#
发布于:2004-07-05 20:11
有空贴出来看看了,最近也在忙这些
GIS麦田守望者,期待与您交流。
举报 回复(0) 喜欢(0)     评分
yemao_20
路人甲
路人甲
  • 注册日期2006-08-14
  • 发帖数26
  • QQ
  • 铜币165枚
  • 威望0点
  • 贡献值0点
  • 银元0个
8楼#
发布于:2007-10-23 09:06
<STRONG>版本协调出现冲突要用什么函数解决怎么回复成了图层的历史点的情况了.</STRONG>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部