Pages: 1
- Sujet précédent - arcgis 9.3 arcview Appel d'une Arctoolbox dans une fonction vba. - Sujet suivant
#1 Mon 16 February 2009 16:40
- jkranklader
- Participant occasionnel
- Date d'inscription: 16 Feb 2009
- Messages: 15
arcgis 9.3 arcview Appel d'une Arctoolbox dans une fonction vba.
Bonjour à tous,
je vous envois un appel à l'aide au niveau de la programmation vba. Voila je cherche à développer une application qui à partir d'une sélection graphique me permet de retourner automatiquement mes code INSEE de communes dans une requête SQL. Jusque là rien de compliqué sauf que les requêtes SQL en question doivent être automatiquement ajoutée dans une toolbox que j'ai crée au préalable. Voici mes deux fonctions:
Code:
Private Sub Etude_auto_MouseDown(ByVal button As Long, ByVal shift As Long, ByVal x As Long, ByVal y As Long) Dim pmxdoc As IMxDocument Set pmxdoc = ThisDocument Dim pmap As IMap Set pmap = pmxdoc.FocusMap Dim ptable As ITable Set ptable = pmap.Layer(0) Dim psfilter As ISpatialFilter Set psfilter = New SpatialFilter Set psfilter.Geometry = pmxdoc.CurrentLocation psfilter.SpatialRel = esriSpatialRelWithin Dim pf_selec As IFeatureSelection Set pf_selec = ptable pf_selec.SelectFeatures psfilter, esriSelectionResultNew, False pmxdoc.ActiveView.Refresh Dim p_selset As ISelectionSet Set p_selset = pf_selec.SelectionSet Dim pcursor As ICursor Set pcursor = ptable.Search(psfilter, False) Dim prow As IRow Set prow = pcursor.NextRow Dim msg As String msg = "" Dim num_champ As Byte num_champ = ptable.FindField("INSEE") If prow Is Nothing Then msg = "Cliquez sur une commune svp!!" Else Call opengptool End If MsgBox msg, , "selection" End Sub Sub opengptool() Dim puid As New UID Dim patbext As iarctoolboxextension Dim patb As IArcToolbox Dim ptool As IGPTool Dim pparams As IArray Dim pparameter As IGPParameter Dim pparamedit As IGPParameterEdit Dim pdatatype As IGPDataType Dim svalue As String Dim trackcancel As ITrackCancel Dim penvmgr As IGPEnvironmentManager Dim pmess As IGPMessages puid = "esrigeoprocessingui.arctoolboxextension" Set patbext = Application.FindExtensionByCLSID(puid) Set patb = patbext.arctoolbox Set ptool = patb.gettoolbynamestring("Etude_auto") Set params = ptool.ParameterInfo 'premier paramètre Set pparameter = pparams.Element(0) Set pparamedit = pparameter Set DataType = pparameter.DataType svalue = "" Set pparamedit.Value = pdatatype.CreateValue(svalue) 'second paramètre Set pparameter = pparams.Element(1) Set pparmedit = IGPParameter Set DataType = pparameter.DataType svalue = "" Set pparamedit.Value = pdatatype.CreateValue(svalue) Set ptrackcancel = New CancelTracker Set penvmgr = New GPEnvironmentManager Set pmess = ptool.Validate(pparams, False, penvmgr) ptool.Execute pparams, ptrackcancel, penvmgr, pmess End Sub
Mon problème est le suivant:
Le vba de mon arcview ne me reconnaît pas les caractéristiques de certaines variables (en rouge) en gros elles ne sont pas disponibles dans ma liste déroulante lorsque je tape mon code.
Je vous remercie d'avance. Sivous trouvez d'autres problèmes veuillez me le signifier...JE SUIS ENCORE NOVICE DANS LA MATIERE...
cordialement jkranklader.
[edit modération : Utilisez la balise "code"]
Hors ligne
#2 Tue 17 February 2009 11:19
- jkranklader
- Participant occasionnel
- Date d'inscription: 16 Feb 2009
- Messages: 15
Re: arcgis 9.3 arcview Appel d'une Arctoolbox dans une fonction vba.
C'est encore moi!!!! dsl les couleurs ne se sont pas affichées,. Mon premier problème a été résolu, il s'agissait d'une référence qui n'était pas activée!! (ESRI GeopocessingUI Object Library)
Je suis entrer maintenant dans une phase de débugage. désormais l'erreur se situe dans :
set ptool = patb.gettoolbynamestring(Etude_auto)
le message d'erreur est : automation erreur.
Est-il possible que je n'ai pas bien bien placée ma toolbox lors de sa création ou faut-il que j'ajoute des informations supplémentaires pour la située (un chemin de référence par exemple)? cordialement jkranklader
Hors ligne
#3 Thu 19 February 2009 08:42
- jkranklader
- Participant occasionnel
- Date d'inscription: 16 Feb 2009
- Messages: 15
Re: arcgis 9.3 arcview Appel d'une Arctoolbox dans une fonction vba.
Tous les problèmes ayant été résolu voici la suite :
Maintenant le problème le plus interessant va faire son apparition, La toolbox ouvre une boîte de dialogue contenant quatre paramètres. Dans l'ordre on obtient:
1 - Une requête sql.
2 - Un chemin de réference à inscrire.
3 - Une requête sql.
4 - Un Chemin de référence.
Sur le code de base que j'ai fourni sur le forum, la fonction permettant d'executer la toolbox est appeler par une fonction de sélection. L'outil devrait dans l'ideal selectionner plusieurs entités d'une couche et donner une valeur de chacune des selections (le code_INSEE de chaque communne par exemple) puis en suite répercuté ces valeurs dans les selections SQL de la toolbox (d'où le challenge pour un novice).
l'Environnement dans le quel je me trouve pour le moment est le suivant, il y à une couche de contour de commune dans laquelle je dois faire mes sélections. Ma programmation me permet pour l'instant de sélectionner une seule commune est de lancer la procédure d'appel de la toolbox (qui bugue car je n'ai pas rempli les lignes svalue correspondant au requêtes SQL)
Je m'explique, l'outil nous permettra de retourner une ou plusieurs communes dans une requête SQL qui devra donc s'allonger ou se raccourcir en conséquence voila tout le problème!! La programmation devra comprendre des boucles while une dans la sélection pour retourner plusieurs communes et une à chaque requêtes SQL. (les requêtes sont presque les mêmes). La valeur que l'on cherche à renvoyer est le code_INSEE des communnes.
voici un exemple de requête SQL :
"INSEE"= '85001' AND "INSEE"= '85002' AND "INSEE" = '85003'
la deuxième requête sera:
"INSEE2"= '85001' AND "INSEE2"= '85002' AND "INSEE2" = '85003'
voila je pense que je peux me mettre à réflechir intensémment sur le problème, ma première difficulté va être de sélectionner plusieurs communes dans mon mousedown sans que l'outil s'éxecute à chaque communne sélectionnée.
cordialement jkranklader.
Hors ligne
Pages: 1
- Sujet précédent - arcgis 9.3 arcview Appel d'une Arctoolbox dans une fonction vba. - Sujet suivant