cs_beabea
Messages postés62Date d'inscriptionvendredi 10 octobre 2003StatutMembreDernière intervention17 octobre 2008
-
18 mai 2005 à 16:12
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
18 mai 2005 à 19:05
Bonjour,
Je suis entrain de faire une application de courrier où un numéro automatiquement incrémenté est donné.
je vais chercher ce numéro dans une table que je mets à jour au fur et à mesure avec le numéro+1 et les données dans une autre table "courrier" avec ce numéro qui est l'identifiant du courrier.
L problème c'est quand plusieurs personnes clic sur ok pour obtenir son numéro, j'ai un message qui me dit qu'il y a risques de doublons qu'en l'update ce fait dans la table "courrier" puisqu'il y a déjà un numéro identique.
J'ai donc mis un error goto et je relance la procédure mais là il me dit que mes recordsets sont ouverts; quand je les ferme il me dit que ce n'est pas la bonne méthode.
Alors j'ai créé une autre procédure avec le même code que j'appelle en cas d'erreur et dans cette procédure en cas d'erreur je rappelle la première mais à un moment donné j'ai un message problème de pile insuffisant.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 18 mai 2005 à 19:05
Salut
Première solution : Si les n° dont tu parles n'ont pas d'intérêt particulier pour l'utilisateur, essaye de dire à ta DB de gérer elle même ce chiffre :
- en déclarant ton champ en AutoIncrémental (et de type entier long)
- dans ta requète d'insert, ne mentionne pas ce champ (tous sauf celui-là) : Quand la DB reçoit ta demande d'insert et qu'elle voit que tu as un n° auto, elle le cherche elle même.
Petit inconvénient : elle ne bouche pas les trous (et c'est normal), c'est à dire que si tu Delete un enregistrement, le n° qui va avec ne sera jamais réutilisé.
Deuxième solution : Demande ce fameux n° qu'au moment où tu fais l'insert
Regarde aussi du côté des instructions suivantes qui tournent autour des Transactions : elles sont bien pratiques pour gérer le multi usage et les enregistrements ouverts :
Begin Transaction, Commit Transaction, RollBack Transaction
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)