Pages: 1
- Sujet précédent - Sauvegarder une requete passée dans "QueryDef" comme une couche - Sujet suivant
#1 Thu 26 June 2008 20:14
- calito
- Participant actif
- Date d'inscription: 2 Jun 2008
- Messages: 112
Sauvegarder une requete passée dans "QueryDef" comme une couche
Bonsoir,
Comment je peux sauvegarder cette requette comme une couche?
voici le code
Code:
Dim Doc As IMxDocument Set Doc = ThisDocument Dim pMap As IMap Set pMap = Doc.FocusMap Dim FLayer As IFeatureLayer Dim pLayer As ILayer Set pFLayer = pMap.Layer(ComboBox6.ListIndex) Dim Def As IFeatureLayerDefinition2 Set Def = pFLayer Def.DefinitionExpression = "Pays='" & ComboBox8.Text & "'" Doc.ActiveView.Refresh Dim SelLayer As IFeatureLayer Set SelLayer = Def.CreateSelectionLayer(ComboBox6.Text, True, vbNullString, vbNullString) pMap.Layer(0).Name = ComboBox8.Text pMap.AddLayer SelLayer
Hors ligne
#2 Fri 27 June 2008 09:01
Re: Sauvegarder une requete passée dans "QueryDef" comme une couche
Sauvegarder cette requête comme une couche ? Créer le fichier .lyr, c'est bien ça ?
Jérôme Cuinet
L'avantage de la Chine, c'est que le soleil se couche plus tard !
Hors ligne
#3 Fri 27 June 2008 15:07
- calito
- Participant actif
- Date d'inscription: 2 Jun 2008
- Messages: 112
Re: Sauvegarder une requete passée dans "QueryDef" comme une couche
Je veux seulement creer une couhe avec le resultat de la requete passe dans Querrydef; i,e l'ajouter dans le bloc de données sans creer un fichier .lyr.
Avec le code la haut, il l'ajoute pour moi dans le bloc, mais si je vais dans propriete du nouveau couche et j'enleve la requete dans l'onglet QuerryDeffinition, il me donne une copie de la couche source, couche à partir duquel j'avais passe la requete.
Ou du moins, par quel autres moyens je peux passer une requete sur une couche et creer une couche à partir des entitées selectionnée?
Merci.
Hors ligne
#4 Fri 27 June 2008 17:39
- Tnarbiv
- Participant assidu
- Lieu: Véretz
- Date d'inscription: 5 Sep 2005
- Messages: 392
Re: Sauvegarder une requete passée dans "QueryDef" comme une couche
Ceci est un exemple, reste à toi de le modifier et de l'adapter à tes besoins
Est ce que cela te convient :
Code:
Public Sub dedede() Dim pmxdoc As IMxDocument Set pmxdoc = ThisDocument Dim pmap As IMap Set pmap = pmxdoc.FocusMap Dim player As ILayer Set player = pmap.Layer(1) 'affichage des départements ayant comme code région 11 Dim pfldef As IFeatureLayerDefinition Set pfldef = player pfldef.DefinitionExpression = "CODE_REG = '11'" pmxdoc.ActiveView.Refresh 'je récupère les départements n'ayant pas répondu à mon questionnaire Dim pQueryFilter As IQueryFilter Set pQueryFilter = New QueryFilter pQueryFilter.WhereClause = "Répondu = 'NON'" Dim pFSel As IFeatureSelection Set pFSel = player pmxdoc.ActiveView.PartialRefresh esriViewGeoSelection, Nothing, Nothing pFSel.SelectFeatures pQueryFilter, esriSelectionResultNew, False pmxdoc.ActiveView.PartialRefresh esriViewGeoSelection, Nothing, Nothing 'Je combine mon ensemble de définition et ma requête et j'ajoute ma couche de sélection Dim pflsel As IFeatureLayer Set pflsel = pfldef.CreateSelectionLayer("Selection_Layer", True, vbNullString, vbNullString) pfldef.DefinitionExpression = "" pFSel.Clear pmap.AddLayer pflsel End Sub
Dans ton cas l'ensemble définition et la requête sont les mêmes.
Ayez le réflexe "Développement Durable": N'imprimez ce message que si nécessaire.
Hors ligne
#5 Mon 30 June 2008 10:36
- calito
- Participant actif
- Date d'inscription: 2 Jun 2008
- Messages: 112
Re: Sauvegarder une requete passée dans "QueryDef" comme une couche
Okey, c'est bon.
Merci Tnarbiv. Vous etes Super.
Hors ligne
Pages: 1
- Sujet précédent - Sauvegarder une requete passée dans "QueryDef" comme une couche - Sujet suivant