Définition de la clef primaire

Résolu
perathoner Messages postés 90 Date d'inscription dimanche 5 novembre 2000 Statut Membre Dernière intervention 26 juillet 2006 - 24 juin 2005 à 15:13
perathoner Messages postés 90 Date d'inscription dimanche 5 novembre 2000 Statut Membre Dernière intervention 26 juillet 2006 - 27 juin 2005 à 14:58
Bonjour .....

Ba voilà une p'tite question :

Je développe sous Vb 6.0 et j'utilise une BDD sous Ms Access dans une application.

Via cette application, l'utilisateur créer des tables, renfermants 3 champs :
--> Id
--> Libelle
--> Aide

Et j'aimerais définir une clef primaire sur le champ Id...
Comment Faire ????

Si quelsu'un à 2 minutes à perdre, j'imagine que c'est pas bien compliqué... mais j'sais pas comment on fait !!!

Merci par avance à ceux et/ou à celles qui prendront la peine de répondre...

5 réponses

cs_wape Messages postés 262 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 19 décembre 2010 12
24 juin 2005 à 17:54
Bonjour,

Essaye ceci :

Public Sub CreationNewTable(TableName As String, ProgressBar As ProgressBar)
Dim MyTable As TableDef
Dim RecordParameter As Recordset
Dim RecordNewTable As Recordset
Dim SQLParameter As String
Dim SQLNewTable As String
Dim Champ As Field
Dim Idx As Index
Dim i As Integer
'Création de l'objet TABLE
Set MyTable = Base.CreateTableDef(TableName)


With MyTable


Set Champ = MyTable.CreateField()
With Champ
' Nom
.Name = "Id"
' Type
.Type = dbLong
' Taille
'.AllowZeroLength = True

End With
' ajout du champ
MyTable.Fields.Append Champ

'Création de l'index
Set Idx = MyTable.CreateIndex("PrimaryKey")
'Définition de l'index comme clé primaire
Idx.Primary = True
'Création du champ
Set Champ = Idx.CreateField("Id")
'Ajout du champ à l'index
Idx.Fields.Append Champ
'Ajout de l'index à la table
MyTable.Indexes.Append Idx


Set Champ = .CreateField()
With Champ
' Nom
.Name = "Libelle"
' Type
.Type = dbText
' Taille
.Size = 255
' Option
.AllowZeroLength = True
End With
' ajout du champ
MyTable.Fields.Append Champ


Set Champ = .CreateField()
With Champ
' Nom
.Name = "Aide"
' Type
.Type = dbText
' Taille
.Size = 255
' Option
.AllowZeroLength = True
End With
' ajout du champ
MyTable.Fields.Append Champ


'Ajout de la nouvelle table à la base de données
Base.TableDefs.Append MyTable

End With

wape
3
cs_julien71 Messages postés 5 Date d'inscription mardi 29 janvier 2002 Statut Membre Dernière intervention 24 juin 2005
24 juin 2005 à 15:17
Bonjour,
tu sélectionne la ligne du champs Id et tu clic sur l'icone qui contient une clé jaune dans la barre d'outils ou sinon tu fais un clic droit sur le champs Id et tu choix cl primaire dans le menu contextuel.
0
perathoner Messages postés 90 Date d'inscription dimanche 5 novembre 2000 Statut Membre Dernière intervention 26 juillet 2006
24 juin 2005 à 15:22
Merci Julien71 d'avoir répondu aussi rapidement... mais ça je sais le faire... ma question (elle est p'être pas très bien posée, j'te l'accord) c'est comment définire une clef primaire via Vb ???

Mon code ressemble à ça :

'================================================================================
Public Sub CreationNewTable(TableName As String, ProgressBar As ProgressBar)
Dim MyTable As TableDef
Dim RecordParameter As Recordset
Dim RecordNewTable As Recordset
Dim SQLParameter As String
Dim SQLNewTable As String
Dim Champ As Field
Dim i As Integer


'Création de l'objet TABLE
Set MyTable = Base.CreateTableDef(TableName)


With MyTable


Set Champ = MyTable.CreateField()
With Champ
' Nom
.Name = "Id"
' Type
.Type = dbLong
' Taille
'.AllowZeroLength = True

End With
' ajout du champ
MyTable.Fields.Append Champ


Set Champ = .CreateField()
With Champ
' Nom
.Name = "Libelle"
' Type
.Type = dbText
' Taille
.Size = 255
' Option
.AllowZeroLength = True
End With
' ajout du champ
MyTable.Fields.Append Champ


Set Champ = .CreateField()
With Champ
' Nom
.Name = "Aide"
' Type
.Type = dbText
' Taille
.Size = 255
' Option
.AllowZeroLength = True
End With
' ajout du champ
MyTable.Fields.Append Champ


'Ajout de la nouvelle table à la base de données
Base.TableDefs.Append MyTable

End With
'================================================================================

Je trouve pas la propriété pour définir ma clef sur le champ Id ??
0
cs_julien71 Messages postés 5 Date d'inscription mardi 29 janvier 2002 Statut Membre Dernière intervention 24 juin 2005
24 juin 2005 à 15:48
re,
tiens j'ai trouvé ça sur un site

' Définit le champ ajouté comme étant la clé primaire
Set key = New ADOX.key
With key
.Name = "PrimaryKey"
.Type = adKeyPrimary
.RelatedTable = "Table1"
.Columns.Append "Champ1"
End With
cat.Tables("Table1").Keys.Append key

tiens l'adresse : http://faq.vb.free.fr/index.php?question=95
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
perathoner Messages postés 90 Date d'inscription dimanche 5 novembre 2000 Statut Membre Dernière intervention 26 juillet 2006
27 juin 2005 à 14:58
Merci à vous deux...
La solution de Wape est la meilleur (tout du moins la plus simple, la méthode avec les ADOX est un peu moins naturel à mon sens)

Encore merci....
0
Rejoignez-nous