[VBA-Access] Numéro auto personnalisé

2 réponses
Avatar
cercan
Bonjour,

Je doit mettre en place sur un formulaire au sein d'une base de données ACCESS 2007, un numéro auto personnalisé et je suis complétement perdu.

exemple du numéro = 000822279500116

Où 0008222(ne change pas) 795(selon choix dans liste déroulante) 001(numéro auto) 16(ne change pas)

Voici ce que je dois faire :

Ce numéro est dépendant du choix de l'utilisateur dans 2 listes déroulante au sein du meme formulaire. (liste déroulante "type" avec 3 choix possible et "techno" avec 2 choix possible)

Donc
Si le type (choix dans une liste déroulante) est "fast track" alors prd_typ = 795
Et la numérotation auto commencera à 001.

Sinon si le type est "spécial" alors prd_typ = 765
Et la numérotation auto commencera à 500.

Sinon si la techno (choix dans 2ieme liste déroulante) est "led" alors prd_typ = 764
Et la numérotation auto commencera à 530.

Sinon prd_typ = 766
Et la numérotation auto commencera à 530.

Merci par avance pour votre aide

2 réponses

Avatar
3stone
Salut,

cercan wrote:
Bonjour,

Je doit mettre en place sur un formulaire au sein d'une base de
données ACCESS 2007, un numéro auto personnalisé et je suis
complétement perdu.




"Je dois..."
Mais quel esprit torturé à imaginé cela ?...



exemple du numéro = 000822279500116

Où 0008222(ne change pas) 795(selon choix dans liste déroulante)
001(numéro auto) 16(ne change pas)




pourquoi sauver une multitude de fois des valeurs fixes, comme
0008222 et 16, puisqu'elle ne distingue pas le numéro personnalisé ?

ensuite, ce n'est pas un numéro auto qu'il te faut, mais un
numéro incrémentiel...


Voici ce que je dois faire :

Ce numéro est dépendant du choix de l'utilisateur dans 2 listes
déroulante au sein du meme formulaire. (liste déroulante "type" avec
3 choix possible et "techno" avec 2 choix possible)

Donc
Si le type (choix dans une liste déroulante) est "fast track" alors
prd_typ = 795
Et la numérotation auto commencera à 001.

Sinon si le type est "spécial" alors prd_typ = 765
Et la numérotation auto commencera à 500.

Sinon si la techno (choix dans 2ieme liste déroulante) est "led"
alors prd_typ = 764
Et la numérotation auto commencera à 530.

Sinon prd_typ = 766
Et la numérotation auto commencera à 530.



D'abord, je ne peux conseiller ce genre de contruction barbare,
qui n'apporte rien, si ce n'est des complications inutiles.
Car, si créer ce genre de code n'est pas réellement compliqué,
chaque manipulation future apporte des manipulations pour
extraire l'information utile qui n'a pas lieu d'être.
De plus, malgré la longueur et la complication de ce genre de
numéro, il ne contient que peu d'information et, en fait,
ne permet la création que de très peu code différents.

Bon, admettons que tu n'aies pas le choix :o)

Je te déconseille malgré tout de mettre ces 15 chiffres dans
un seul et même champ. Les valeurs "utiles" se trouveront
plutôt chacun dans leur champ et,si par la suite tu as besoin
du code au complet, pour imprimer des étiquettes - par exemple,
il suffit de concaténer cela dans la requête à l'aide d'un
champ "calculé".

Mais le plus grave, c'est que la méthode cache en fait une
erreur grossière d'analyse... car, fixer définitivement que
l'on ne dépassera pas les 30 valeurs (de 500 à 530) pour
un certain produit est pour le moins dangereux.

En fait, tout cela me fait penser à une (vieille) base
ayant une organisation hierarchique et non relationelle.

Qu'en pense tu ?

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
Gloops
cercan a écrit, le 01/10/2010 11:21 :
Bonjour,

Je doit mettre en place sur un formulaire au sein d'une base de donné es ACCESS
2007, un numéro auto personnalisé et je suis complétement perdu.

exemple du numéro = 000822279500116

Où 0008222(ne change pas) 795(selon choix dans liste déroulante)
001(numéro auto) 16(ne change pas)

Voici ce que je dois faire :

Ce numéro est dépendant du choix de l'utilisateur dans 2 listes dé roulante au
sein du meme formulaire. (liste déroulante "type" avec 3 choix possib le et
"techno" avec 2 choix possible)

Donc
Si le type (choix dans une liste déroulante) est "fast track" alors p rd_typ =
795
Et la numérotation auto commencera à 001.

Sinon si le type est "spécial" alors prd_typ = 765
Et la numérotation auto commencera à 500.

Sinon si la techno (choix dans 2ieme liste déroulante) est "led" alor s prd_typ
= 764
Et la numérotation auto commencera à 530.

Sinon prd_typ = 766
Et la numérotation auto commencera à 530.

Merci par avance pour votre aide



Bonjour,

Je soupçonne que ce dont il s'agit là n'est pas un numéro automatiq ue
(cette dénomination recouvre quelque chose de très précis sous Acce ss),
mais plutôt une nomenclature propre à une administration, qui désig ne
ainsi ses documents pour les retrouver et surtout les classer plus
facilement.

L'administration en question appelle ça un numéro de document, et
souhaiterait que ce numéro soit fourni automatiquement. Attention, si o n
s'adresse à des programmeurs Access, en leur parlant d'un numéro
automatique ça leur évoque tout autre chose, et si on parle dans un
newsgroup technique on est supposé au départ partager les mêmes ter mes.

C'est plus facile de répondre à une question quand on emploie les ter mes
adéquats.

Est-ce que je me trompe ?

Si le document donne lieu à un enregistrement dans une table, rien ne
s'oppose à ce que cet enregistrement soit désigné (au sein de la ba se)
par un numéro automatique tel que l'entend Access, il s'agit d'un numé ro
de type entier long, incrémenté automatiquement par Access à chaque fois
qu'on se place sur la table en mode insertion d'enregistrement. Et par
ailleurs, on pourra avoir un champ désignant le numéro de nomenclatur e,
qui ne sera au demeurant pas utilisé comme identifiant dans la base,
mais ça n'empêche pas le programmeur d'être responsable de s'assure r que
le même numéro de nomenclature ne soit pas affecté à deux documen ts.

Il est bon d'avoir conscience que le numéro automatique (d'Access) est
propice à générer ce qu'on appelle des trous de séquence, à sav oir que
les numéros ne se suivent pas, des numéros ne sont pas affectés à des
documents. En effet, quand on se place en mode d'insertion, rien
n'empêche de quitter ce mode par la touche d'échappement sans créer
d'enregistrement, et quand on reviendra en mode d'insertion le compteur
aura encore progressé de un. Par ailleurs si on supprime un
enregistrement, son numéro n'est pas réutilisé.

Si on veut des numéros qui se suivent, on aura intérêt à tenir un
compteur dans une table qui ne contiendra qu'un enregistrement (il est
courant d'avoir une telle table qui contienne des paramètres de
l'application), là on pourra décider comme on voudra à quel moment ce
numéro sera incrémenté, et le mettre à jour en même temps.

Il n'y a pas franchement d'inconvénient à utiliser un numéro automa tique
(de type entier long) comme identifiant de l'enregistrement, mais pour
ce qui est du numéro de nomenclature, si on a besoin de numéros qui s e
suivent, tenir compte du paragraphe précédent.