|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Jean-Luc BruneteauAssistant de Direction Inscription : janvier 2010 Messages : 50 ![]() |
Bonsoir à tous,
je voudrai avoir 2 champs numauto dans un même formulaire. je crois que cela est impossible. L'idée est d'avoir en plus du 1er champs numauto d'avoir un autre champs qui s'incrémente automatiquement en fonction du contenu d'un autre champs. Par exemple. j'ai dans une base courrier un 1er champ numauto qui sert de référence à tous les enregistrements. j'ai besoin d'avoir un 2° champ numauto uniquement pour les documents d'un type défini. je n'ai pas de solution .... Qui peut m'aider..... |
|
|
00
|
|
|
#2 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 442 ![]() |
En effet tu ne peux pas avoir 2 numéros automatiques pour une même table et tu ne peux pas non plus avoir des numéros automatiques conditionnés (par exemple pour un type de produit donné).
Il faut que tu le gère toi même. Ta base va-t-elle être utilisée par plus d'une personne à la fois ? A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Jean-Luc BruneteauAssistant de Direction Inscription : janvier 2010 Messages : 50 ![]() |
Y a t il une solution codée pour pouvoir gérer ce champ automatiquement ? Sinon cette appli fonctionne en réseau et sera utilisée par plusieurs personnes
|
|
|
00
|
|
|
#4 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 442 ![]() |
Je ne t'ai pas oublié.
Il y a plusieurs discussions sur ce sujet dans le forum mais je n'ai pas eu le temps de faire une recherche. Je devrais être capable de le faire jeudi soir (heure du Québec) prochain. A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
00
|
|
|
#5 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 442 ![]() |
Voici 3 discussions sur le sujet.
http://www.developpez.net/forums/d84...menter-champs/ http://www.developpez.net/forums/d26...-numerotation/ http://www.developpez.net/forums/d22...s-sous-access/ A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
00
|
|
|
#6 |
|
Candidat au titre de Membre du Club
![]() Jean-Luc BruneteauAssistant de Direction Inscription : janvier 2010 Messages : 50 ![]() |
j'ai un peu de mal a comprendre la syntaxe dans les liens mentionnés. Pour faire clair et simple, mon besoin est :
j'ai une BDD courrier. Dans ma table courrier j'ai un champs numauto d'enregistrement de tous mes courriers. Dans cette base de courrier j'ai différents type de courrier (lettres, messages, etc .....) je voudrai avoir dans ma table un deuxième champs qui s'incrémente automatiquement uniquement pour les courrier de type Message. Existe t-il une solution ? |
|
|
00
|
|
|
#7 | ||
|
Expert Confirmé Sénior
![]() ![]() Fabien Enseignant Inscription : janvier 2009 Messages : 2 401 ![]() |
bonsoir,
tu peux gérer la numérotation en toute indépendance de ta table Courrier avec une table supplémentaire: NumeroTypeCourrier( #idTypeCourrier, ProchainNumero) Code :
Tu te dépêches alors de mettre à jour prochainNumero=8+1=9 pour le type n°2 avant qu'un autre utilisateur te piques le même numéro 8 (si tu as tiré le numéro 8, il doit être définitivement cramé). C'est assez simple à gérer je trouve mais il y a peut-être mieux... |
||
|
00
|
|
|
#8 |
|
Candidat au titre de Membre du Club
![]() Jean-Luc BruneteauAssistant de Direction Inscription : janvier 2010 Messages : 50 ![]() |
f-leb,
j'aimerai trouver une solution sous code pour que les utilisateurs n'aient pas à s'en soucier.... |
|
|
00
|
|
|
#9 |
|
Expert Confirmé Sénior
![]() ![]() Fabien Enseignant Inscription : janvier 2009 Messages : 2 401 ![]() |
bonjour,
oui bien entendu il faut gérer tout ça par code mais j'essayais de mettre en place le principe dans un premier temps. Apparemment tu n'as qu'un seul type de message à prendre en compte donc la table supplémentaire aurait plutôt la structure: CompteurMessage( NumeroCompteur) (un seul champ, une seule ligne) Le point délicat est le choix de l'évènement de formulaire qui va attribuer le numéro au courrier et incrémenter le compteur: (je suppose que tu as un champ TypeCourrier dans ta table Courrier) - soit tu attribues le numéro à ton courrier dès que le champ TypeCourrier est remplie avec la valeur "Message" (et tu incrémentes aussitôt le compteur dans CompteurMessage pour éviter qu'un autre utilisateur ne te pique ton numéro). - Soit tu attribues le numéro à la fin de la saisie et sur validation d'un courrier de type "message". Le problème c'est que l'utilisateur ne voit pas le numéro attribué au début de la saisie. - soit tu attribues un numéro "probable" en début de saisie dès que le champ TypeCourrier est renseigné sur la valeur "message". Lorsque tu valides le courrier à la fin de la saisie, il faut vérifier que le numéro "probable" n'ait pas été attribué à un autre utilisateur plus rapide que toi. Si ça se produit, il faut changer le numéro en prévenant l'utilisateur et mettre à jour le compteur. tu vois l'idée ? Sur quelle solution tu partirais ? |
|
00
|
|
|
#10 | |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 167 ![]() |
Bonjour brutus437, marot_r et f-leb,
Je me permets de m'imisser dans ce fil concernant les remarques judicieuses de f-leb. Il me semble que la fonction Dmax(), que Claude m'a fait découvrir, conviendrait bien et éviterait la création d'une table, non ? Certes, le temps de réponse du Dmax() peut être important suivant la taille de la table, mais bon, à tester. Concernant les choix que tu proposes, perso, je penche pour : Citation:
Enfin, juste une idée :
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
|
00
|
|
|
#11 | |
|
Expert Confirmé Sénior
![]() ![]() Fabien Enseignant Inscription : janvier 2009 Messages : 2 401 ![]() |
bonjour Richard,
Citation:
Scénario 1: -Je créée un message n°35 et réalise un certain nombre de traitements dessus. -Par erreur (clavier qui fourche), je détruis malencontreusement le message n°35. Vite vite, il faut le recréer !! - oui mais pendant ce temps là, un autre utilisateur créé un nouveau message dont le numéro attribué avec le Dmax sera... le n°35. Résultat: le message initialement référencé avec le n°35 et détruit par erreur a été attribué à un autre message... Scénario 2: la table des courriers devient un peu volumineuse et je souhaite archiver les messages n°1 à n°35000 dans une base d'archivage mais tout en pouvant les récupérer dans la base principale si nécessaire. Dans la base principale, la table des courriers est donc vidée après archivage. Avec Dmax, le compteur redémarre donc à 1. Je créée de nouveaux messages n°1, n°2,....,N°120 et là je veux rapatrier le message n°12 depuis les archives. Cata, il y a déjà un n°12... C'est pour ça que je proposais de gérer l'incrément indépendamment dans une autre table. Dans le 1er scénario, même si l'enregistrement n°35 est détruit, le compteur stocké dans l'autre table est à 36. Dans le 2ème scénario, si tu archives les n°1 à 35000, le compteur de l'autre table est resté à 35001. En fait le but est de reproduire le comportement du NumeroAuto d'Access (si un numéro sort, il ne doit plus jamais ressortir). Maintenant on ne connait pas bien, pour l'instant, l'utilité de ce numéro donc j'attends de voir vers quoi on doit s'engager ...
|
|
|
00
|
|
|
#12 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 167 ![]() |
Ce que tu dis, f-leb, est frappé du bon sens... comme d'habitude : je m'incline, donc.
Donc, si ce numéro doit se propager dans d'autre(s) table(s) ou si le dernier numéro "temps réel" a des chances de se perdre à un moment ou à un autre, alors, il faut, effectivement, externaliser celui-ci : il faut qu'il soit grillé à tout jamais.
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
00
|
|
|
#13 |
|
Candidat au titre de Membre du Club
![]() Jean-Luc BruneteauAssistant de Direction Inscription : janvier 2010 Messages : 50 ![]() |
Merci à tous de vos infos et idées. Voici mes données
- une table "Tabcourrierdepart" - un champs numauto "Chronodepart" - un champs qui doit fonctionner comme numauto "nmrtsm" - un champs "Typedoc" Dans mon formulaire de saisie, je voudrai que : - dès que je saisi dans le champs "Type doc" la valeur "MSG", le champs "nmrtsm" s'incrémente automatiquement. Cette valeur m'est indispensable et doit etre spécifique que pour ce type de courrier pour servir de référence pour le système servant à transmettre ces messages. - le champs numauto "Chronodepart" s'incrémente systématiquement quelque soit le type de courrier enregistré. Merci de me guider dans l'élaboration du code servant à paramétrer le champs "nrmtsm". Puis je vous transmettre ma base de données pour vous permettre de vous faire plus précisément un idée ? J'ai d'autres évolutions à intégrer dont je ne sais pas encore aujourd'hui comment les créer. (réinitialisation des champs numauto par compactage a la demande et non à chaque fermeture, car le fichier devient très gros en milieu d'année - faciliter le changement du password pour l'utilisateur etc...) Merci ktir, comme on dit ici au Liban !!!! |
|
|
00
|
|
|
#14 | ||
|
Expert Confirmé Sénior
![]() ![]() Fabien Enseignant Inscription : janvier 2009 Messages : 2 401 ![]() |
bonsoir,
l'idée serait de rechercher le numéro après la mise à jour de [TypeDoc]. Si j'ai une table CompteurMSG avec un seul champ NumeroCompteur: CompteurMSG: sur l'évènement "Après MAJ" de la zone de texte "TypeDoc", on écrit: Code :
|
||
|
00
|
|
|
#15 |
|
Candidat au titre de Membre du Club
![]() Jean-Luc BruneteauAssistant de Direction Inscription : janvier 2010 Messages : 50 ![]() |
F-leb
Je viens de tester ta solution, cela semble fonctionner, je prolonge le test pour voir. J'ai recopié bêtement les lignes de code. je n'en comprend pas complètement le fonctionnement. peux tu éclairer ma lanterne pour que je sois moins ignorant à l'avenir........ merci pour ton aide précieuse... |
|
|
00
|
|
|
#16 |
|
Expert Confirmé Sénior
![]() ![]() Fabien Enseignant Inscription : janvier 2009 Messages : 2 401 ![]() |
bonjour,
voir http://warin.developpez.com/access/dao/?page=partie_5 pour l'accès aux données via les recordSet. |
|
00
|
|
|
#17 |
|
Candidat au titre de Membre du Club
![]() Jean-Luc BruneteauAssistant de Direction Inscription : janvier 2010 Messages : 50 ![]() |
F-Leb,
Encore merci pour ton aide, ta dernière solution fonctionne très bien. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com