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é ?

#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

Renaud a écrit:

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

 

Pied de page des forums

Powered by FluxBB