Un auto code

hitler007 Messages postés 2 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 24 décembre 2006 - 24 déc. 2006 à 00:00
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 - 29 déc. 2006 à 22:04
salut a tous,
g 1 petit probleme dans mon application"CDthèque", d'abord j'ajoute par exemple un produit"CD",je lui donne un code automatique,mé le prob c lorsque jsupprime un produit de la base de données,dans le prochain ajout, ça doit m donner automatiquement le code de ce dernier supprimer,c.a.d qu'il va chercher dans la base de donner é voir s'il manque un nb de 1 jusk'au numero du dernier enregistrement é le remplacer,pour une bonne gestion, j'espere que mon explication é clair pour vous.
alors si vous avez une ptite idée sur ce sujet poser le sur le forum ou envoyer la reponse a mon mail
yassino33@yahoo.fr
merci d'avance.

12 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
24 déc. 2006 à 04:10
Salut
Il n'y a pas de miracle : Si ton programme ne génère pas le bon numéro, c'est que l'as mal programmé !
Comment veux-tu qu'on réponde à ta question ? Tu ne donnes aucun élément !
Heureusement que j'ai ma boule de cristal sous la main !
Elle ma dit que tu utilises la fonction "NuméroAuto" pour le champ identifiant d'un enregistrement.
Alors dans ce cas, c'est normal.
Un identifiant automatique n'est pas un numéro d'ordre. C'est un numéro unique, c'est tout.
Donc, si tu as détruis une fiche, le numéro qu'elle portait ne sera plus réutilisé.

Si tu veux que l'identifiant soit le numéro d'ordre dans ta collection, c'est à toi de le rechercher (requète avec agrégation Max) et d'insérer toi même le numéro d'identifiant (après l'avoir incrémenté, bien sûr).
Il faudra donc que tu modifies le type de champ NuméroAuto --> Numérique

PS : Ma boule de cristal est très fatiguée depuis quelques mois, mais je m'en fiche, je vais en recevoir une toute neuve ce soir, pour mon Nowel !

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
24 déc. 2006 à 08:36
Bonjour Jack et joyeux Noel...

Entièrement d' accord sur le numéro auto,
les tables indéxées sur ce type ne sont jamais
réinitialisées.
Pour le Max, je crois bien que lui, il cherche
plutôt  à combler le vide entre les numéros


si il a :
125,126,127,128,129,130
et qu' il supprimes le 128, il veut que le prochain soit
le 128.Or le Max étant le 130, le prochain sera le 131.
Toujours est-il qu' il doit suivre ta méthode, s' il veut
une bonne gestion (comme il dit).
S' il pesiste dans son choix, il n' a qu' à parcourir sa table
et voir si la différence entre le courant enregistrement
et le précédent est >1. Si oui, son numéro serait
le précédent+1.

PS: Félicitation pour ta nouvelle boule de crystal,
mais ne te sépares jamais de l' ancienne....
Elle sera sûrement une pièce de collection et vaudra
de l' or dans quelques années.
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
24 déc. 2006 à 09:06
le père Noel est passé par là...

Function NouveauId() As Long
NouveauId=1
rs étant ton recordset lié à la table
Dim ExId As long
With rs
   If .Bof And .Eof Then Exit Function
   .MoveFirst
    ExId=![Id]
   .MoveNext
   Do While Not .Eof
      If ![Id]-ExId>1 Then  Exit Do
      ExId=![Id]
      .MoveNext
   Loop
End With
NouveauId=ExId+1
End Function
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
24 déc. 2006 à 09:25
Petite rectification :
Le numéro auto est réinitialisé qu'au compactage de la base access : si la table ne contient aucun enregistrement, alors le numéro auto est automatiquement réinitialiser à 1.

En même temps, je ne vois vraiment pas pourquoi tu voudrais ne pas avoir de trou dans les numéros ! Vu qu'une clé primaire est la liaison entre toutes les tables, il ne faut surtout pas la modifier !
0

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

Posez votre question
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
24 déc. 2006 à 11:21
pour le numero auto,
si tu vides une table qui contenait déjà des enregistrements,
dont le dernier était 10, le premier sera 11. ça ne repart jamais à 1.
Pour le combalge du trou (que je n' approuve d' ailleurs pas)
si la suppression se fait en cascade, rien n' empêche.
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
24 déc. 2006 à 11:52
Si justement : si tu compacte ta base, ca repart à 1 ! Par contre, ca nécéssite un compactage (ce qui est normal, et ce qui peut-être dangereux pour les relations justement !)
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
24 déc. 2006 à 12:49
Ok DS,
Merci pour la précision...
0
hitler007 Messages postés 2 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 24 décembre 2006
24 déc. 2006 à 12:54
tout d'abord merci pour votre aide,
g 2 table une pour la gestion des cd et l'autre pour la gestion des emprunts, alors le code du cd ne sera supprimer que lorsqu'il é plus emprunter,dans ce cas y'aura plus de relation avec les deux tables.


j'ai deja pensé a la solution proposé par Mr : chaibat05.
mé pour 2 supprimé ou plus ça n marchera po... 
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
24 déc. 2006 à 13:41
et pourquoi ça marcherait pas ?
si tu as 125,126,127,128,129,130, 131, 132
et que tu supprimes le 127, le 128, le 129 et 131
l' écart entre le 126 et le 130 étant supérieur à 1,
le premier que tu ajouteras sera 127
l' écart entre le 127 et le 130 étant toujours supérieur à 1,
le second sera 128 ,
l' écart entre le 128 et le 130 est toujours supérieur à 1
le troisième sera 129
et le quatrième 131 car tu passes à l' écart entre 130 et 132
si tu ajoutes un cinquième ça sera le 133
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
24 déc. 2006 à 13:49
mais une question :
si tu supprimes une référence à un cd dans ta table,
c' est pas pour autant que ton cd n' éxiste plus
(matériellement je veux dire) ou alors il faut penser à
renouveler l' étiquetage , non ?
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
29 déc. 2006 à 20:28
En tout cas le pseudo est à jeter...

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
29 déc. 2006 à 22:04
Bonsoir Mortalino,
et bon retour de vacances...
j' en profite aussi pour te souhaiter la bonne année...

A+
0
Rejoignez-nous