Dounej
Messages postés28Date d'inscriptionjeudi 28 décembre 2006StatutMembreDernière intervention 7 avril 2007
-
3 avril 2007 à 16:52
Dounej
Messages postés28Date d'inscriptionjeudi 28 décembre 2006StatutMembreDernière intervention 7 avril 2007
-
4 avril 2007 à 15:30
Bonjour,
Comment créer une clé primaire en VB6 ?
j'ai un programme qui crée une base ACCESS, je veux rajouter une colonne servant d'index en créant une clé primaire.
sous Dotnet :
object.PrimaryKeys (Table)
mais ne fonctionne pas VB6
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 3 avril 2007 à 17:07
Oups, j'avais pas vu que c'était du VB.Net
A mon avis, les objets n'ayant pas changés, les méthodes doivent rester valables.
Tu peux consulter les fichiers VB6 avec un éditeur texte classique si tu n'as pas VB6
(qqes minutes plus tard)
Suffit de chercher "Primaire" parmi les codes en Net et tu tomberas sur cette source :
http://www.vbfrance.com/codes/CREATION-BASE-ACCESS-VB-NET_40073.aspx
avant de poser ma question, j'ai bien évidemment fait une recherche poussée sur le site tant sur le Forum que sur les codes.
J'ai bien évidemment trouvé les codes que tu me cites en lien.
Malheureusement ces codes ne résolvent pas mon PB !
Les variables de mon Prog sont déclarées en ADO ,
Les variables des codes sont en ADOX !!
Vous n’avez pas trouvé la réponse que vous recherchez ?
je pense que mon analyse était bonne, le fait de créer une clé permet l'enregistrement après le précédent.
Sauf que nouveau problème :
car maintenant il refuse d'aller au delà de 9 enregistrements.
pourquoi au 10 ème ça plante ?
(j'ai recommencé plusieurs fois et c'est toujours au 10 ème enregistrement que le PB se pose)
voici le message d'erreur
"problème de doublons dans champs index,..., clé primaire interdisant les doublons"
Je pense que le problème n'est pas lié à la clé ,
je pense que mon programme refuse un nouvel enregistrement au rang supérieur ,
donc il reste au rang 9 d'où le doublon ???
Mon programme original comprend près de 200 colonnes,
est-ce le volume des données qui est en cause ????
car ce même programme (voir lien ci-dessus) fonctionne très bien avec 50 colonnes !!
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 20072 3 avril 2007 à 20:36
Si je comprend bien avec :
rs.AddNew
'--------------------------------------------
For i = 1 To 150
rs.Fields("P" & i).Value = "mes données"
Next i
'--------------------------------------------
rs.Update
tu as 150 colonnes (P1, P2, P3, ....etc)
et tu veux ajouter la même donnée à tous les chanps.
Si c' est ça lz code est valable.
Maintenant s' agissant de l' erreur du doublon,
il faut savoir que la clé primaire t' interdit, d' avoir deux lignes
avec la même valeur au niveau du champ Index.
Si ton prog plante à la 10 ième ligne, c' est que la valeur que tu tentes
d' ajouter éxiste déjà sur une ligne parmi les 9 précédentes.
Vérifies d' abord, ensuite fais nous part de tes constatations
D' autre part, ne pas entamer la création de clé primaire qu' après avoir
été certain que toutes les valeur au niveau du champ concerné, sont unique.
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 20072 3 avril 2007 à 20:43
je viens de me rendre compte que tu as une erreur de synthaxe
au niveau de la boucle:
Pour corriger
Dim xChp As String
For i = 1 To 150
'--------------------------------------------
rs.AddNew
xChp="P" & Str(i)
rs.Fields(xChp).Value = "mes données"
rs.Update
'--------------------------------------------
Next I
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 20072 3 avril 2007 à 20:50
encore une bourde !
pardon, j' ai recopié la mauvaise boucle:
rs.AddNew
'--------------------------------------------
For i = 1 To 150
xChp="P" & Str(i)
rs.Fields(xChp).Value = "mes données"
Next i
'--------------------------------------------
rs.Update
Le type de modification que tu me proposes ne change rien au fond du problème!
"P" & Str(i) ne fonctionne pas en revanche "P" & i fonctionne très bien.
Je viens de faire plusieurs tests successifs par le biais d'un Msgbox, et je constate
que le "movelast" ne fonctionne pas ; c'est à dire que le positionnement sur le dernier enregistrement de la base ne se fait pas !!!!
ma base contient 9 enregistrements ,
lorsque je lui demande de me donner la valeur du dernier index, il me donne 8 ???
d'où la nouvelle question :
comment se positionner sur le dernier enregistrement d'une base ?
lorsque movelast ne fonctionne pas ?
ou alors pourquoi ne prend t'il pas en considération tous les enregistrements de la base ?