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

在AO中如何删除一个SDE表?

楼主#
更多 发布于:2004-07-05 15:18
<P>在AO中如何删除一个SDE表?</P>
喜欢0 评分0
xuyunhe
路人甲
路人甲
  • 注册日期2003-08-25
  • 发帖数59
  • QQ
  • 铜币374枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2004-07-05 18:23
<P>谢谢!我已搞定!</P><PRE><PRE>Public Sub BorrarCapaSDE(strCapa As String)
 On Error GoTo ControlError

 'Check if the layer is in Map
  Dim pMxDocument As IMxDocument
  Dim pMap As IMap
  Dim pLayer As ILayer
  Dim pEnumLayer As IEnumLayer
  Set pMxDocument = Application.Document
  Set pMap = pMxDocument.FocusMap
  If pMap.LayerCount <> 0 Then
    Set pEnumLayer = pMap.Layers
    Set pLayer = pEnumLayer.Next
    Do While Not pLayer Is Nothing
      If pLayer.name = (strCapaVer) Then
        pMap.DeleteLayer pLayer
        Exit Do
      End If
      Set pLayer = pEnumLayer.Next
    Loop
  End If
  
  'Open Default WorkSpace
  Dim pWSsde As IWorkspace
  Set pWSsde = openSDEWorkspace(gServer, gInstance, gUser, gPassword, "", "SDE.DEFAULT")
  
  'Create iTransaction Object
  Dim ptrans As ITransactions
  Set ptrans = pWSsde
  
  'Open Table
  Dim pFeatureWorkspace As IFeatureWorkspace
  Set pFeatureWorkspace = pWSsde
  Dim pFeatureLayer As IFeatureLayer
  Set pFeatureLayer = New FeatureLayer
  Set pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass(strCapa)
  pFeatureLayer.name = pFeatureLayer.FeatureClass.AliasName
 
  Dim pTable As ITable
  Set pTable = pFeatureLayer.FeatureClass
  Dim pDataSet As IDataset
  Set pDataSet = pTable
  
  'If we can delete table, do it
  If pDataSet.CanDelete Then
    ptrans.StartTransaction
    pDataSet.Delete
    ptrans.CommitTransaction
    blnBien = True
  End If
  
  Exit Sub
  
ControlError:
  MsgBox Err.Description, vbExclamation, ""
    
End Sub</PRE></PRE>
[此贴子已经被作者于2004-7-6 8:33:23编辑过]
举报 回复(0) 喜欢(0)     评分
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15951
  • QQ
  • 铜币25345枚
  • 威望15368点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
2楼#
发布于:2004-07-05 17:04
<P>随便发个函数,不一定有帮助</P><P>Private Sub DeleteHisLibVersions(ByVal strFeatureClassName As String)
  Dim lCount As Long
  Dim sNeedDeleteTime
  Dim pQueryFilter As esriCore.IQueryFilter
  Dim pFeatureCursor As esriCore.IFeatureCursor
  Dim pFeature As esriCore.iFeature
  Dim pFeatureClass As esriCore.IFeatureClass
  Dim pFeatureWorkSpace As esriCore.IFeatureWorkspace
  
  On Error GoTo ErrorHandler
  Set pFeatureWorkSpace = m_pSdeWorkspace
  Set pFeatureClass = pFeatureWorkSpace.OpenFeatureClass(strFeatureClassName)
  Set pQueryFilter = New esriCore.QueryFilter</P><P>  ProgressBar1.value = 1
  ProgressBar1.min = 1
  ProgressBar1.Max = pFeatureClass.FeatureCount(pQueryFilter)</P><P>  Set pFeatureCursor = pFeatureClass.Search(pQueryFilter, False)
  Set pFeature = pFeatureCursor.NextFeature
  Do While Not pFeature Is Nothing
    pFeature.Delete
     ProgressBar1.value = ProgressBar1.value + 1
    Me.Refresh
    
    Set pFeature = pFeatureCursor.NextFeature
  Loop
  Exit Sub
ErrorHandler:
  
End Sub
</P>
GIS麦田守望者,期待与您交流。
举报 回复(0) 喜欢(0)     评分
游客

返回顶部