#1 Mon 16 June 2008 11:19
- pierrotG.
- Participant occasionnel
- Date d'inscription: 16 Jun 2008
- Messages: 29
ActiveX GeoXplorer
Bonjour à tous,
Je suis débutant en programmation VBA.
J'ai une table avec les coordonnées X et Y que je souhaite renseigner automatiquement en cliquant sur l'objet du contrôle ActiveX (carte GéoConcept).
Concrètement, je travaille sur un logiciel sig (Géoconcept 6.0) où les données sont structurées de la façon suivante : Type/Sous-type/Champ.
Si on prend l'exemple de l'ActiveX (carte de la France), le Type est "Commune RGC" avec plusieurs sous-types comme "Chef-lieu de canton", "Préfecture"... et plusieurs champs pour chaque objet (ex : identifiant, nom, coordonnées X et Y...).
Je voudrais ainsi avoir des conseils sur l'ActiveX.Toute aide sera la bienvenue.
Merci d'avance
Hors ligne
#2 Thu 19 June 2008 10:01
- Renaud
- Membre
- Lieu: Ploemeur (56)
- Date d'inscription: 9 Mar 2006
- Messages: 2315
Re: ActiveX GeoXplorer
Bonjour,
L'ActiveX Géoconcept est un outils très intéressant permettant la navigation dans une carte Géoconcept depuis un autre logiciel (Access ou Powerpoint par exemple). Navigation, c'est à dire zoom, déplacement, aller à, choix d'une visibilité pré-établie, affichage des fiches et mini-fiches et quelques autres fonctions simples.
Il n'est pas possible de modifier les objets via l'ActiveX. Il faut une licence Géoconcept classique.
Ce que tu peux faire, si j'ai bien compris ton besoin, c'est travailler dans Access. Tu pourras alors sélectionner un objet dans l'ActiveX en cliquant dessus, et récupérer sons sous-type et son identifiant. Ces informations te permettront d'afficher et modifier un enregistrement Access correspondant à cet objet. Un lien (permanent ou non) établi entre les bases de données d'Access et Géoconcept permettra de répercuter tes modifications dans la base Géoconcept.
Je te conseille une recherche dans le forum, les possibilités de liaisons Géoconcept-Access y sont souvent abordées.
Renaud Mouche
Hors ligne
#3 Thu 19 June 2008 10:41
- pierrotG.
- Participant occasionnel
- Date d'inscription: 16 Jun 2008
- Messages: 29
Re: ActiveX GeoXplorer
Bonjour Renaud
Il n'est pas possible de modifier les objets via l'ActiveX.
Je ne veux pas modifier les objets via l'ActiveX, je veux juste ressortir une information (coordonnées X et Y d'un point) en cliquant sur cet ActiveX dans un formulaire Access, et je veux ensuite que cette information soit intégrée à une base de données Access.
Je vais tenter de mieux expliquer mon problème : un collègue va sur le terrain pour faire un relevé des poteaux incendie. Le relevé correspond à l'état de fonctionnement, la taille, etc... et les coordonnées X et Y. Je réalise donc un formulaire sur Access pour qu'il rentre ces données directement, et je veux insérer un ActiveX GeoXplorer pour qu'il rentre les coordonnées automatiquement juste en cliquant sur la carte, plutôt qu'il ait à les saisir manuellement : on gagne du temps et on évite des erreurs.
Du coup, je me disais que ce serait plus simple de reprendre les coordonnées qui apparaissent sur la mini-fiche et de les copier ou de les insérer, mais je ne sais pas si c'est possible.
Ou alors, avec le lien, on va chercher l'information dans la base de données de Géoconcept.
J'espère m'être mieux fait comprendre.
Merci
Hors ligne
#4 Thu 19 June 2008 11:34
- Renaud
- Membre
- Lieu: Ploemeur (56)
- Date d'inscription: 9 Mar 2006
- Messages: 2315
Re: ActiveX GeoXplorer
Si les (X,Y) sont déjà corrects dans le SIG Utilise le lien Géoconcept-Access pour renseigner ta table Access avec le contenu de ta table Géoconcept.
C'est beaucoup plus simple et beaucoup plus fiable.
Renaud Mouche
Hors ligne
#5 Fri 20 June 2008 16:09
- pierrotG.
- Participant occasionnel
- Date d'inscription: 16 Jun 2008
- Messages: 29
Re: ActiveX GeoXplorer
Je veux créer ce lien grâce à la programmation du formulaire.
Je ne sais pas montrer le chemin jusqu'aux coordonnées en passant par le type/sous-type/champ en Vba
Pour le moment j'ai qqchose comme ça (15 et 5 étant des valeurs arbitraires) :
Private Sub GeoXplorer4_GotFocus()
Dim CoordX As Integer
Dim CoordY As Integer
GeoXplorer4.XgoTabName = "1) Carte administrative"
DoCmd.GoToControl "Texte0"
CoordX = 15
Me.Texte0.Text = CoordX
DoCmd.GoToControl "Texte5"
CoordY = 5
Me.Texte5.Text = CoordY
End Sub
Faut-il utiliser la fonction Call, Class et SubClass ou GCPoint ou.... ?
Merci
Hors ligne
#6 Fri 20 June 2008 16:55
- Renaud
- Membre
- Lieu: Ploemeur (56)
- Date d'inscription: 9 Mar 2006
- Messages: 2315
Re: ActiveX GeoXplorer
Si j'étais toi, j'essaierai avec la procédure évènementielle '_GEOSelectionChanged' de l'ActiveX, ou '_OnClick' d'un bouton 'Récupérer XY'. Le '_GotFocus' me semble assez peu maitrisable.
Voici un bout de code que j'ai commis pour lire l'identifiant d'un objet sélectionné par clic dans l'ActiveX.
Je n'ai laissé ici que l'essentiel, tu pourrais avoir plus de précautions à prendre.
GCX désigne sur l'ActiveX.
Quand j'ai écrit ça (il y a une dizaine d'années), je n'avais accès qu'aux bibliothèques manipulant l'ActiveX, pas à celles des objets (class, subclass, ...). Il existe sans doute plus simple. Tu peux poser la question sur le Gun (Geoconcept Users Network), qui anime un forum 'développeurs'.
Code:
'nombre d'objets SIG sélectionnés sélection_SIG = GCX.XgoNumberOfSelectedObjects 'si il n'y a qu'un seul objet sélectionné, récupération de la fiche et lecture du Sous-type If sélection_SIG = 1 Then fiche_SIG = GCX.XgoObjectInfo 'Recherche du champ identifiant : on enlève en boucle le champ le plus à gauche, jusqu'à trouver 'Identifiant' While Left(fiche_SIG, 14) <> "IDENTIFIANT : " And fiche_SIG <> Chr(10) 'Chr(10) est le passage à la ligne, qui marque le changement de champ fiche_SIG = Right(fiche_SIG, Len(fiche_SIG) - InStr(fiche_SIG, Chr(10))) Wend 'Si on a trouvé le champ, on extrait la valeur If Left(fiche_SIG, 14) = "IDENTIFIANT : " Then Idt_Station_Hydro = Mid(fiche_SIG, 15, 8) End If End If
Si techniquement ça marche, je continue à penser que la solution est lourde par rapport à un lien de bases de données.
Dernière modification par Renaud (Fri 20 June 2008 16:55)
Renaud Mouche
Hors ligne