Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Numéros auto libres

23 réponses
Avatar
JulieH
Bonjour,

Bricoleuse sur Access, je consulte souvent le forum et ses archives qui
m'aident évidemment beaucoup. Cependant, cette fois-ci, je n'ai pas
trouvé ce que je cherche. Voici mon problème exposé de manière simplifié :

Je gère des troupeaux d'animaux qui ont des numéros de tatouage à 9
chiffres. Comme ce n'est pas très pratique à saisir sans erreur, je leur
affecte
un "numéro de travail" à 3 chiffres plus facile à utiliser.
Lorsque je démarre un cheptel, je crée mes animaux (par exemple 999
individus) et Access leur affecte un numéro de travail auto de 1 à 999.
Dans les semaines suivantes, certains sont vendus ou disparaissent, je
les enregistre et ainsi, leurs numéros se libèrent.
Le mois suivant par exemple, si j'entre d'autres animaux dans le
cheptel, je souhaite qu'Access leur affecte les numéros libérés.

Est-ce possible ? Merci par avance pour vos idées.

Julie

10 réponses

1 2 3
Avatar
pgz
Bonjour.

Une suggestion : créer une table des numéros libres. A l'enregistrement
d'une "sortie", récupérer le numéro libéré dans cette table. Et à
l'enregistrement d'une entrée prendre un numéro dans cette table et l'y
supprimer.

Bon courage,
--
pgz
_____________________________




Bonjour,

Bricoleuse sur Access, je consulte souvent le forum et ses archives qui
m'aident évidemment beaucoup. Cependant, cette fois-ci, je n'ai pas
trouvé ce que je cherche. Voici mon problème exposé de manière simplifié :

Je gère des troupeaux d'animaux qui ont des numéros de tatouage à 9
chiffres. Comme ce n'est pas très pratique à saisir sans erreur, je leur
affecte
un "numéro de travail" à 3 chiffres plus facile à utiliser.
Lorsque je démarre un cheptel, je crée mes animaux (par exemple 999
individus) et Access leur affecte un numéro de travail auto de 1 à 999.
Dans les semaines suivantes, certains sont vendus ou disparaissent, je
les enregistre et ainsi, leurs numéros se libèrent.
Le mois suivant par exemple, si j'entre d'autres animaux dans le
cheptel, je souhaite qu'Access leur affecte les numéros libérés.

Est-ce possible ? Merci par avance pour vos idées.

Julie





Avatar
JulieH
Bonjour et merci pour ta réponse,

Cette solution me paraît intéressante, mais mon niveau ne me permet pas
(encore ?) de réaliser cela. Il me faudrait un peu plus d'indications :
D'abord pour récupérer le numéro libéré lors d'une sortie, ainsi que la
date de sortie si possible.
Ensuite pour "choisir" un numéro parmi les plus anciens libérés pour
l'affecter à la nouvelle entrée et le supprimer dans cette table.
Enfin, il me faudrait pouvoir gérer les erreurs si par hasard j'entrais
un animal alors qu'il n'y a plus de numéros disponibles. En principe,
c'est très très rare.

Je ne sais pas si tu peux encore m'aider.

Julie

Bonjour.

Une suggestion : créer une table des numéros libres. A l'enregistrement
d'une "sortie", récupérer le numéro libéré dans cette table. Et à
l'enregistrement d'une entrée prendre un numéro dans cette table et l'y
supprimer.

Bon courage,


Avatar
pgz
Re.

Pour t'aider dans le détail, il faudrait voir ce que tu as déjà fait.
Tu peux me contacter par email.


--
pgz
_____________________________




Bonjour et merci pour ta réponse,

Cette solution me paraît intéressante, mais mon niveau ne me permet pas
(encore ?) de réaliser cela. Il me faudrait un peu plus d'indications :
D'abord pour récupérer le numéro libéré lors d'une sortie, ainsi que la
date de sortie si possible.
Ensuite pour "choisir" un numéro parmi les plus anciens libérés pour
l'affecter à la nouvelle entrée et le supprimer dans cette table.
Enfin, il me faudrait pouvoir gérer les erreurs si par hasard j'entrais
un animal alors qu'il n'y a plus de numéros disponibles. En principe,
c'est très très rare.

Je ne sais pas si tu peux encore m'aider.

Julie

Bonjour.

Une suggestion : créer une table des numéros libres. A l'enregistrement
d'une "sortie", récupérer le numéro libéré dans cette table. Et à
l'enregistrement d'une entrée prendre un numéro dans cette table et l'y
supprimer.

Bon courage,





Avatar
JulieH
Je n'ai rien fait de particulier pour le moment car je butais sur ce
problème.

J'imagine pour l'instant juste une table avec :
N° auto = N° de travail
N° de tatouage
Date d'entrée
Date de sortie
Cause de sortie

Un formulaire d'entrée (création d'animaux):
N° de tatouage
Date d'entrée

Un formulaire de sortie
N° de travail
Date de sortie
Cause.

Merci


Re.

Pour t'aider dans le détail, il faudrait voir ce que tu as déjà fait.
Tu peux me contacter par email.




