Cle primaire en .net

cs_joflo Messages postés 156 Date d'inscription mardi 9 juillet 2002 Statut Membre Dernière intervention 23 septembre 2011 - 12 sept. 2008 à 06:29
cs_alpamayo Messages postés 16 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 22 septembre 2010 - 21 sept. 2009 à 08:44
bonjour à ceux qui sont debout

EN (.NET)

j'ai une base acces avec une cle primaire en numero auto mais quand on supprime une ligne ce numero n'est réutilisé je voudrai donc renumeroter la cle

en supprimant MANUELLEMENT la cle et en la remettant la numerotation est refaite

ma question

comment par le code (. net) supprimer la cle et la remettre

merci pour l'aide

16 réponses

olibara Messages postés 666 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 mars 2010 6
12 sept. 2008 à 07:39
Salut
Pour moi le principe de base c'est précisément qu'un numéro ne peut pas etre réutilisé !
Si tu supprime l'enregistrement 25 parmi 100 tu ne peux pas rajouter un novel element qui portera l'ID 25 dans le concept de PK auto-increment
Il y a sans doute moyen de bricoler si c'est le dernier, mais je n'ai jamais tenté la chose et je te conseille vivement d'eviter par ta logique en amont d'avoir a faire ce genre de chose !

Ou alors ce n'est plus une PK auto-increment mais un ID dont tu gere entierement la logique de numerotation !
0
crn_c21 Messages postés 302 Date d'inscription samedi 24 janvier 2004 Statut Membre Dernière intervention 4 février 2011
12 sept. 2008 à 14:08
Tout à fait d'accord olibara!

La meilleure solution est d'enlever l'auto-incrément et de gérer ces Id perso!
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
12 sept. 2008 à 18:49
Bonsoir,
avec access..hummm, mieux vaut s'en tenir à incrément auto ou pas d'incrément du tout (mais moins bon qd même)
avec une base SQL, on peut renuméroter le dernier, par programmation.

Mais, on peut aussi, dans tous les cas, laisser un incrément automatique et créer un autre champ Numero (integer) et faire ce qu'on veut avec et rendre invisible la clé primaire.

cantador
0
cs_thierry la fronde Messages postés 351 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 12 août 2009
12 sept. 2008 à 20:19
bonsoir,

je suis d'accord avec tout le monde.. ceci dit, quel est l'intérêt de réutiliser la même clé??
Une petite remarque : L'auto incrément je le déconseille pour des applications types factures.. je préfère une numérotation aléatoire pour ne pas influencé le client (par exemple..)

thierry la fronde
0

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

Posez votre question
olibara Messages postés 666 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 mars 2010 6
12 sept. 2008 à 22:30
L'exemple de Thierry la Fronde illustre tres bien la distinction parfois nécessaire entre une clef identifiante unique INTERNE et un identifiant EXTERNE dont la semantique et la gestion peut etre différente
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
12 sept. 2008 à 23:01
je préfère une numérotation aléatoire..


oui alors, il faut pas pousser le bouchon trop loin, car les numéros devront néanmoins être différents à chaque fois, ce qui oblige à tous les tester..
j'imagine une table (en réseau) de 100 000 factures avec des numéros aléatoires dans laquelle il faut créer le 100 001 ème différent des 100 000 premiers..

cantador
0
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
13 sept. 2008 à 23:45
si tu met la date , l'heure : tu as ton numéro de facture
(YYYYMMDDHHmmss + millisecondes )


ça m'étonnerait que tu aies 2 fois le même










Bonjour chez vous !
0
olibara Messages postés 666 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 mars 2010 6
14 sept. 2008 à 00:03
Gillardg parvient toujours a pousser plus loin !
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
14 sept. 2008 à 13:12
ça m'étonnerait que tu aies 2 fois le même..

un programme de compta qui prendrait pour clé primaire la
date/heure + ms...???
Original, mais je demande à voir, car comme sécurité..c'est douteux..
si l'utilisateur change la date et l'heure du micro..

cantador
0
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
14 sept. 2008 à 15:17
euh pas comme clé primaire juste comme numéro de facture
quand à changer la date system c'est vrai qu'il faut toujours penser au pire avec les "utilisateurs"

Bonjour chez vous !
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
14 sept. 2008 à 18:40
qu'il faut toujours penser au pire avec les "utilisateurs"

ben vrai ça..
pire encore si on peut changer l'année..
car dans ce cas l'exercice comptable ??

cantador
0
cs_alpamayo Messages postés 16 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 22 septembre 2010
18 sept. 2009 à 17:03
c'est intéressant, mais ça fait pas trop avancer le problème

je pense avoir le même problème : si je crée un élément que je supprime derrière et que je le recrée, Access est passé à n+2 alors que le dataAdapter de .net est resté à n+1...

j'ai résolu en attendant mieux en retirant mon autoincrément et en faisant un insert avec
INSERT INTO Article ( IdArticle ) SELECT Max(IdArticle)+1, FROM Article

Mais si quelqu'un a une meilleure solution je suis preneur

alpamayo
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
19 sept. 2009 à 12:07
@alpamayo:
et avec 15 utilisateurs en réseau
en mode partagé ?


cantador
0
cs_alpamayo Messages postés 16 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 22 septembre 2010
19 sept. 2009 à 15:02
dans ce cas c'est clair : tu oublies Access...

plus sérieusement, j'aimerais bien avoir une solution en conservant l'autoincrément mais je n'en ai pas et faire un Fill après chaque insert me parait trop pénalisant

alpamayo
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
19 sept. 2009 à 23:23
@alpamayo:

pas bien pigé..
mais merci de faire un autre topic.


cantador
0
cs_alpamayo Messages postés 16 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 22 septembre 2010
21 sept. 2009 à 08:44
pour la réponse à la première question de ce topic, voir une solution sur http://support.microsoft.com/kb/287756/fr, permettant de changer l'origine de l'autoincrément,
c'est à manier avec précaution, pour ma part j'ai préféré ne pas l'utiliser

alpamayo
0
Rejoignez-nous