FAQ
エラー:“Insufficient permissions”

ナレッジ番号:5514 | 登録日:2023/07/27 | 更新日:2024/11/21

エラー・メッセージ

パーソナル ジオデータベース内のフィーチャクラスを編集する ArcObjects コードを SDE ジオデータベース内のバージョン対応レイヤに対して実行すると以下のエラーが発生します。

“Insufficient permissions”

上記エラーメッセージとともに以下の情報も表示されます。

[<データベース名>.<ユーザ名>.<フィーチャクラス名>]
[STATE_ID=####]

データベース名は現在使用している DBMS の名前、ユーザ名はフィーチャクラスの所有者、###はステート ID です。

原因

バージョン対応レイヤを編集する際には EditOperation が必要となります。

解決策

以下のサンプルコードはIEditorインタフェースを使用している際にEditOperationを追加する方法を示します。



Sub addPointToFirstLayer()

  Dim pMap As IMap
  Dim pMxDoc As IMxDocument
  Dim pFeatLyr As IGeoFeatureLayer
  Dim pFClass As IFeatureClass
  Dim pDS As IDataset
  Dim pWor As IWorkspace
  Dim pEditor As IEditor
  Dim pID As New UID
  Dim pFeat As IFeature
  Dim pPoint As IPoint

  pID = "esriCore.Editor"



  ' pID = "esriEditor.Editor"


  'バージョン9.0の場合
  Set pEditor = Application.FindExtensionByCLSID(pID)
  Set pMxDoc = ThisDocument
  Set pMap = pMxDoc.FocusMap

  Set pFeatLyr = pMap.Layer(0)
  Set pFClass = pFeatLyr.FeatureClass
  Set pDS = pFClass
  Set pWor = pDS.Workspace

  pEditor.StartEditing pWor
  pEditor.StartOperation
    Set pFeat = pFClass.CreateFeature
    Set pPoint = New Point
    pPoint.X = 2212000
    pPoint.Y = 397000
    Set pFeat.Shape = pPoint
    pFeat.Store
  pEditor.StopOperation "ポイントフィーチャの追加"
  pEditor.StopEditing True

End Sub



以下のサンプルコードはIWorkspaceEditインタフェースを使用している際にEditOperationを追加する方法を示します。



Sub addPointToFeatureClass()

  'このコード内のpWorとpClassは上記のコードと同様のインタフェースで



  '


宣言されていると仮定しています。

  Dim pFeat As IFeature
  Dim pPoint As IPoint

  Set pEditWS = pWor
  pEditWS.StartEditing True
  pEditWS.StartEditOperation
    Set pFeat = pFClass.CreateFeature
    Set pPoint = New Point
    pPoint.X = -59.05
    pPoint.Y = 51.11
    Set pFeat.Shape = pPoint
    pFeat.Store
  pEditWS.StopEditOperation
  pEditWS.StopEditing True
End Sub


メタデータ

種類

製品