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 ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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
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
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.
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.