Quantcast
Channel: Forum SIG - Systèmes d'Information Géographique et Géomatique
Viewing all articles
Browse latest Browse all 8030

[ArcGIS 10.x] How to make a query-based layer

$
0
0
salut
je dispose d'une arcsde sqlserver geodatabase , qui contient des tables et des featureclass je veux faire des requettes sur cette base
j'ai vu le code qui ce trouve dans le lien suivant
http://help.arcgis.com/en/sdk/10.0/v...0000000t000000
ça marche pour la connexion avec la base de donne mais pour la création de l'instance de Iquerydef malheureusement non
voici mon code:
Code:

Dim pPropSet As IPropertySet
    Dim pSdeFact As IWorkspaceFactory
    Dim pFeatureWorkspace As IFeatureWorkspace
   
    Set pPropSet = New PropertySet
    With pPropSet
        .SetProperty "SERVER", "sde:sqlserver:SAM-PC "
        .SetProperty "INSTANCE", "sde:sqlserver:SAM-PC\SAMIA"
        .SetProperty "DATABASE", "sam"
        .SetProperty "USER", "sa"
        .SetProperty "PASSWORD", "1561994"
        .SetProperty "VERSION", "SDE.DEFAULT"
    End With
    Set pSdeFact = New SdeWorkspaceFactory
    Set pFeatureWorkspace = pSdeFact.Open(pPropSet, 0)
    MsgBox ("connection avec succee")
    Dim pQueryDef As IQueryDef
    'la ou ce bloque
    Set pQueryDef = pFeatureWorkspace.CreateQueryDef
    With pQueryDef
      .Tables = "COUNTIES, STATES"
        .SubFields = "COUNTIES.SHAPE, COUNTIES.OBJECTID, COUNTIES.NAME, STATES.STATE_ABBR"
        .WhereClause = "COUNTIES.STATE_FIPS = STATES.STATE_FIPS"
    End With
  'Get the feature class
    Dim pFeatureClass As IFeatureClass
    Dim pFeatureClassContainer As IFeatureClassContainer
    Set pFeatureClassContainer = pFeatureWorkspace.OpenFeatureQuery("My counties join", pQueryDef)
    If (pFeatureClassContainer.ClassCount <> 1) Then
        MsgBox "Failed to create feature class by query"
    Else
        Set pFeatureClass = pFeatureClassContainer.Class(0)
    End If
   
    'Add feature class as layer to the map
    Dim pFeatureLayer As IFeatureLayer
    Set pFeatureLayer = New FeatureLayer
    Set pFeatureLayer.FeatureClass = pFeatureClass
    pFeatureLayer.Name = pFeatureClass.AliasName
   
    Dim pMxDoc As IMxDocument
    Set pMxDoc = ThisDocument
    Dim pMap As IMap
    Set pMap = pMxDoc.FocusMap
    pMap.AddLayer pFeatureLayer
   
   
    Exit Sub
ErrorHandler:
  MsgBox Err.Description, vbInformation, "MakeFeatureQueryClass"
 End Sub


dans l'instruction Set pQueryDef = pFeatureWorkspace.CreateQueryDef
le message suivant s'affiche
"object doesn 't support this action"
merci

Viewing all articles
Browse latest Browse all 8030

Trending Articles