Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
622 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Access]Auto increment

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Access]Auto increment

n°744147
Spir
Words are timeless
Posté le 28-05-2004 à 21:38:19  profilanswer
 

Voilà j'ai une table avec un id en autoincrement (numéro auto), cet identifiant ne fait qu'augmenter malgré que je supprime un des premiers tuple de la table.  
Si bien que je me retrouve avec par exemple des id allant de 130 à 140 si j'ai supprimer les 129 premiers. Moi ce que je veux c'est que si je supprime les 129 premiers, les autres reviennent à zéro, donc ici on aurait de 0 à 10.
Y a t'il une option pour pouvoir gérer ca? En fait ca me pose un problème pour mon appli java. Une solution serait de ne pas utiliser l'autoincrement et d'attribuer sois même les id et de faire une mise à jour à chaque suppression. Mais si j'ai utilisé l'autoincrement c'est pour me faciliter la tâche, parce que je suis un gros flemmard.

mood
Publicité
Posté le 28-05-2004 à 21:38:19  profilanswer
 

n°744550
Spir
Words are timeless
Posté le 29-05-2004 à 12:27:56  profilanswer
 

Ouais en fait apprement y pas moyen

n°744552
antp
Super Administrateur
Champion des excuses bidons
Posté le 29-05-2004 à 12:30:30  profilanswer
 

Tu peux toujours faire un select max(id) pour avoir le plus gros ID pour manuellement mettre l'ID suivant, c'est pas trop compliqué si la gestion des ID d'Access ne te plaît pas ;)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°748320
Spir
Words are timeless
Posté le 02-06-2004 à 00:10:26  profilanswer
 

Oui mais ce que je recherchais c'était avoir une continuité de zéro à n valeur pour les id sans "trou" dès que je supprime une élément tout ceux qui un id> sont décrémenté afin de garder une harmonie ce qui permettrait d'avoir un traitement des données après ds mon prog. + simple. Mais c'est pas grave. Je fais autrement.
Bon sinon y a moyen de créer une fonction un peu comme ca :
(exemple en PHP)

Code :
  1. Function MiseAJourDesEnregistrements($UneTable, $LaPropriete,$UnNumeroDEnregistrement)
  2.   {
  3.             //Connexion avec le serveur et la base:
  4.             $connection = Connexion (NOM, PASSE, BASE, SERVEUR);
  5.             //Suppression de l'enregistrement:
  6.             $requetedesuppr="DELETE FROM $UneTable WHERE $LaPropriete=$UnNumeroDEnregistrement";
  7.             $resultatdesuppr = ExecRequete ($requetedesuppr, $connection);
  8.             //décrémentation des enregistrements suivants:
  9.             $requeteNbelement="SELECT * FROM $UneTable";
  10.             $resultatNbelement = ExecRequete ($requeteNbelement, $connection);
  11.             $Nbelement=mysql_num_rows($resultatNbelement);
  12.             //On vérifie si l'élément supprimé n'était pas le dernier:
  13.             if($Nbelement>$UnNumeroDEnregistrement)
  14.             {
  15.                       //On décrémente:
  16.                       for($i=$UnNumeroDEnregistrement; $i<$Nbelement; $i++)
  17.                       {
  18.                                 //
  19.                                 $j=$i+1;
  20.                                 $requetedeDecrementation="UPDATE $UneTable SET $LaPropriete = $i WHERE $LaPropriete = $j";
  21.                                 $resultatDecrementation = ExecRequete ($requetedeDecrementation, $connection);
  22.                       }
  23.             }
  24.   }


Message édité par Spir le 02-06-2004 à 00:11:46
n°748325
Spir
Words are timeless
Posté le 02-06-2004 à 00:13:08  profilanswer
 

Ouais un COUNT(*) ou un MAX() aurais été mieux à la place du select * ...

n°1290437
harlock59
Posté le 23-01-2006 à 19:34:06  profilanswer
 

j'ai le meme probleme, mais en mysql, je voudrais que l'auto increment reparte à 1.
je crois que l'on peut faire ca en faisant une optimisation ou un truc du genre.
si vous avez des solutions ?
merci. :pt1cable:

n°1290472
harlock59
Posté le 23-01-2006 à 20:21:30  profilanswer
 

j'ai voulu faire un "flush" sous phpmyadmin, mais j'ai eu un "permission denied".
je coris qu'en faisant un flush ca marche, mais encore faut il que ca marche.

n°1290473
harlock59
Posté le 23-01-2006 à 20:26:44  profilanswer
 

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Access]Auto increment

 

Sujets relatifs
Sources Access/VBA ?[Access] avoir seulement le dernier enregistrement dans un état
Liaison de données SQL Server - Access + Date Access [resolu]Un petit problème avec VBA Access
Lancer Macro access depuis excel[Access] Problème lors d'un ajout grâce à un sous-formulaire
Auto scroll dans un JScrollPane[ASP + Access] Lancer un Etat Access à partir d'une page ASP
[Access]raz d'un champ auto increment[sql] auto_increment avec MS Access
Plus de sujets relatifs à : [Access]Auto increment


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR