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 Fri 25 April 2008 11:49

badr
Participant occasionnel
Date d'inscription: 3 Nov 2007
Messages: 40

Projet ArcGIS / base Acces en VBA ou VB6

bonjour tout le monde, j'ai crée un listbox avec V.B editor d'ArcGIS 9.0,mais je n'arrive pas à la lier avec une table Access pour pouvoir afficher le contenu d'un champ de cette table

Dernière modification par Jérôme C (Sun 27 April 2008 08:59)

Hors ligne

 

#2 Fri 25 April 2008 13:08

Tnarbiv
Participant assidu
Lieu: Véretz
Date d'inscription: 5 Sep 2005
Messages: 392

Re: Projet ArcGIS / base Acces en VBA ou VB6

si je me souviens bien pour récupérer une base de données access et l'utiliser par il faut que tu créé un AccessWorkpsaceFactory et ainsi de suite.
bref ... utiliser les arcobjects

Dernière modification par Tnarbiv (Fri 25 April 2008 13:08)


Ayez le réflexe "Développement Durable": N'imprimez ce message que si nécessaire.

Hors ligne

 

#3 Fri 25 April 2008 13:15

badr
Participant occasionnel
Date d'inscription: 3 Nov 2007
Messages: 40

Re: Projet ArcGIS / base Acces en VBA ou VB6

j'ai pas bien compris, tu peux m'expliquer un peu plus

Hors ligne

 

#4 Fri 25 April 2008 14:13

Tnarbiv
Participant assidu
Lieu: Véretz
Date d'inscription: 5 Sep 2005
Messages: 392

Re: Projet ArcGIS / base Acces en VBA ou VB6

le plus simple ce serait que tu fasses des recherches ici http://edndoc.esri.com/arcobjects/9.0/
voici un exemple de ce que je te disais tout à l'heure : http://edndoc.esri.com//arcobjects/9.2/ … 60d87d.htm
une fois que tu as récupéré ta base de données access, il faut que tu récupères ta table, ensuite ta collection de champs puis ton champ et ensuite tu listes les valeurs de ton champ afin de les mettre dans ta liste déroulante.


Ayez le réflexe "Développement Durable": N'imprimez ce message que si nécessaire.

Hors ligne

 

#5 Fri 25 April 2008 18:49

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

Re: Projet ArcGIS / base Acces en VBA ou VB6

Grande précision :

ArcGIS n'est pas Access,

Remplir une liste-boite ne se fait pas en trois clic, ça se fait par programmation VBA, au grand malheur des non-inités et peut-être des habitués aux formulaires Access.


Jérôme Cuinet
L'avantage de la Chine, c'est que le soleil se couche plus tard !

Hors ligne

 

#6 Sat 26 April 2008 00:30

badr
Participant occasionnel
Date d'inscription: 3 Nov 2007
Messages: 40

Re: Projet ArcGIS / base Acces en VBA ou VB6

je le sais et je demande s'il y a quelqu'un qui peut m'aider

Hors ligne

 

#7 Sat 26 April 2008 08:46

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

Re: Projet ArcGIS / base Acces en VBA ou VB6

Cours en ligne de l'ENSG ?
http://www.ensg.eu/FAD/FAD_PDF/Sig_Pdf/Cours_vba.pdf

C'est un bon début pour apprendre le VBA d'ArcGIS. Tu n'auras surement pas ta réponse directement, mais c'est peut-être plus abordable que le site de doc d'ESRI si tu découvres.


Jérôme Cuinet
L'avantage de la Chine, c'est que le soleil se couche plus tard !

Hors ligne

 

#8 Sat 26 April 2008 10:01

Kevin Jousseaume
Participant assidu
Lieu: Nanterre, région parisienne
Date d'inscription: 20 Mar 2006
Messages: 217

Re: Projet ArcGIS / base Acces en VBA ou VB6

Bonjour,

Par programmation, vous avez effectivement la possibilité d'utiliser les ArcObjects. Toutefois, si votre besoin se limite à consulter des données attributaires dans une table de votre base Access, vous avez aussi la possibilité d'utiliser les ADO. Si vous connaissez la syntaxe SQL, cela vous sera plus facile d'emploi que les ArcObjects.

Je vous mets ci dessous du code qui exécute une requête de sélection de valeurs distinctes dans une table "CABLE" d'une base Access. Pour faire fonctionner ce code, vous devez ajouter à votre projet VB la référence à la librairie Microsoft ActiveX Data Objects 2.x

J'espère que cela vous aidera. Et si vous souhaitez malgré tout utiliser les ArcObjects, j'essaierai de trouver le temps de vous indiquer comment faire.

Code:

Option Explicit

Public Function Test()

