Récupérer nom d'index dans table Access

Résolu
Notpa Messages postés 125 Date d'inscription dimanche 13 janvier 2019 Statut Membre Dernière intervention 8 janvier 2021 - 24 sept. 2020 à 10:42
Notpa Messages postés 125 Date d'inscription dimanche 13 janvier 2019 Statut Membre Dernière intervention 8 janvier 2021 - 28 sept. 2020 à 17:12
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

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
24 sept. 2020 à 10:52
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

0
Notpa Messages postés 125 Date d'inscription dimanche 13 janvier 2019 Statut Membre Dernière intervention 8 janvier 2021 1
24 sept. 2020 à 11:08
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.
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
24 sept. 2020 à 11:39
0
Notpa Messages postés 125 Date d'inscription dimanche 13 janvier 2019 Statut Membre Dernière intervention 8 janvier 2021 1
24 sept. 2020 à 11:45
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).
0
Notpa Messages postés 125 Date d'inscription dimanche 13 janvier 2019 Statut Membre Dernière intervention 8 janvier 2021 1
28 sept. 2020 à 17:12
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
0
Rejoignez-nous