|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 19 ![]() |
Bonjour,
J'ai une BDD avec comme clé primaire le couple NumeroAuto et Date d'enregistrement. Je compte remettre à zéro mon numeroAuto en début d'année par une solution retouvée sur le forum : http://www.developpez.net/forums/......eroauto-annee/ J'ai un autre champs DateDépart et je veux pouvoir incrémenter le champs NumeroAuto en fonction de ce champs DateDépart. Comment traduire l'expression suivante en code et le faire exécuter au niveau de la table?! : Code : Code :
Si (année(DateEnregistrement) = Année(DateDépart); NumeroAuto/Année(DateEnregistrement) + 1; NumeroAuto/Année(DateDépart) + 1) C'est un besoin ponctuel de fin d'année. Merci à l'avance. |
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Bonjour Khroujou,
La solution "bête et méchante" que tu as choisie dans ce fil ne convient donc pas. Il faut donc te servir des solutions de F-leb détaillées dans les liens du fil précédent.
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
00
|
|
|
#3 |
![]() ![]() ![]() Claude LELOUPChercheur de loisirs (ayant trouvé !) Inscription : novembre 2006 Messages : 5 242 ![]() |
Salut Richard,
Encore une fois : tu as de la patience ! J'ai copié ta solution "bête et méchante" dans ma boîte à copions**, mais je l'ai appelée : "géniale". Cordialement. ** dans l'Hexagone : anti-sèche.
__________________
Amoureuse/amoureux de la langue française ? Vous pouvez nous aider à corriger nos ressources ! |
|
|
00
|
|
|
#4 |
|
Expert Confirmé Sénior
![]() ![]() Fabien Enseignant Inscription : janvier 2009 Messages : 2 410 ![]() |
Salut Richard, Claude, khroujou
personnellement, je considère l’ALTER TABLE… COUNTER un peu comme le défibrillateur Je m’en sers lorsque les données des tables sont fragmentées voire corrompues, lorsque la numérotation automatique s’affole et avant d’être contraint à prononcer la mort clinique de la table… A partir de là, il faut bien ranimer le patient et arrêter la fibrillation du NumeroAuto à coup de compactage à 300 V, d’ALTER TABLE…COUNTER ou autres réparations à des voltages supérieurs… Bref, plutôt que d’essayer de contrôler les palpitations du NumAuto à coup de défibrillateur, je préfère utiliser la médecine douce : la programmation d’un numéro personnalisé. (quoi de mieux que la programmation pour effectuer des traitements personnalisés ?) Voilà mon opinion sur le sujet (que je partage évidemment avec moi-même (mon ALTER ego )).Et pis qui c’est qui qui va se lever le lundi 03 Janvier de bonne heure et taper l’ALTER TABLE COUNTER pour remettre le compteur à zéro avant qu’un utilisateur de la base ne saisisse le premier patient de l’année 2011, hein ? (Ne me dites pas que vous avez programmé le défibrillateur ...) |
|
00
|
|
|
#5 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Bonsoir F-leb,
Bravo pour la métaphore !... Entièrement d'accord avec toi. C'est pour cela que la méthode "ALTER Table..." (que j'ai trouvé sur ce forum, d'ailleurs) a été affublée de la mention "bête et méchante". Néanmoins, elle existe et elle m'a bien dépanné quand il a fallu ranimé d'urgence une de mes tables... De là à la qualifier de "géniale"... merci quand même Claude. Bref, les solutions de numérotation conditionnelle programmées sont largement plus élégantes. A bientôt.
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
00
|
|
|
#6 |
![]() ![]() ![]() Claude LELOUPChercheur de loisirs (ayant trouvé !) Inscription : novembre 2006 Messages : 5 242 ![]() |
Nom d'une pipe ! Les trois mêmes !
Nous voilà repartis pour 75 posts ? Sans nouvelle de notre numéroteur de bouquins. Je me rends compte que khroujou me doit encore une réponse dans un autre fil ! Bien à vous
__________________
Amoureuse/amoureux de la langue française ? Vous pouvez nous aider à corriger nos ressources ! |
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 19 ![]() |
Bonsoir tout le monde,
Je trouve aussi la solution Bête et méchante géniale car elle a vraiment résolu le problème de réinitialisation du NumeroAuto, et ce à la demande. Mais le problème qui s'est posé ensuite c le problème de la transition : Nous sommes en fin d'année 2010, et nous voulons le 29/12/2010 envoyer des patients faire des analyses en externe avec comme date départ 02/01/2011. Donc je reinitialise le numeroAuto et je donne au patient qui partira le 02/01/2011 le Numero 0001 - 2011 (Année(Date départ)). Le problème est qu'après avoir fait le nécessaire, je reçois une nouvelle demande pour un départ le 30/12/2010, et ça peut se repeter plusieurs fois d'ici le 1er janvier. La solution provisoire que j'ai pu trouver consiste à faire deux choses en attendant de votre part une solution plus élégante : 1 - Je garde toujours une copie à jour de la base données sur mon PC pour corriger une modif accidentelle de la part des autres utilisateurs moins avertis que moi (je suis l'administrateur de la BDD) 2 - J'ai créé des enregistrements "fictifs" dans la base avant de reinitialiser le NumeroAuto pour combler un éventuel vide. Je sais que ce n'est pas très académique et c pour ça que je suis "chez vous". Encore Merci. |
|
|
00
|
|
|
#8 | |||||
|
Expert Confirmé Sénior
![]() ![]() Fabien Enseignant Inscription : janvier 2009 Messages : 2 410 ![]() |
Citation:
Tiens oui, toujours pas de tag [Résolu], quel dommaaaaaaage ![]() Richard a promis de faire un résumé des 75 posts en quelques lignes, j’attends toujours @khroujou, Pour les versions d’Access antérieures à la version 2010, ce genre de traitements ne peut être programmé que sur des évènements de formulaire. Dans ta table, tu mets un NumeroAuto comme clé primaire (mais cette fois tu le laisse vivre sa vie). Tu rajoutes un champ [MonNumAuto] qui contiendra le numéro personnalisé incrémenté relativement à [DateDepart]. Tu initialises une table Compteur du style: Code :
Sur l’évènement "Après MAJ" du contrôle DateDepart : Code :
Code à tester/adapter/compléter avec gestion d’erreurs et tout le tralala… |
|||||
|
10
|
|
|
#9 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Bonjour à tous,
@F-leb : La promesse tient toujours... promis. Dans la foulée, dès "Résolu". Je me tate pour envoyer un MP à Brankorri... @Claude : Effectivement, en route pour un nouveau marathon... il semble. Enfin, pour vous car, je ne connais pas VBA. @Khroujou : La solution "bête et méchante" n'est pas adaptée à ton besoin. Pour ton besoin, donc, elle est loin d'être géniale : elle existe, c'est tout. Donc, il te faut potasser le tuto et le code proposé par F-leb... comme conseillé maintes fois. En avançant dans cette formation, tu pourras demander de l'aide ici même pour des points précis. Je ne connais pas VBA, mais les codeurs sont toujours en veille...
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
00
|
|
|
#10 |
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 19 ![]() |
Bonjour,
Richard : La solution "bête et méchante" n'est pas adaptée à ton besoin. Pour ton besoin, donc, elle est loin d'être géniale : elle existe, c'est tout. Mois je l'ai trouvé géniale car dans ma tête je ne pensais pas qu'on pouvait reinitialiser un NumeroAuto et je pensais que mon problème était résolu. c après que j'ai eu les problèmes de la transition mais cela, à mon avis n'enlève rien à la solution "géniale" de reinitialisation du NumeroAuto. F-Leb citation : Tu initialises une table Compteur du style: Code : Compteur : AnneeDepart ProchainNumero 2010 53 2011 1 2012 1 …[ProchainNumero] contient le numéro à attribuer au prochain enregistrement (relativement à l’année). Comment créer une table compteur et faire ajouter à la table principale le ProchainNumero? Merci |
|
|
00
|
|
|
#11 | |||
|
Expert Confirmé Sénior
![]() ![]() Fabien Enseignant Inscription : janvier 2009 Messages : 2 410 ![]() |
Citation:
Si tu as oublié comment on fait, tu fais un tour dans l’aide Access : Citation:
Citation:
Tu disposes bien d’un formulaire de saisie pour ta table principale, hein ? |
|||
|
00
|
|
|
#12 |
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 19 ![]() |
Bonsoir F leb,
J'ai testé la solution après l'avoir comprise enfin et je me retrouve avec un message d'erreur : Erreur de compilation, Type défini par l'utilisateur non défini et le curseur selectionne Je suis débutant dans Access et je m'excuse si des explications parfois évidentes ne le soient pas pour moi. Encore Merci. |
|
|
00
|
|
|
#13 |
![]() ![]() ![]() Claude LELOUPChercheur de loisirs (ayant trouvé !) Inscription : novembre 2006 Messages : 5 242 ![]() |
Bonjour,
Il te manque une référence. Procède comme ceci : <ctrl> + G ----> l'éditeur VBE apparaît. Dans le menu, clique : Outils/Références ... tu vas voir quelque chose comme ceci : La référence qui te manque est, dans ma version, "Microsoft DAO... Tu cherches dans ta liste et tu coches celle dont le nom ressemble le plus. Bon courage. Il n’est pas nécessaire d’espérer pour entreprendre ni de réussir pour persévérer !
__________________
Amoureuse/amoureux de la langue française ? Vous pouvez nous aider à corriger nos ressources ! |
|
|
00
|
|
|
#14 |
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 19 ![]() |
Bonjour à tous,
Tout d'abord MERCI pour toutes les réponses apportées dont chacune présentent une solution d'un point de vue différent. J'ai pensé à mettre le "RESOLU" sur la discussion mais après avoir testé les différentes solutions (ceux qui j'ai comprises) je vois que le problème n'est pas résolu complétement. C vrai que j'ai mis du temps avant de réagir (je m'en excuse) mais c t pour m'assurer que j'ai testé les différentes solutions; et puis comme la solution BETE ET MECHANTE à résolu le problème provisoirement, elle me donne le temps de reflechir (avec vous) pour trouver une solution durable. Je suis convaincu que le problème ne provient pas de VOUS mai plutôt de moi (énoncé de la question et/ou compréhension de la réponse). Alors je revient vers vous pour essayer de mieux présenter mon problème d'initialisation du numeroAuto en fonction de l'année : J'ai une BDD qui gère les évacuations sanitaires vers des centres locaux ou externes (d'autres villes ou d'autres pays) La table principale EVASANS est renseignée via en formulaire Evacués en cours basée sur une réquête portant le même nom que le formulaire. Les champs dont doit dépendre l'initialisation du N°Auto [RéfPC] sont : [Date] : date création de l'enregistrement [DépartLe] : date prévue pour le départ de l'évacué [Départ2] : date prévue pour quitter la capitale vers l'étranger (si le centre est à l'étrangrer) Le N° généré [RéfPC] est le N° de la prise en charge que l'évacué doit présenté au centre de destination (hôpital ou clinique). Il doit répondre au critères suivants : Incrémentation auto (pas de doublons) Réinitialisation en fonction de l'année de la dernière date de départ (à l'étranger si prévu) Ou Réinitialisation en fonction de l'année de la date de création de l'enregistrement si centre local (pas de voyage = pas de date de départ) Les enregistrement peuvent être amenés à être modifié pour inscrire la date de retour définitif (par ex.), mais cette modif ne doit pas affecté le N° déja attribué. EXEMPLES DE CAS : Date enregistrement; DépartLe ; Départ2 ; RéfPC 23/12/2009 ; 24/12/2009 ; ;889 24/12/2009 ; 31/12/2009; 02/01/2010 ;1 24/12/2009 ; 01/01/2010; ; 2 27/12/2009 ; ; ;890 30/12/2009 ; 30/12/2009 ;31/12/2009; 3 01/01/2010 ; 03/01/2010 ; ; 4 Alors les amis peut-ont arriver au mois de janvier 2012 en douceur (sans le défibrillateur "BETE ET MECHANTE" que j'aime bien!) Ma BDD est actuellement en utilisation monoposte sur un serveur partagé car pour le moment nous sommes que quatre à avoir besoin de l'utiliser mais pas en même temps (on s'arrange!!). Son partage est à l'étude. Je suis en train d'apprendre comment le faire car c un besoin imminent (critère à prévoir si possible dans la génération du N°Auto). Merci d'avance. Khroujou |
|
|
00
|
|
|
#15 | ||||
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Bonjour Khroujou, Fabien et Claude,
J'ai l'impression que nous sommes repartis dans une logique de numérotation abracadabran(korri)tesque... Khroujou, j'ai du mal à saisir la règle du jeu de la numérotation que tu veux mettre en place. Ton exemple : Code :
Code :
Il faudrait que tu l'explique, clairement, en français pour qu'elle puisse être traduite correctement en code. Après cette explication, nous pourrons estimer si la conception, elle-même, est à mettre en cause.
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
||||
|
|
00
|
|
|
#16 | |
![]() ![]() ![]() Claude LELOUPChercheur de loisirs (ayant trouvé !) Inscription : novembre 2006 Messages : 5 242 ![]() |
Citation:
Quelle mémoire ! |
|
|
|
00
|
|
|
#17 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Salutations cordiales et sincères en retour, Claude.
A bientôt.
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
00
|
|
|
#18 |
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 19 ![]() |
Bonjour,
Les enregistrement sont triés dans l'ordre de saisie. La clé primaire actuelle est le couple RéfPC/DateEnregistrement 889 représente le Dmax(RéfPc) de l'année 2009 1 Représente Dmax(RéfPC) de l'année 2010 (= 0) +1 2 Représente Dmax(RéfPC) de l'année 2010 (=1) +1 890 Représente Dmax(RéfPC) de l'année 2009 (889) +1 3 Représente Dmax(RéfPC) de l'année 2010 ( = 2) +1 4 Représente Dmax(RéfPC) de l'année 2010 (=3 ) +1 L'année du Dmax est à comparer avec : l'année du Dépar2, si vide, : l'année du DépatLe. si vide : l'année du DateEnregistrement. J'espère que ce n'est pas un problème de conception. Merci |
|
|
00
|
|
|
#20 |
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 19 ![]() |
Bonjour Alassane,
J'ai téléchargé la base et je l'ai testé et je sort avec un message d'erreur : voir fichier attaché. D'autres parts j'aimerai comprendre au lieu de Copier/coller. Merci. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com