Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Retrouver la relation champ <--> INDEX dans TABLE ACCESS


Sujet :

VB 6 et antérieur

  1. #1
    Candidat au Club
    Retrouver la relation champ <--> INDEX dans TABLE ACCESS
    Bonjour à tous !

    Comme je n'ai pas trouvé de forum VB6, je poste ici ma demande. Merci à un modérateur de déplacer ce post dans le bon forum si besoin est.

    Ceci dit, ma question : je sais extraire les noms des champs d'une table Access ainsi que les noms des index. J'utilise le code suivant ::

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    Option Explicit
    Dim db As Database
    Dim tb_def As TableDef
    Dim tb As Recordset
    Dim idxLoop As Index
    Dim fic As String
    Dim wk As String
    Dim champ As Field
     
    Private Sub Form_Load()
     
    fic = App.Path & "\jam.mdb"
    Set db = OpenDatabase(fic)
    Set tb = db.OpenRecordset("tb_mots")
    wk = "tb_mots"
    Set tb_def = db.TableDefs(wk)
    With tb
       For Each idxLoop In tb_def.Indexes
          .Index = idxLoop.Name
          Debug.Print "Index = " & .Index
       Next idxLoop
        For Each champ In tb.Fields
         Debug.Print "Champ = " & champ.Name
       Next champ
       .Close
    End With
    db.Close
     
    End Sub


    Dans la fenêtre Debug j'ai bien les noms:

    Index = idx_mots
    Champ = mots
    Champ = nombre
    Champ = page
    Champ = auteur
    Champ = ligne

    Ce que je ne sais pas faire, c'est associer le nom d'un index à un champ. Dans mon exemple, comment savoir que l'index idx_mots se réfère au champ mots ?

    Merci d'avance pour votre aide à venir

    Notpa

  2. #2
    Candidat au Club
    Ne cherchez plus ! J'ai trouvé ! Il faut coder ce qui suit !
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    or Each idxLoop In tb_def.Indexes
    '
        For Each champ In idxLoop.Fields
    '
            Debug.Print "Index Name: " & idxLoop.Name & "; " & "Field Name: " & champ.Name
    '
        Next champ
    '
    Next idxLoop


    Dans le Debug, j'ai : Index Name: idx_mots; Field Name: mots

    Donc, c'est OK.
    Et merci à ProgElecT pour le déplacement.

    je passe en résolu.

    Soyez prudents !

    Notpa

  3. #3
    Rédacteur/Modérateur

    Salut

    Essais
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
         Debug.Print "Index du Champ " & champ.Name & " = " & tb_def.Indexes.Index(champ.Name)

    dans ta 2éme boucle For (For Each champ In tb.Fields)

    Motif de l'édit: suppression du & en trop comme signalé
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.

  4. #4
    Candidat au Club
    Désolé mais ça ne marche pas. Après avoir retiré l'& de trop, j'ai cette erreur :

    Impossible de poster une image ! Le lien de cette image https://www.zupimages.net/up/20/40/eqfa.jpg est dit invalide !

    Bref, dans tb_def.Indexes.Index(champ.Name) la zone Index est introuvable.

###raw>template_hook.ano_emploi###