Как перехватить запрос логина к SDE

0 голосов
спросил 17 Март, 06 от filippov70 (5,320 баллов) в категории Программные продукты Esri
Здравствуйте.
Загружаются файлы слоев (lyr) при помощи следующего кода

Public Sub AddLayerFileToMap(filePath As String)

 
  Dim pGxLayer As IGxLayer
  Dim pGxFile As IGxFile

  Set pGxLayer = New GxLayer
  Set pGxFile = pGxLayer
  pGxFile.Path = filePath
  Dim pMxDoc As IMxDocument
  Set pMxDoc = ThisDocument
  pMxDoc.FocusMap.AddLayer pGxLayer.layer
 
End Sub

если слой ссылается на фичакласс СДЕ, то выходит стандартное окно
с предложением логиниться
как сделать чтобы не было этого окна?
имя пользователя и пароль есть в переменных

7 Ответы

0 голосов
ответил 17 Март, 06 от Tatkis (2,420 баллов)

Это делается через IPropertySet, приблизительно таким образом:

  Dim pPropset As IPropertySet
  Set pPropset = New PropertySet
   
  Dim pFact As IWorkspaceFactory
  Dim pWorkspace As IWorkspace
    
  Select Case iWorkspaceConnect
  Case enumGeodatabase ' Geodatabase (SDE)
    With pPropset
      .SetProperty "Server", "hephaestus"
      .SetProperty "Instance", "sde8_mss"
      .SetProperty "Database", "sde"
      .SetProperty "user", "sde"
      .SetProperty "password", "go"
      .SetProperty "version", "sde.DEFAULT"
    End With
    
    Set pFact = New SdeWorkspaceFactory
    MsgBox "Geodatabase"
  Case enumPersonalGeodatabase ' Personal Geodatabase (Access)
    pPropset.SetProperty "DATABASE", "d:\\data\\Access Data\\SDETest.mdb"
    Set pFact = New AccessWorkspaceFactory
    MsgBox "Personal Geodatabase"
  Case enumShape ' Shapefile
    pPropset.SetProperty "DATABASE", "D:\\data\\SDEtestData\\Greeley"
    Set pFact = New ShapefileWorkspaceFactory
    MsgBox "Shapefile"
  Case enumCoverage ' Coverage
    pPropset.SetProperty "DATABASE", "D:\\data\\Coverage"
    Set pFact = New ArcInfoWorkspaceFactory
    MsgBox "Coverage"
  End Select
    
  ' Open the Workspace
  Set pWorkspace = pFact.Open(pPropset, Me.hWnd)
    
  Dim pFeatureWorkspace As IFeatureWorkspace
  Set pFeatureWorkspace = pWorkspace
    
  ' Open the FeatureClass
  ' Coverage data requires that the addition of the geometry type
  ' when opening the feature class (in this case polgon). The
  ' feature class name is separated from the geometry type with a
  ' ":".
  Dim pFeatureClass As IFeatureClass
  If iWorkspaceConnect = enumCoverage Then
    Set pFeatureClass = pFeatureWorkspace.OpenFeatureClass("parcels:polygon")
  Else
    Set pFeatureClass = pFeatureWorkspace.OpenFeatureClass("parcels")
  End If

0 голосов
ответил 17 Март, 06 от filippov70 (5,320 баллов)
Как я понимаю, выше описанное для программного открытия фичаклассов.
Мне нужно загружать в карту lyr-файлы. Некоторые из них ссылаются на фичаклассы в SDE, да еще и из разных датасетов.
Вот когда тикие lyrы пытаются загрузиться выходит окошко, мол надо ввести юзернейм и пассворд.
Здесь явно происходит системное событие, но какое?????
и что нужно прописать в обработчике такого события, чтобы окошко не выводилось. Пользователь/пароль имеются в двух переменных
image
0 голосов
ответил 17 Март, 06 от Tatkis (2,420 баллов)
Могу предложить только сделать отдельную кнопку на добавление lyr-файлов, и в обработке события нажатия этой кнопки прописать свойства SDE
0 голосов
ответил 17 Март, 06 от filippov70 (5,320 баллов)
Тогда еще и оформление программно делать надо будетimage
0 голосов
ответил 17 Март, 06 от Alexander1 (32,520 баллов)
Эта проблема решается с помощью ISetDefaultConnectionInfo2 Interface
0 голосов
ответил 20 Март, 06 от filippov70 (5,320 баллов)
Уважаемый Alexander,
а какое событие предшествует появлению
окна логина к SDE?
0 голосов
ответил 20 Март, 06 от Alexander1 (32,520 баллов)

Как такового события, которое можно перехватить и обработать, перед появлением окна логина не происходит.

Идет добаление слоя SDE, а перед этим, естественно, устанавливается SDE Connection.

Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...