Avatar
pgz
En fait le plus simple serait que tu utilises un simple numauto, qui bien sûr
au fil du temps va croître, mais c’est très simple ;

Si tu tiens à rester avec des « numéros de travail » en nombre limité, cela
revient à utiliser une liste de noms réutilisables. Même dans ce cas, je te
conseille de garder aussi un num auto, même s’il n’est pas visible pour
l’opérateur ;

La table deviendrait alors :
tblCheptel :
IdAnimal NumAuto Clé
NumTravail entier
Tatouage long ou texte
DateEntrée date/heure
DateSortie date/heure
CausedeSortie texte ou mémo

Lors de la saisie du formulaire d’entrée, après saisie du tatouage, il faut
alors :
- vérifier que le tatouage n’existe pas déjà dans la table
- rechercher le premier Numtravail disponible.

Pour cela, le plus simple est d’écrire une fonction qui va chercher par
exemple le premier numéro dispo entre 1 et 5000. Il faut prendre une limite
assez haute pour être sûr de toujours trouver un numéro dispo qq soit
l’effectif du cheptel.

--
pgz
_____________________________

Avatar
JulieH
Merci beaucoup pour continuer à t'intéresser à mon petit problème,

Le numéro auto qui va croître au fil du temps, c'est justement ce que
je veux éviter.

Ce qui m'intéresserait, si c'est possible, c'est d'avoir quelques
éléments pour cette fameuse fonction. Car c'est ce que je ne maitrise pas.

Julie


En fait le plus simple serait que tu utilises un simple numauto, qui bien sûr
au fil du temps va croître, mais c’est très simple ;

Si tu tiens à rester avec des « numéros de travail » en nombre limité, cela
revient à utiliser une liste de noms réutilisables. Même dans ce cas, je te
conseille de garder aussi un num auto, même s’il n’est pas visible pour
l’opérateur ;

La table deviendrait alors :
tblCheptel :
IdAnimal NumAuto Clé
NumTravail entier
Tatouage long ou texte
DateEntrée date/heure
DateSortie date/heure
CausedeSortie texte ou mémo

Lors de la saisie du formulaire d’entrée, après saisie du tatouage, il faut
alors :
- vérifier que le tatouage n’existe pas déjà dans la table
- rechercher le premier Numtravail disponible.

Pour cela, le plus simple est d’écrire une fonction qui va chercher par
exemple le premier numéro dispo entre 1 et 5000. Il faut prendre une limite
assez haute pour être sûr de toujours trouver un numéro dispo qq soit
l’effectif du cheptel.



Avatar
pgz
Voici, pour l'idée une fonction qui devrait renvoyer le premier numéro libre
entre 1 et 5000 :

Public fctNumTravail as Integer
Dim db as DAO.DataBase, rst as DAO.RecordSet, i as integer

Set db = application.CurrentDb
Set rst = db.OpenRecordSet(“tblCheptel”, dbOpenDynaset)

For i = 1 to 5000
Rst.findfirst “NumTrav = “ & i
If rst.NoMatch Then exit For
Rst.FindFirst “NumTrav = “ & I & “ AND Not IsNull(DateSortie)”
If rst.NoMatch Then exit For
Next i

Rst.Close
Set rst = Nothing
Set db = Nothing

If i = 5000 Then
MsgBox “Pb d’attribution du Numéro de travail : plus de 5000.”
i = 0
End If

fctNumTravail = i

End function

A mettre au point, bien sûr.

Bon courage,
--
pgz
_____________________________

Avatar
3stone
Salut,

"pgz"
| Voici, pour l'idée une fonction qui devrait renvoyer le premier numéro libre
| entre 1 et 5000 :

Pourquoi diable se limiter à ces valeurs ??


JulieH :
Regarde ceci, avec une simple requête...
http://www.3stone.be/access/articles.php?lng=fr&pg8

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
pgz
Bonjour;

à 3stones : La demande de JulieH est d'utiliser comme un nom les nombres
entre 1 et 999, en réutilisant ceux qui se libèrent. Mais quand un nombre se
libère, il ne disparait pas : ce n'est donc pas la clé de la table.
C'est pourquoi je crains que ce que tu proposes ne conviennes pas. Enfin, si
ce n'est pas moi qui ai mal compris...

Cordialement,
--
pgz
_____________________________




Salut,

"pgz"
| Voici, pour l'idée une fonction qui devrait renvoyer le premier numéro libre
| entre 1 et 5000 :

Pourquoi diable se limiter à ces valeurs ??


JulieH :
Regarde ceci, avec une simple requête...
http://www.3stone.be/access/articles.php?lng=fr&pg8

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)




Avatar
JulieH
Merci à tous les deux pour vos réponses.

Je vais tenter cela ce week end. Je reviendrai si problème.

Julie

Bonjour;

à 3stones : La demande de JulieH est d'utiliser comme un nom les nombres
entre 1 et 999, en réutilisant ceux qui se libèrent. Mais quand un nombre se
libère, il ne disparait pas : ce n'est donc pas la clé de la table.
C'est pourquoi je crains que ce que tu proposes ne conviennes pas. Enfin, si
ce n'est pas moi qui ai mal compris...

Cordialement,


1 2 3