Récupérer nom d'index dans table Access [Résolu]

Signaler
Messages postés
116
Date d'inscription
dimanche 13 janvier 2019
Statut
Membre
Dernière intervention
28 septembre 2020
-
Messages postés
116
Date d'inscription
dimanche 13 janvier 2019
Statut
Membre
Dernière intervention
28 septembre 2020
-
Bonjour,

Je sais récupérer les noms de champs dans une table Access :

Global champ As Field
Global tbl as Recordset
Global noms(50) as Sring
Global x as Integer
...
x = 1
For Each champ In tbl.Fields
  noms(x) = champ.Name  
x = x + 1
Next


Ça marche très bien : je récupère dans la table noms tous les noms de champs de la table Access tbl. Mais ce que je ne sais pas faire, c'est comment récupérer les indexes (s'il y en a !) associés aux noms des champs.

Une idée ?

Merci !

4 réponses

Messages postés
6947
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
12 octobre 2020
113
Bonjour,

Pour se connecter à une base Access en VB6 voir ceci:

https://codes-sources.commentcamarche.net/faq/160-vb6-acces-a-une-base-de-donnees-access-en-ado

Messages postés
116
Date d'inscription
dimanche 13 janvier 2019
Statut
Membre
Dernière intervention
28 septembre 2020
1
Merci pour la réponse, mais je n'ai aucun souci pour me connecter. Ce que je veux, c'est récupérer dans mon code les noms des indexes d'une table. Avec VISData, je sais faire, mais en code VB6, je ne sais pas.
Messages postés
6947
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
12 octobre 2020
113
Messages postés
116
Date d'inscription
dimanche 13 janvier 2019
Statut
Membre
Dernière intervention
28 septembre 2020
1
Merci,

Ça aussi je sais faire (ajout dynamique de tables, champs et indexes). Mais c'est l'inverse que je veux : retrouver les noms d'indexes (pour les tables et champs, no problem).
Messages postés
116
Date d'inscription
dimanche 13 janvier 2019
Statut
Membre
Dernière intervention
28 septembre 2020
1
Hello !

J'ai trouvé ! Il ne faut pas utiliser le RecordSet mais le TableDefs pour retrouver les indexes. Le code suivant envoie via une Msgbox les indexes de la table nommée Mots :

Option Explicit
Dim db As Database
Dim tb_def As TableDef
Dim tb As Recordset
Dim idxLoop As Index
Dim fic As String

Private Sub Form_Load()

fic = App.Path & "\jam.mdb"
Set db = OpenDatabase(fic)
Set tb = db.OpenRecordset("mots")
Set tb_def = db.TableDefs!mots
With tb
   For Each idxLoop In tb_def.Indexes
      .Index = idxLoop.Name
      MsgBox "Index = " & .Index
   Next idxLoop
   .Close
End With
db.Close
       
End Sub


Je passe en Résolu.

Soyez prudents !

Notpa