Access - cle primaire qui evolué avec l'année
Fermé
Mtygolu
Messages postés
337
Date d'inscription
mardi 22 novembre 2005
Statut
Membre
Dernière intervention
6 février 2016
-
15 juin 2008 à 14:00
LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 - 16 juin 2008 à 19:13
LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 - 16 juin 2008 à 19:13
A voir également:
- Access - cle primaire qui evolué avec l'année
- Clé windows 10 gratuit - Guide
- Cle usb non reconnu - Guide
- Clé bootable windows 10 - Guide
- Recuperer cle windows - Guide
- Formater clé usb mac - Guide
5 réponses
LatelyGeek
Messages postés
1758
Date d'inscription
vendredi 4 janvier 2008
Statut
Membre
Dernière intervention
5 janvier 2023
550
15 juin 2008 à 15:23
15 juin 2008 à 15:23
Tu devrais mettre dans la valeur par défaut
=VraiFaux((Format(Date();"aa")*1000)+1>MaxDom("[N°Commande]";"[Commandes]")+1;(Format(Date();"aa")*1000)+1;MaxDom("[N°Commande]";"[Commandes]")+1)
En supposant que ta table s'appelle Commandes.
J'explique le principe
Format(Date();"aa")*1000)+1 va donner 8001 pendant toute l'année 2008, puis 9001 toute l'année 2009.
Je fais abstraction du 0 qui précède, si ton champ est numérique ça n'est qu'une question de format.
MaxDom("[N°Commande]";"[Commandes]")+1 va donner le prochain numéro de commande, soit mettons 08256 si la dernière était 08255.
08256 est supérieur à 08001, donc pendant toute l'année 2008, c'est le dernier plus 1 qui va être choisi.
le premier janvier 2009, il faudra trouver la plus grande valeur entre 9001 et 08756 par exemple.
Ca sera donc 9001 qui sera retenu.
Pour l'histoire des zéros devant, deux possibilités.
Soit tu fais un champ numérique et le format en sera "00000", soit c'est un champ de type texte, et il faudra
transformer un peu la formule:
=VraiFaux((Format(Date();"aa")*1000)+1>MaxDom("[N°Commande])";"[Commandes]")+1;"0"&(Format(Date();"aa")*1000)+1;MaxDom("[N°Commande]";"[Commandes]")+1)
=VraiFaux((Format(Date();"aa")*1000)+1>MaxDom("[N°Commande]";"[Commandes]")+1;(Format(Date();"aa")*1000)+1;MaxDom("[N°Commande]";"[Commandes]")+1)
En supposant que ta table s'appelle Commandes.
J'explique le principe
Format(Date();"aa")*1000)+1 va donner 8001 pendant toute l'année 2008, puis 9001 toute l'année 2009.
Je fais abstraction du 0 qui précède, si ton champ est numérique ça n'est qu'une question de format.
MaxDom("[N°Commande]";"[Commandes]")+1 va donner le prochain numéro de commande, soit mettons 08256 si la dernière était 08255.
08256 est supérieur à 08001, donc pendant toute l'année 2008, c'est le dernier plus 1 qui va être choisi.
le premier janvier 2009, il faudra trouver la plus grande valeur entre 9001 et 08756 par exemple.
Ca sera donc 9001 qui sera retenu.
Pour l'histoire des zéros devant, deux possibilités.
Soit tu fais un champ numérique et le format en sera "00000", soit c'est un champ de type texte, et il faudra
transformer un peu la formule:
=VraiFaux((Format(Date();"aa")*1000)+1>MaxDom("[N°Commande])";"[Commandes]")+1;"0"&(Format(Date();"aa")*1000)+1;MaxDom("[N°Commande]";"[Commandes]")+1)
LatelyGeek
Messages postés
1758
Date d'inscription
vendredi 4 janvier 2008
Statut
Membre
Dernière intervention
5 janvier 2023
550
15 juin 2008 à 16:44
15 juin 2008 à 16:44
Très bizarre... mais où as tu mis ça? Si tu l'as mis dans la table c'est PEUT-ETRE à cause de ça. Essaye dans le formulaire. Sinon je vois d'autant moins d'explication qu'il a reconnu la fonction puisqu'il l'appelle avec son nom anglais de DMax...
Mtygolu
Messages postés
337
Date d'inscription
mardi 22 novembre 2005
Statut
Membre
Dernière intervention
6 février 2016
48
15 juin 2008 à 17:01
15 juin 2008 à 17:01
bon alors effectivement j'avais mis la fonction dans la table
donc je viens de la mettre dans le champ du formulaire
et du coup quand je veut créer un nouvel enregistrement j'ai un "#erreur" dans le champ du n° de commande qui apparait
cela vient peut etre du faite que pour le moment ma clé primaire n'est pas automatique , quand j'avais fait la table je voulais saisir le n° de commande a la main
donc je viens de la mettre dans le champ du formulaire
et du coup quand je veut créer un nouvel enregistrement j'ai un "#erreur" dans le champ du n° de commande qui apparait
cela vient peut etre du faite que pour le moment ma clé primaire n'est pas automatique , quand j'avais fait la table je voulais saisir le n° de commande a la main
Mtygolu
Messages postés
337
Date d'inscription
mardi 22 novembre 2005
Statut
Membre
Dernière intervention
6 février 2016
48
15 juin 2008 à 17:15
15 juin 2008 à 17:15
heu d'ailleurs je fais comment si je veux mettre ma clé primaire automatique , maintenant ?
Mtygolu
Messages postés
337
Date d'inscription
mardi 22 novembre 2005
Statut
Membre
Dernière intervention
6 février 2016
48
15 juin 2008 à 18:48
15 juin 2008 à 18:48
bon alors je suis revenu en arrière
j'ai remis une numérotation auto a mes n° de commande
j'ai essayer les 2 fonctions que tu m'a donné dans le champs au niveau du formulaire , la fonction est acceptée (pas de message d'erreur) .
mais mes numéros de commande sont toujours 1 - 2 - 3 etc
a défaut je voudrais bien affiché 0001 a la place de 1
merci
j'ai remis une numérotation auto a mes n° de commande
j'ai essayer les 2 fonctions que tu m'a donné dans le champs au niveau du formulaire , la fonction est acceptée (pas de message d'erreur) .
mais mes numéros de commande sont toujours 1 - 2 - 3 etc
a défaut je voudrais bien affiché 0001 a la place de 1
merci
LatelyGeek
Messages postés
1758
Date d'inscription
vendredi 4 janvier 2008
Statut
Membre
Dernière intervention
5 janvier 2023
550
15 juin 2008 à 19:00
15 juin 2008 à 19:00
Evidemment! Le numéro automatique est justement automatique (1 - 2 - 3)
Tu dois mettre un champ de type numérique.
Et s'il existe dejà des enregistrements, attention: Ce que je t'ai dit ne fonctionnera que pour les prochains numéros. C'est une valeur par défaut pour les nouveaux enregistrements.
Si tu veux modifier les anciens, il faut faire une requête mise à jour.
Tu dois mettre un champ de type numérique.
Et s'il existe dejà des enregistrements, attention: Ce que je t'ai dit ne fonctionnera que pour les prochains numéros. C'est une valeur par défaut pour les nouveaux enregistrements.
Si tu veux modifier les anciens, il faut faire une requête mise à jour.
Mtygolu
Messages postés
337
Date d'inscription
mardi 22 novembre 2005
Statut
Membre
Dernière intervention
6 février 2016
48
15 juin 2008 à 19:10
15 juin 2008 à 19:10
donc je viens de revenir en arriere pendant ta reponse
bon alors effectivement j'avais mis la fonction dans la table
donc je viens de la mettre dans le champ du formulaire
et du coup quand je veut créer un nouvel enregistrement j'ai un "#erreur" dans le champ du n° de commande qui apparait
bon alors effectivement j'avais mis la fonction dans la table
donc je viens de la mettre dans le champ du formulaire
et du coup quand je veut créer un nouvel enregistrement j'ai un "#erreur" dans le champ du n° de commande qui apparait
Mtygolu
Messages postés
337
Date d'inscription
mardi 22 novembre 2005
Statut
Membre
Dernière intervention
6 février 2016
48
>
Mtygolu
Messages postés
337
Date d'inscription
mardi 22 novembre 2005
Statut
Membre
Dernière intervention
6 février 2016
15 juin 2008 à 19:26
15 juin 2008 à 19:26
bon je viens de faire un essai rapide sur une base vide
la fonction marche , je pense que cela viens du fairte que dans ma base de stock , j'ai une relation liée avec un sous formulaire par le n° de commande
je vais faire des essais pour trouver le bug
merci a toi
la fonction marche , je pense que cela viens du fairte que dans ma base de stock , j'ai une relation liée avec un sous formulaire par le n° de commande
je vais faire des essais pour trouver le bug
merci a toi
LatelyGeek
Messages postés
1758
Date d'inscription
vendredi 4 janvier 2008
Statut
Membre
Dernière intervention
5 janvier 2023
550
16 juin 2008 à 08:16
16 juin 2008 à 08:16
Non, je ne vois pas le rapport avec les liaisons. Je pencherais plutôt pour des valeurs non numériques dans ta table Commandes.
Pour trouver la réponse, les tests que tu peux faire sont, dans une requête, faire un Max sur le champ NCommande, puis essayer d'ajouter 1 à ce max.
Tu verras quand ça coince. Au passage, donner moi la valeur du Max, ça me permettra de réfléchir aussi...
Pour trouver la réponse, les tests que tu peux faire sont, dans une requête, faire un Max sur le champ NCommande, puis essayer d'ajouter 1 à ce max.
Tu verras quand ça coince. Au passage, donner moi la valeur du Max, ça me permettra de réfléchir aussi...
Mtygolu
Messages postés
337
Date d'inscription
mardi 22 novembre 2005
Statut
Membre
Dernière intervention
6 février 2016
48
16 juin 2008 à 18:06
16 juin 2008 à 18:06
bon alors j'ai vidé ma base , juste entre une reference d'aticle et un fournisseur pour pouvoir saisir ma commande
j'ai vérifié le champ de la table commande , il est bien au format numérique
j'ai entré la fonction correspondant au format numérique que tu m'a donné en adaptant avec le nom de la table (commande) et du champ (n° de commande)
=VraiFaux((Format(Date();"aa")*1000)+1>MaxDom("[N° de Commande]";"[Commande]")+1;(Format(Date();"aa")*1000)+1;MaxDom("[N° de Commande]";"[Commande]")+1)
la fonction est acceptée mais j'ai toujours le "#erreur" qui apparait dans le champ "n° de commande" et je ne peux donc pas saisir une nouvelle commande car ma clé primaire est invalide
j'ai vérifié le champ de la table commande , il est bien au format numérique
j'ai entré la fonction correspondant au format numérique que tu m'a donné en adaptant avec le nom de la table (commande) et du champ (n° de commande)
=VraiFaux((Format(Date();"aa")*1000)+1>MaxDom("[N° de Commande]";"[Commande]")+1;(Format(Date();"aa")*1000)+1;MaxDom("[N° de Commande]";"[Commande]")+1)
la fonction est acceptée mais j'ai toujours le "#erreur" qui apparait dans le champ "n° de commande" et je ne peux donc pas saisir une nouvelle commande car ma clé primaire est invalide
LatelyGeek
Messages postés
1758
Date d'inscription
vendredi 4 janvier 2008
Statut
Membre
Dernière intervention
5 janvier 2023
550
>
Mtygolu
Messages postés
337
Date d'inscription
mardi 22 novembre 2005
Statut
Membre
Dernière intervention
6 février 2016
16 juin 2008 à 18:31
16 juin 2008 à 18:31
Tape manuellement le premier numéro de commande. Ca évitera un test qui ne servirait que pour cette première commande justement. Tape 08001 et regarde si la deucième s'appelle 08002, ensuite change la date système, mets toi en 2009 et regarde si la troisième commande porte le numéro 09001
Mtygolu
Messages postés
337
Date d'inscription
mardi 22 novembre 2005
Statut
Membre
Dernière intervention
6 février 2016
48
>
LatelyGeek
Messages postés
1758
Date d'inscription
vendredi 4 janvier 2008
Statut
Membre
Dernière intervention
5 janvier 2023
16 juin 2008 à 18:51
16 juin 2008 à 18:51
pareil
j'ai enlevé la fonction
fait une 1ere commande avec 8001
remis la fonction dans le champ du formulaire et là ... vlan pareil #erreur
j'ai enlevé la fonction
fait une 1ere commande avec 8001
remis la fonction dans le champ du formulaire et là ... vlan pareil #erreur
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
LatelyGeek
Messages postés
1758
Date d'inscription
vendredi 4 janvier 2008
Statut
Membre
Dernière intervention
5 janvier 2023
550
16 juin 2008 à 19:13
16 juin 2008 à 19:13
Désolée, j'ma gourée avec Excel (Qu'est ce qu'ils sont pénibles, chez GrosBill, ils pourraient faire un effort...)
C'est =VraiFaux((Format(Date();"yy")*1000)+1>MaxDom(...
C'est =VraiFaux((Format(Date();"yy")*1000)+1>MaxDom(...
15 juin 2008 à 15:55
merci pour la réponse rapide
donc comme ma table s'appelle "Commande" et mon champ "N° de commande"(type texte), j'ai reformulé en
=VraiFaux((Format(Date();"aa")*1000)+1>MaxDom("[N° de Commande])";"[Commande]")+1;"0" & (Format(Date();"aa")*1000)+1;MaxDom("[N° de Commande]";"[Commande]")+1)
mais quand je veux fermé et sauvegardé , j'ai un message d'erreur :
fonction 'Dmax' inconnue dans l'expression de validation ou dans la valeur par défaut de 'commande.N° de commande'
modif impossible pour le moment .... SNIIIF
--------------------
« Je suis capable du meilleur et du pire.
Mais, dans le pire, c’est moi le meilleur. »