On Error GoTo EH

    Dim cnBase As ADODB.Connection
    Dim strAccessBddPath As String
    
    Dim rst As New ADODB.RecordSet
    Dim strSQL As String
    
    strAccessBddPath = "C:\MaBase.mdb"

    'Creation de la connexion a la base de donnees
    '---------------------------------------------
    Set cnBase = New ADODB.Connection
    cnBase.Open "Provider=Microsoft.Jet.OLEDB.4.0;" _
        & "Persist Security Info=False;Data Source=" & strAccessBddPath
                
    'Définition de la requête à éxécuter
    strSQL = "SELECT DISTINCT PROPRIETAIRE FROM CABLE"
    
    'Ouverture du recordset
    Set rst = OpenRecordset(cnBase, strSQL)
    
    'Boucle sur les différents enregistrements retournés du recordset
    If Not rst Is Nothing Then
        If rst.State <> 0 And rst.RecordCount > 0 Then
            
            rst.MoveFirst
            Do While Not rst.EOF

                'Affichage des valeurs du champ PROPRIETAIRE
                MsgBox rst.Fields("PROPRIETAIRE").Value
                
                rst.MoveNext
            Loop
            
            rst.Close
        End If
    End If
    
CleanUp:
    Set rst = Nothing
    
    'Fermeture de la connexion
    cnBase.Close
    Set cnBase = Nothing

Exit Function
EH:
    GoTo CleanUp
End Function

Public Function OpenRecordset(ByVal cnBase As ADODB.Connection, _
    ByVal strSQL As String) As ADODB.RecordSet
  
On Error GoTo EH
    
    Dim rstTmp As ADODB.RecordSet
    
    Set rstTmp = New ADODB.RecordSet
    
    rstTmp.CursorLocation = adUseClient
    rstTmp.ActiveConnection = cnBase
    rstTmp.CursorType = adOpenKeyset
    rstTmp.LockType = adLockOptimistic
    rstTmp.Open strSQL
    
    Set OpenRecordset = rstTmp

CleanUp:
    rstTmp.Close
    Set rstTmp = Nothing
    
Exit Function
EH:
    GoTo CleanUp
End Function

Cordialement,
Kevin Jousseaume

Hors ligne

 

#9 Sat 26 April 2008 11:58

badr
Participant occasionnel
Date d'inscription: 3 Nov 2007
Messages: 40

Re: Projet ArcGIS / base Acces en VBA ou VB6

merci pour le code Kevin, j'ai copier le code dans la procedure qui correspond à ma ListBox, mais en executant ce code rien ne change, c'est normal?

Hors ligne

 

#10 Sat 26 April 2008 19:04

Kevin Jousseaume
Participant assidu
Lieu: Nanterre, région parisienne
Date d'inscription: 20 Mar 2006
Messages: 217

Re: Projet ArcGIS / base Acces en VBA ou VB6

Avez-vous regardé si votre code générait des erreurs ? Vous pouvez le faire en mode debug ou bien mettant un MsgBox dans la pseudo-gestion d'erreur que j'avais initiée (après EH:).

Hors ligne

 

#11 Sat 26 April 2008 22:44

badr
Participant occasionnel
Date d'inscription: 3 Nov 2007
Messages: 40

Re: Projet ArcGIS / base Acces en VBA ou VB6

j'ai un  message d'erreur qui indique que l'expression " Option Explicit" est incorrecte dans une procedure

Hors ligne

 

#12 Sun 27 April 2008 00:49

Kevin Jousseaume
Participant assidu
Lieu: Nanterre, région parisienne
Date d'inscription: 20 Mar 2006
Messages: 217

Re: Projet ArcGIS / base Acces en VBA ou VB6

C'est normal, l'expression "Option Explicit" doit se situer en en-tête de votre code, en dehors de toute procédure.

Hors ligne

 

#13 Sat 26 April 2008 22:54

badr
Participant occasionnel
Date d'inscription: 3 Nov 2007
Messages: 40

Re: Projet ArcGIS / base Acces en VBA ou VB6

est ce que je peux monter mon projet en VB et appeler l'arcGIS à partir du VB pour afficher des cartes?

Hors ligne

 

#14 Sun 27 April 2008 08:53

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

Re: Projet ArcGIS / base Acces en VBA ou VB6

oui



à question vague, réponse précise.


Jérôme Cuinet
L'avantage de la Chine, c'est que le soleil se couche plus tard !

Hors ligne

 

#15 Sat 26 April 2008 00:42

badr
Participant occasionnel
Date d'inscription: 3 Nov 2007
Messages: 40

Re: Projet ArcGIS / base Acces en VBA ou VB6

j'ai crée une B.D access maintnant je calculer des ratios à partir de cette B.D sous ArcGIS et les afficher dans une interface que j'ai préapré. est ce qu'il y a quelqu'un qui pourra m'aider en ce qui concerne la lecture de la B.D en ArcGIS et le calcul des indicateurs

