Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#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

Jeirhome
Membre
Lieu: Liverion
Date d'inscription: 22 Aug 2006
Messages: 4298
Site web

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

 

Pied de page des forums

Powered by FluxBB