|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 19 ![]() |
Bonjour,
En fait je suis novice dans Access et je ne maitrise pas du tt vba et j'ai une BD pour la gestion des patients dans une clinique et l'dentifient est de type NumeroAuto. Alors j'aimerais avoir la possibilité d'initialiser l'identifiant chaque année et de commencer la numerotation par 001. Mon besoin donc se resume en deux problèmes : 1 - Je veux un champs numerique qui s'autoincrémente automatiquement 2 - Je veux que ce champs se reinitialise chaque année. aidez-moi svp car on est en fin d'année et je n'ai pas encore pu trouver de solution. Merci d'avance. NB : je ne tient pas à ce que ce champs soit la clé primaire de la table même si c le K aujourd'hui. |
|
|
00
|
|
|
#2 |
![]() ![]() Denis Développeur informatique Inscription : août 2004 Messages : 3 204 ![]() |
Salut,
As-tu un autre champ qui permet de connaitre l'année, ou bien est-ce l'année du jour ou tu ajoutes l'enregistrement ?
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp. Bon développement ! Mes tutoriels et contributions sur ma page perso: Ma page personnelle |
|
00
|
|
|
#3 |
|
Membre Expert
![]() Inscription : mars 2006 Messages : 1 331 ![]() |
__________________
Questions techniques par MP ![]() Le peu que je sais, c'est à mon ignorance que je le dois. ...............................................................................Sacha Guitry |
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 19 ![]() |
J'ai un champs de type date dont la valeur par défaut est parametrée à
|
|
|
00
|
|
|
#5 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Bonjour Khroujou, Francishop et User,
Voici le code "bête et méchant" qui permet de ré-initialiser un champ en numéro auto : Code sql :
ALTER TABLE [nom_table] ALTER [nom_champ_en_numero_auto] COUNTER(123,1) ;
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
10
|
|
|
#6 | ||
![]() ![]() Denis Développeur informatique Inscription : août 2004 Messages : 3 204 ![]() |
Salut,
Si tu as 1 déjà un champ date alors tu peux garder ton champ numéro auto et créer un champ calculé dans une requête ou dans un formulaire: Par exemple, si tu as une table T_Facture, un champ numéro auto NF, un champ date DateF, alors tu peux créer un champ calculé Numero basés sur ces deux champs: Code :
Numero : DCount("NF","T_Facture","Year(DateF)=" & Year([DateF]) & " and [NF]<" & [NF])+1 Sur l'évènement avant-insertion du formulaire de saisie basé sur la table T_Facture, mettre le code : Code :
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp. Bon développement ! Mes tutoriels et contributions sur ma page perso: Ma page personnelle |
||
|
10
|
|
|
#7 |
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 19 ![]() |
Merci les amis pour les efforts que vous deployez mais :
Je n'ai pas compris où dois-je mettre le code "bête et méchant" de Richard_35 ni la première solution proposée par User alors que la deuxième solution a marché mais pas sans problème. En fait j'ai inséré le code dans les deux formulaires qui utilisent le champs en question [RéfPC] après avoir créer au niveau de la table mère "EVASANS" un autre champs NumAuto [NRéfPC] juste comme clé primaire. Le problème est que la base de données est partagée entre 3 utilisateurs et je ne veux pas que les deux autres, moins avertis que moi en Access, se trompent et saisissent un numero manuellement dans le champs [RéfPC]. D'autres part le champs [RéfPC] est récupéré dans un état sous forme 001 - 2011. Ma question : Ya t-il une possibilité de le récupérer sous forme de 3 ou 4 chiffres (001 ou 0001)? Comment empécher la saisie à la fois dans les formulaires et dans la table affichée en mode feuille de données? C long mais j'espère au mois que c clair. Merci. |
|
|
00
|
|
|
#8 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Il faut créer une requête, dans l'onglet "Requête", en mode SQL : tu copies/colles ce code
Code sql :
ALTER TABLE [nom_table] ALTER [nom_champ_en_numero_auto] COUNTER(123,1) ; En l'exécutant (double-click), cette requête remet à xxx le champ numéro auto indiqué.
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
00
|
|
|
#9 |
![]() ![]() Denis Développeur informatique Inscription : août 2004 Messages : 3 204 ![]() |
Salut,
La solution proposée par francishop et moi-même est 1 peu problématique dans le cas de plusieurs utilisateurs simultanés qui ajoutent un enregistrement dans la base. C'est pourquoi je te conseille la solution "bête et méchante" proposée par Richard. A+
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp. Bon développement ! Mes tutoriels et contributions sur ma page perso: Ma page personnelle |
|
00
|
|
|
#10 |
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 19 ![]() |
Le problème avec la solution "méchante" c sont les doublons qui seront refusés si champs clé primaire.
Alors ya t-il une façon d'avoir deux champs numeroAuto dans la même table un qui servira à la clé primaire et l'autre sera reinitialisé au besoin (début d'année dans mon cas) et continue à s'incrémenter par +1? |
|
|
00
|
|
|
#11 |
![]() ![]() Denis Développeur informatique Inscription : août 2004 Messages : 3 204 ![]() |
Salut,
Dans ce cas le 2ème champ de numérotation sera un champ calculé dans une requête par exemple et les données de ce champ ne seront pas stockées dans la table, donc pas de 2ème champ numéro auto dans ta table. Il s'agit de la 1ère solution que je t'ai proposée Code :
Numero : DCount("NF","T_Facture","Year(DateF)=" & Year([DateF]) & " and [NF]<" & [NF])+1
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp. Bon développement ! Mes tutoriels et contributions sur ma page perso: Ma page personnelle |
|
00
|
|
|
#12 |
|
Expert Confirmé Sénior
![]() ![]() Fabien Enseignant Inscription : janvier 2009 Messages : 2 410 ![]() |
Bonjour à tous,
pour les problèmes de numérotation personnalisée on peut aussi regarder dans le tutoriel : Numérotation personnalisée des enregistrements dans Access 2010 Si on n’a pas (encore) Access 2010 (la version utilisée n’est pas précisée dans la discussion), on se contentera du paragraphe : II - Avant Access 2010 On peut également consulter le paragraphe : III-C - Intérêt d'une table supplémentaire. |
|
00
|
|
|
#13 | |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Bonjour à tous,
Khroujou, toutes les solutions "non-bêtes et non-méchantes" proposées sont des solutions élégantes. Après étude de ta part, c'est toi le décisionnaire. L'adaptation de la solution "bête et méchante" serait de mettre ton champ TonChampDate Citation:
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
|
00
|
|
|
#14 |
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 19 ![]() |
Richard_35 :
Pour moi je pense que c la solution idéale. Le problème est que je ne sais pas comment créer un champs calculé dans une table et lui attribuer la fonction "clé primaire". comme je l'ai dit au départ, j'ai un niveau de débutant dans access. J'ai commencé avec Access 2000 et aujourd'hui j'utilise Access 2007. Merci ka même. |
|
|
00
|
|
|
#15 | ||
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Bonjour Khroujou,
Je ne comprends pas : Citation:
Citation:
Ta 1ère remarque : TaTable - id_numauto (clé primaire, numéro auto) - champ_date (clé primaire, champ date) ... ==> le couple id_numauto/champ_date constitue la clé primaire de ta table ; ==> c'est toi qui gère l'initialisation de id_numauto quand, dans ton formulair en champ_date change ; ==> ce n'est pas une solution très élégante... "bête et méchante", même. Ta 2ème remarque : Il faut utiliser les tutos indiqués : il montrent, très bien, comment gérer une numérotation spécifique.
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
||
|
|
00
|
|
|
#16 |
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 19 ![]() |
Bonjour,
Peut-être que je me suis mal exprimé. La question devient : Comment créer une clé primaire basée sur le couple NumeroAuto/ChampsDate? à + |
|
|
00
|
|
|
#17 | |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Bonjour Khroujou,
Citation:
Tu peux, également, consulter l'aide en ligne de Access pour toutes ces questions de fonctionnement non-techniques.
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
|
10
|
|
|
#18 |
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 19 ![]() |
Merci Rchard_35, merci à tous.
Toutes les solutions proposées ont été utiles. J'ai choisi la solution "Bête_et_méchante" après avoir prametré le couple de champs NumeroAuto/Date comme clé primaire et ça marche .Encore merci et à bientôt |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com