OVH Cloud OVH Cloud

création d'index multichamp en VBA

2 réponses
Avatar
Thierry
Bonsoir à tous.
Je rencontre un problème pour créer un index multichamp et clé primaire dans
une table en VBA.

Pour un index monochamp, mon code qui fonctionne correctement est le suivant
:
Dim idx As Index, index1 As Field
Set index1 = idx.CreateField(NomChamp)
idx.Primary = False
idx.IgnoreNulls = False
idx.Required = False
idx.Unique = False
idx.Fields.Append index1
MaTable.Indexes.Append idx

Pour un index multichamp, j'ai essayé Set index1 =
idx.CreateField(NomChamp1, NomChamp2), mais ça ne passe pas. J'obtiens
l'erreur n° 3409 - Définition de champ 'Nomchamp1,NomChamp2' non valide dans
la définition de l'index ou de la relation.
Je m'inspirais du SQL CREATE INDEX NomIndex ON NomTable(NomChamp1,
NomChamp2).
Bien sûr, je pourrais utiliser SQL, mais dans le cas présent c'est assez
complexe, car chaque propriété de l'index est récupérée dans autant de
variables. J'ai cherché dans l'aide d'Access, mais rien sur la création
d'index multichamp en VBA.
Quelqu'un aurait-il une idée et même LA solution ?

2 réponses

Avatar
Eric
Bonsoir Thierry

Un exemple créant un index sur le nom et le prénom d'une table nommée
Enfant.

Sub Th()
Dim t As DAO.TableDef
Dim idx As DAO.Index
Dim bd As DAO.Database
Set bd = CurrentDb
Set t = bd.TableDefs("Enfant")
With t
Set idx = .CreateIndex("MonIndexNomPrenom")
With idx
.Fields.Append .CreateField("Nom")
.Fields.Append .CreateField("Prenom")
End With
.Indexes.Append idx
End With
Set idx = Nothing
Set t = Nothing
Set bd = Nothing
End Sub

Regardes l'exempe donné sur CreateIndex dans l'aide



Bonsoir à tous.
Je rencontre un problème pour créer un index multichamp et clé primaire dans
une table en VBA.

Pour un index monochamp, mon code qui fonctionne correctement est le suivant
:
Dim idx As Index, index1 As Field
Set index1 = idx.CreateField(NomChamp)
idx.Primary = False
idx.IgnoreNulls = False
idx.Required = False
idx.Unique = False
idx.Fields.Append index1
MaTable.Indexes.Append idx

Pour un index multichamp, j'ai essayé Set index1 > idx.CreateField(NomChamp1, NomChamp2), mais ça ne passe pas. J'obtiens
l'erreur n° 3409 - Définition de champ 'Nomchamp1,NomChamp2' non valide dans
la définition de l'index ou de la relation.
Je m'inspirais du SQL CREATE INDEX NomIndex ON NomTable(NomChamp1,
NomChamp2).
Bien sûr, je pourrais utiliser SQL, mais dans le cas présent c'est assez
complexe, car chaque propriété de l'index est récupérée dans autant de
variables. J'ai cherché dans l'aide d'Access, mais rien sur la création
d'index multichamp en VBA.
Quelqu'un aurait-il une idée et même LA solution ?




--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Thierry
Je n'ai pas encore pu tester, mais vu comme tu présentes le code, ça me
simble maintenant limpide et évident. Merci de ton aide.