Hors ligne

 

#16 Sat 26 April 2008 23:40

AnOuChKa
Participant occasionnel
Lieu: MOSCOU
Date d'inscription: 19 Jul 2007
Messages: 37

Re: Projet ArcGIS / base Acces en VBA ou VB6

bonjour
bon pour la connection ( lire la BD de acces ) ,  va sur ArcCatalog et importe ta BD


Anya Mn - Ingénieur Etude et Développement SIG
anyamn.perso@texte-a-enlever.gmail.com

Hors ligne

 

#17 Sun 27 April 2008 00:50

badr
Participant occasionnel
Date d'inscription: 3 Nov 2007
Messages: 40

Re: Projet ArcGIS / base Acces en VBA ou VB6

tu pourras me donner plus de détails pr importer ma BD

Hors ligne

 

#18 Sat 26 April 2008 22:51

badr
Participant occasionnel
Date d'inscription: 3 Nov 2007
Messages: 40

Re: Projet ArcGIS / base Acces en VBA ou VB6

dans la boite à outil VBA  d'arcGIS, est ce qu'il y a un bouton qui permet d'etablir une liaison avec une B.D, dans le cas du V.B 6 il y a le bouton "Data"?

Hors ligne

 

#19 Sun 27 April 2008 09:09

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

Re: Projet ArcGIS / base Acces en VBA ou VB6

Bon, on va faire simple badr,

Tu as un projet Access, ArcGIS que tu veux lier. Tu as tout un lot de questions qui se recoupent. Donc, tant que tes préoccupations tournent autour du même sujet, tu poses tes questions dans le même sujet. Ce qui permettra de ne pas inonder le forum de nouveau sujet à chaque fois que tu apparait.

bien jojomatiquement,


Jérôme Cuinet
L'avantage de la Chine, c'est que le soleil se couche plus tard !

Hors ligne

 

#20 Sun 27 April 2008 14:49

badr
Participant occasionnel
Date d'inscription: 3 Nov 2007
Messages: 40

Re: Projet ArcGIS / base Acces en VBA ou VB6

ok,je vais résumer mon projet: j'ai une B.D Access, j'ai crée des formes avec visual basic editor d'ArcGIS, maintenant je veux calculer des indicateurs à partir des tables de la B.D mais je ne sais pas comment le faire

Hors ligne

 

#21 Sun 27 April 2008 19:48

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

Re: Projet ArcGIS / base Acces en VBA ou VB6

badr, dois-tu faire cela de façon automatique (la lecture de la BD) ou bien si tu ouvres tes tables dans ArcGIS et  si tu les traites alors comme des tables ArcGIS cela ne poses pas de problèmes ?

Dans le dernier cas, tu devrais essayer d'ajouter simplement ta base Access dans ArcMap en tant que données.


Jérôme Cuinet
L'avantage de la Chine, c'est que le soleil se couche plus tard !

Hors ligne

 

#22 Sun 27 April 2008 23:53

badr
Participant occasionnel
Date d'inscription: 3 Nov 2007
Messages: 40

Re: Projet ArcGIS / base Acces en VBA ou VB6

ce n'est pas un problème si je les utilise comme des tables ArcGIS. comment je peux ajouter ma base access dans ArcMap?

Hors ligne

 

#23 Mon 28 April 2008 08:53

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

Re: Projet ArcGIS / base Acces en VBA ou VB6

Tu ne vois pas ta table access dans la boite de dialogue "Ajouter Donnée" (Croix Jaune et Noire) ?

Et dans ArcCatalog, est-ce que tu la vois ?


Jérôme Cuinet
L'avantage de la Chine, c'est que le soleil se couche plus tard !

Hors ligne

 

#24 Mon 28 April 2008 11:56

badr
Participant occasionnel
Date d'inscription: 3 Nov 2007
Messages: 40

Re: Projet ArcGIS / base Acces en VBA ou VB6

Ds ArcCatalog je la vois. j'ai ecrit un code pour pouvoir me connecter à ma B.D et lire des champs à partir d'elle, mais je n'obtient rien après son execution, voilà mon code:
Private Sub ComboBox1_Change()
Dim con As ADODB.Connection
   Set con = New ADODB.Connection
   con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=  D:\sujet de fin d'etude\B.D\db1 "
   con.Open
  Dim rs As ADODB.RecordSet
  Set rs = New RecordSet
  rs.Open " select [NOM] from [COMMUNE] where ..., con, AdopenDynamic, AdLockOptimistic"
  res = rs![NOM]
  While rs.EOF = False
      ComboBox1.AddItem rs![NOM]
   Wend
   rs.Close
   con.Close
   End Sub

Hors ligne

 

Pied de page des forums

Powered by FluxBB