Bonjour,
J'ai besoin via VBA de cr=E9er une proc=E9dure qui indexe le champs d'une
table (en tant que cl=E9 primaire) en supposant qu'il n'y a pas d'index
sur la table.
J'ai donc essayer en utilisant SQL cette syntaxe l=E0 :
Public Sub AjouteIndex(NomTable As String, NomChampsIndex As String)
DoCmd.RunSQL ("ALTER TABLE " & NomTable & " ADD CONSTRAINT PK_tbl
PRIMARY KEY CLUSTERED (" & NomChampsIndex & ")")
End Sub
Mais j'ai le message suivant : "Erreur de Syntaxe dans la clause
CONSTRAINT"
DU coup j'ai essay=E9 de manipuler la table avec DAO :
Public Sub AjouteIndex(NomTable As String, NomChampsIndex As String)
Dim t As DAO.TableDef
Dim idx As DAO.Index
Dim bd As DAO.Database
Set bd =3D CurrentDb
Set t =3D bd.TableDefs(NomTable)
With t
Set idx =3D .CreateIndex("NomChampsIndex")
With idx
.Fields.Append .CreateField(NomChampsIndex)
End With
.Indexes.Append idx
End With
Set idx =3D Nothing
Set t =3D Nothing
Set bd =3D Nothing
End Sub
Et la, je n'ai pas de msg d'erreur, ms je n'ai pas mon index non plus
sur la table !
La je patauge, et je me dis que je suis peut etre en train de
r=E9inventer la roue...
Dc si qqun par hasard aurait une proc=E9dure qui permettrait de rajouter
une cl=E9 primaire a une table qui n'a pas d'index ou si qqun
d=E9celerait les fautes dans mes bouts de codes, je le remercie par
avance
A+
Yvan
wrote in message news: Bonjour, J'ai besoin via VBA de créer une procédure qui indexe le champs d'une table (en tant que clé primaire) en supposant qu'il n'y a pas d'index sur la table. J'ai donc essayer en utilisant SQL cette syntaxe là :
Public Sub AjouteIndex(NomTable As String, NomChampsIndex As String) DoCmd.RunSQL ("ALTER TABLE " & NomTable & " ADD CONSTRAINT PK_tbl PRIMARY KEY CLUSTERED (" & NomChampsIndex & ")") End Sub
Mais j'ai le message suivant : "Erreur de Syntaxe dans la clause CONSTRAINT"
DU coup j'ai essayé de manipuler la table avec DAO : Public Sub AjouteIndex(NomTable As String, NomChampsIndex As String) Dim t As DAO.TableDef Dim idx As DAO.Index Dim bd As DAO.Database Set bd = CurrentDb Set t = bd.TableDefs(NomTable) With t Set idx = .CreateIndex("NomChampsIndex") With idx .Fields.Append .CreateField(NomChampsIndex) End With .Indexes.Append idx End With Set idx = Nothing Set t = Nothing Set bd = Nothing End Sub
Et la, je n'ai pas de msg d'erreur, ms je n'ai pas mon index non plus sur la table ! La je patauge, et je me dis que je suis peut etre en train de réinventer la roue... Dc si qqun par hasard aurait une procédure qui permettrait de rajouter une clé primaire a une table qui n'a pas d'index ou si qqun décelerait les fautes dans mes bouts de codes, je le remercie par avance A+ Yvan
Bonjour ,
En effet il y a plusieurs possibilites :
1/ Utiliser la commande db.Execute :
http://support.microsoft.com/default.aspx?scid=kb;en-us;115833
2/ Utiliser le DoCmd.RunSQL
sqlstr = "CREATE UNIQUE INDEX " & _
" MyIndex ON <nom table>(nom_colonne) With Primary"
DoCmd.RunSQL
sqlstrMhttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnacc2k/html/acfundsql.asp
<blancmunier@yahoo.fr> wrote in message
news:1140627298.700652.190230@g14g2000cwa.googlegroups.com...
Bonjour,
J'ai besoin via VBA de créer une procédure qui indexe le champs d'une
table (en tant que clé primaire) en supposant qu'il n'y a pas d'index
sur la table.
J'ai donc essayer en utilisant SQL cette syntaxe là :
Public Sub AjouteIndex(NomTable As String, NomChampsIndex As String)
DoCmd.RunSQL ("ALTER TABLE " & NomTable & " ADD CONSTRAINT PK_tbl
PRIMARY KEY CLUSTERED (" & NomChampsIndex & ")")
End Sub
Mais j'ai le message suivant : "Erreur de Syntaxe dans la clause
CONSTRAINT"
DU coup j'ai essayé de manipuler la table avec DAO :
Public Sub AjouteIndex(NomTable As String, NomChampsIndex As String)
Dim t As DAO.TableDef
Dim idx As DAO.Index
Dim bd As DAO.Database
Set bd = CurrentDb
Set t = bd.TableDefs(NomTable)
With t
Set idx = .CreateIndex("NomChampsIndex")
With idx
.Fields.Append .CreateField(NomChampsIndex)
End With
.Indexes.Append idx
End With
Set idx = Nothing
Set t = Nothing
Set bd = Nothing
End Sub
Et la, je n'ai pas de msg d'erreur, ms je n'ai pas mon index non plus
sur la table !
La je patauge, et je me dis que je suis peut etre en train de
réinventer la roue...
Dc si qqun par hasard aurait une procédure qui permettrait de rajouter
une clé primaire a une table qui n'a pas d'index ou si qqun
décelerait les fautes dans mes bouts de codes, je le remercie par
avance
A+
Yvan
wrote in message news: Bonjour, J'ai besoin via VBA de créer une procédure qui indexe le champs d'une table (en tant que clé primaire) en supposant qu'il n'y a pas d'index sur la table. J'ai donc essayer en utilisant SQL cette syntaxe là :
Public Sub AjouteIndex(NomTable As String, NomChampsIndex As String) DoCmd.RunSQL ("ALTER TABLE " & NomTable & " ADD CONSTRAINT PK_tbl PRIMARY KEY CLUSTERED (" & NomChampsIndex & ")") End Sub
Mais j'ai le message suivant : "Erreur de Syntaxe dans la clause CONSTRAINT"
DU coup j'ai essayé de manipuler la table avec DAO : Public Sub AjouteIndex(NomTable As String, NomChampsIndex As String) Dim t As DAO.TableDef Dim idx As DAO.Index Dim bd As DAO.Database Set bd = CurrentDb Set t = bd.TableDefs(NomTable) With t Set idx = .CreateIndex("NomChampsIndex") With idx .Fields.Append .CreateField(NomChampsIndex) End With .Indexes.Append idx End With Set idx = Nothing Set t = Nothing Set bd = Nothing End Sub
Et la, je n'ai pas de msg d'erreur, ms je n'ai pas mon index non plus sur la table ! La je patauge, et je me dis que je suis peut etre en train de réinventer la roue... Dc si qqun par hasard aurait une procédure qui permettrait de rajouter une clé primaire a une table qui n'a pas d'index ou si qqun décelerait les fautes dans mes bouts de codes, je le remercie par avance A+ Yvan