#1 Fri 12 August 2011 12:01
- tnicolas
- Participant actif
- Date d'inscription: 18 Apr 2007
- Messages: 64
[ArcGis 9.1] jointure VBA
Bonjour,
J'ai un souci avec un code pour créer des jointures, en fait je n'arrive pas à en créer plusieurs sur une même table.
J'ai une table lieu non carto contenant un champs id_commune,
une table commune carto avec les champs id_commune et id_dep,
une table dep carto avec les champs id_dep et id_reg.
J'arrive à joindre lieu et commune, mais dés que je veux joindre lieu_commune avec dep, ça supprime toutes les jointures ... . Quelqu'un à une idée ou une piste ?
Le code
Code:
Sub refairejointure() 'créer une jointure Dim mondoc As IMxDocument Dim macarte As IMap Dim pFeatLayer As IFeatureLayer Dim pDispTable As IDisplayTable Dim pDispTable2 As IDisplayTable Dim pFCLayer As IFeatureClass Dim matable_commune As ITable Dim matable_dep As ITable Dim i As Integer Dim mestables As IStandaloneTableCollection Dim latable As IStandaloneTable Dim matable As ITable Dim champ1 As String Dim champ2 As String Dim pMemRelFact As IMemoryRelationshipClassFactory Dim pRelClass As IRelationshipClass Dim pDispRC As IDisplayRelationshipClass Dim pSelItem As IUnknown Set mondoc = ThisDocument Set macarte = mondoc.FocusMap For i = 0 To macarte.LayerCount - 1 If macarte.Layer(i).Name = "commune" Then Set pFeatLayer = macarte.Layer(i) Set pDispTable = pFeatLayer Set pFCLayer = pDispTable.DisplayTable Set matable_commune = pFCLayer End If If macarte.Layer(i).Name = "dep" Then Set pFeatLayer = macarte.Layer(i) Set pDispTable = pFeatLayer Set pFCLayer = pDispTable.DisplayTable Set matable_dep = pFCLayer End If Next i Set mestables = macarte For i = 0 To mestables.StandaloneTableCount - 1 Set latable = mestables.StandaloneTable(i) If latable.Name = "lieu" Then Set pDispTable2 = latable Set matable = pDispTable2.DisplayTable Set pSelItem = pDispTable2 Exit For End If Next i champ1 = "id_commune" champ2 = "id_commune" Set pMemRelFact = New MemoryRelationshipClassFactory Set pRelClass = pMemRelFact.Open("LayerToTable", matable, champ1, matable_commune, champ2, "forward", "backward", esriRelCardinalityOneToMany) Set pDispRC = pSelItem pDispRC.DisplayRelationshipClass pRelClass, esriLeftInnerJoin champ1 = "commune.id_dep" champ2 = "id_dep" Set pMemRelFact = New MemoryRelationshipClassFactory Set pRelClass = pMemRelFact.Open("LayerToTable", matable, champ1, matable_dep, champ2, "forward", "backward", esriRelCardinalityOneToMany) Set pDispRC = pSelItem pDispRC.DisplayRelationshipClass pRelClass, esriLeftInnerJoin End Sub
Hors ligne
#2 Fri 12 August 2011 14:38
- tnicolas
- Participant actif
- Date d'inscription: 18 Apr 2007
- Messages: 64
Re: [ArcGis 9.1] jointure VBA
En fait je voulais démonter et remonter des jointures pour pouvoir mettre à jour la table lieu. J'ai réussi à trouver une méthode pour pouvoir mettre à jour sans démonter les jointures en passant par le calculator.
Hors ligne