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,
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,
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,
Salut pgz,
"pgz"
| à 3stones : La demande de JulieH est d'utiliser comme un nom les nombres
| entre 1 et 999,
Tu as raison (en partie ;-)
J'ai lu le message d'origine (j'avais pris en cours de route...) et elle
demande bien à réutiliser un numéro libre <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.
Mais, là ou tu te trompe, c'est qu'elle parle bien de la clé primaire
qui plus est, est un numéroauto comme le dit l'objet du message !
JulieH :
Ce que tu cherche à faire n'est pas une bonne idée, du tout !!!
Tu dis:
"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."
Cela veut donc bien dire que Access attribue un numéroauto, qui se
libère lorsque l'animal est vendu, et que toi tu cherche à réutilser se
même numéro...
1) Un numéroauto est utiliser lorsque rien d'autre ne se prête à être
clé primaire !
2) Ce numéro ne doit (devrait) même pas apparaitre, puisqu'il ne sert
en principe qu'aux relations
3) Si un animal vendu portant le numéro 333 et que ce numéro est
réattribué à un autre animal - quel sera l"animal désigné par ce
numéro 333 ???
Tu vas sûrement me répondre que tu vérifie leur numéro de tatouage...
Si ce numéro est unique, comme je l'imagine, c'est donc bien celui-là
que tu DOIT utiliser comme clé primaire !
Pour faciliter les recherches et les manipulations, il existe les listes
et autres méthodes qui ne justifie pas cette double numérotation.
my2cent
Salut pgz,
"pgz"
| à 3stones : La demande de JulieH est d'utiliser comme un nom les nombres
| entre 1 et 999,
Tu as raison (en partie ;-)
J'ai lu le message d'origine (j'avais pris en cours de route...) et elle
demande bien à réutiliser un numéro libre <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.
Mais, là ou tu te trompe, c'est qu'elle parle bien de la clé primaire
qui plus est, est un numéroauto comme le dit l'objet du message !
JulieH :
Ce que tu cherche à faire n'est pas une bonne idée, du tout !!!
Tu dis:
"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."
Cela veut donc bien dire que Access attribue un numéroauto, qui se
libère lorsque l'animal est vendu, et que toi tu cherche à réutilser se
même numéro...
1) Un numéroauto est utiliser lorsque rien d'autre ne se prête à être
clé primaire !
2) Ce numéro ne doit (devrait) même pas apparaitre, puisqu'il ne sert
en principe qu'aux relations
3) Si un animal vendu portant le numéro 333 et que ce numéro est
réattribué à un autre animal - quel sera l"animal désigné par ce
numéro 333 ???
Tu vas sûrement me répondre que tu vérifie leur numéro de tatouage...
Si ce numéro est unique, comme je l'imagine, c'est donc bien celui-là
que tu DOIT utiliser comme clé primaire !
Pour faciliter les recherches et les manipulations, il existe les listes
et autres méthodes qui ne justifie pas cette double numérotation.
my2cent
Salut pgz,
"pgz"
| à 3stones : La demande de JulieH est d'utiliser comme un nom les nombres
| entre 1 et 999,
Tu as raison (en partie ;-)
J'ai lu le message d'origine (j'avais pris en cours de route...) et elle
demande bien à réutiliser un numéro libre <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.
Mais, là ou tu te trompe, c'est qu'elle parle bien de la clé primaire
qui plus est, est un numéroauto comme le dit l'objet du message !
JulieH :
Ce que tu cherche à faire n'est pas une bonne idée, du tout !!!
Tu dis:
"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."
Cela veut donc bien dire que Access attribue un numéroauto, qui se
libère lorsque l'animal est vendu, et que toi tu cherche à réutilser se
même numéro...
1) Un numéroauto est utiliser lorsque rien d'autre ne se prête à être
clé primaire !
2) Ce numéro ne doit (devrait) même pas apparaitre, puisqu'il ne sert
en principe qu'aux relations
3) Si un animal vendu portant le numéro 333 et que ce numéro est
réattribué à un autre animal - quel sera l"animal désigné par ce
numéro 333 ???
Tu vas sûrement me répondre que tu vérifie leur numéro de tatouage...
Si ce numéro est unique, comme je l'imagine, c'est donc bien celui-là
que tu DOIT utiliser comme clé primaire !
Pour faciliter les recherches et les manipulations, il existe les listes
et autres méthodes qui ne justifie pas cette double numérotation.
my2cent
Bonsoir,
Je ne m'en sort pas malgré la fonction que tu m'as proposée. J'ai fait
un petit essai en créant une table avec 4 individus et 4 numéros de
travail sans utliser des chiffres à suivre (1 - 2 - 4 - 6)
J'ai modifié la fonction de la manière suivante pour prendre en compte
mes champs (Tbl_Cheptel pour la table, NumTrav et Date_sortie pour les
deux champs de la table) :
Public fctNumTravail As Integer
Dim db As DAO.Database, rst As DAO.Recordset, i As Integer
Set db = Application.CurrentDb
Set rst = db.OpenRecordset("Tbl_Cheptel", dbOpenDynaset)
For i = 1 To 6
rst.FindFirst "NumTrav = " & i
If rst.NoMatch Then Exit For
rst.FindFirst "NumTrav = " & i & " AND Not IsNull(Date_sortie)"
If rst.NoMatch Then Exit For
Next i
rst.Close
Set rst = Nothing
Set db = Nothing
If i = 6 Then
MsgBox "Pb d’attribution du Numéro de travail : plus de 6."
i = 0
End If
fctNumTravail = i
End Function
En revanche, comme je ne suis pas sùre pour les guillements, j'ai
réalisé plusieurs essais.
J'ai crée un petit formulaire, j'ai placé une zone de texte dans
laquelle j'ai mis : =[fctNumTravail].
Le résultat est : #Nom ?
Y-a-t-il quelque chose que je n'ai pas compris ?
JulieBonjour;
à 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,
Bonsoir,
Je ne m'en sort pas malgré la fonction que tu m'as proposée. J'ai fait
un petit essai en créant une table avec 4 individus et 4 numéros de
travail sans utliser des chiffres à suivre (1 - 2 - 4 - 6)
J'ai modifié la fonction de la manière suivante pour prendre en compte
mes champs (Tbl_Cheptel pour la table, NumTrav et Date_sortie pour les
deux champs de la table) :
Public fctNumTravail As Integer
Dim db As DAO.Database, rst As DAO.Recordset, i As Integer
Set db = Application.CurrentDb
Set rst = db.OpenRecordset("Tbl_Cheptel", dbOpenDynaset)
For i = 1 To 6
rst.FindFirst "NumTrav = " & i
If rst.NoMatch Then Exit For
rst.FindFirst "NumTrav = " & i & " AND Not IsNull(Date_sortie)"
If rst.NoMatch Then Exit For
Next i
rst.Close
Set rst = Nothing
Set db = Nothing
If i = 6 Then
MsgBox "Pb d’attribution du Numéro de travail : plus de 6."
i = 0
End If
fctNumTravail = i
End Function
En revanche, comme je ne suis pas sùre pour les guillements, j'ai
réalisé plusieurs essais.
J'ai crée un petit formulaire, j'ai placé une zone de texte dans
laquelle j'ai mis : =[fctNumTravail].
Le résultat est : #Nom ?
Y-a-t-il quelque chose que je n'ai pas compris ?
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,
Bonsoir,
Je ne m'en sort pas malgré la fonction que tu m'as proposée. J'ai fait
un petit essai en créant une table avec 4 individus et 4 numéros de
travail sans utliser des chiffres à suivre (1 - 2 - 4 - 6)
J'ai modifié la fonction de la manière suivante pour prendre en compte
mes champs (Tbl_Cheptel pour la table, NumTrav et Date_sortie pour les
deux champs de la table) :
Public fctNumTravail As Integer
Dim db As DAO.Database, rst As DAO.Recordset, i As Integer
Set db = Application.CurrentDb
Set rst = db.OpenRecordset("Tbl_Cheptel", dbOpenDynaset)
For i = 1 To 6
rst.FindFirst "NumTrav = " & i
If rst.NoMatch Then Exit For
rst.FindFirst "NumTrav = " & i & " AND Not IsNull(Date_sortie)"
If rst.NoMatch Then Exit For
Next i
rst.Close
Set rst = Nothing
Set db = Nothing
If i = 6 Then
MsgBox "Pb d’attribution du Numéro de travail : plus de 6."
i = 0
End If
fctNumTravail = i
End Function
En revanche, comme je ne suis pas sùre pour les guillements, j'ai
réalisé plusieurs essais.
J'ai crée un petit formulaire, j'ai placé une zone de texte dans
laquelle j'ai mis : =[fctNumTravail].
Le résultat est : #Nom ?
Y-a-t-il quelque chose que je n'ai pas compris ?
JulieBonjour;
à 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,
Dim db As DAO.Database, rst As DAO.Recordset, i As Integer
Set db = Application.CurrentDb
Set rst = db.OpenRecordset("Tbl_Cheptel", dbOpenDynaset)
For i = 1 To 6
rst.FindFirst "NumTrav = " & i & " AND IsNull(Date_sortie)"
If rst.NoMatch Then Exit For
Next i
rst.Close
Set rst = Nothing
Set db = Nothing
If i = 6 Then
MsgBox "Pb d’attribution du Numéro de travail : plus de 6."
i = 0
End If
fctNumTravail = i
End Function
*********************
Dim db As DAO.Database, rst As DAO.Recordset, i As Integer
Set db = Application.CurrentDb
Set rst = db.OpenRecordset("Tbl_Cheptel", dbOpenDynaset)
For i = 1 To 6
rst.FindFirst "NumTrav = " & i & " AND IsNull(Date_sortie)"
If rst.NoMatch Then Exit For
Next i
rst.Close
Set rst = Nothing
Set db = Nothing
If i = 6 Then
MsgBox "Pb d’attribution du Numéro de travail : plus de 6."
i = 0
End If
fctNumTravail = i
End Function
*********************
Dim db As DAO.Database, rst As DAO.Recordset, i As Integer
Set db = Application.CurrentDb
Set rst = db.OpenRecordset("Tbl_Cheptel", dbOpenDynaset)
For i = 1 To 6
rst.FindFirst "NumTrav = " & i & " AND IsNull(Date_sortie)"
If rst.NoMatch Then Exit For
Next i
rst.Close
Set rst = Nothing
Set db = Nothing
If i = 6 Then
MsgBox "Pb d’attribution du Numéro de travail : plus de 6."
i = 0
End If
fctNumTravail = i
End Function
*********************
Normal, je t'ai donné un code non validé, donc bien sûr erronné.
Alors, au temps pour moi :
***********************
Public function fctNumTravail As IntegerDim db As DAO.Database, rst As DAO.Recordset, i As Integer
Set db = Application.CurrentDb
Set rst = db.OpenRecordset("Tbl_Cheptel", dbOpenDynaset)
For i = 1 To 6
rst.FindFirst "NumTrav = " & i & " AND IsNull(Date_sortie)"
If rst.NoMatch Then Exit For
Next i
rst.Close
Set rst = Nothing
Set db = Nothing
If i = 6 Then
MsgBox "Pb d’attribution du Numéro de travail : plus de 6."
i = 0
End If
fctNumTravail = i
End Function
*********************
J'en ai profité pour corriger une autre erreur, dans la boucle For ... Next.
Le reste devrait convenir.
Tiens moi au courant.
Normal, je t'ai donné un code non validé, donc bien sûr erronné.
Alors, au temps pour moi :
***********************
Public function fctNumTravail As Integer
Dim db As DAO.Database, rst As DAO.Recordset, i As Integer
Set db = Application.CurrentDb
Set rst = db.OpenRecordset("Tbl_Cheptel", dbOpenDynaset)
For i = 1 To 6
rst.FindFirst "NumTrav = " & i & " AND IsNull(Date_sortie)"
If rst.NoMatch Then Exit For
Next i
rst.Close
Set rst = Nothing
Set db = Nothing
If i = 6 Then
MsgBox "Pb d’attribution du Numéro de travail : plus de 6."
i = 0
End If
fctNumTravail = i
End Function
*********************
J'en ai profité pour corriger une autre erreur, dans la boucle For ... Next.
Le reste devrait convenir.
Tiens moi au courant.
Normal, je t'ai donné un code non validé, donc bien sûr erronné.
Alors, au temps pour moi :
***********************
Public function fctNumTravail As IntegerDim db As DAO.Database, rst As DAO.Recordset, i As Integer
Set db = Application.CurrentDb
Set rst = db.OpenRecordset("Tbl_Cheptel", dbOpenDynaset)
For i = 1 To 6
rst.FindFirst "NumTrav = " & i & " AND IsNull(Date_sortie)"
If rst.NoMatch Then Exit For
Next i
rst.Close
Set rst = Nothing
Set db = Nothing
If i = 6 Then
MsgBox "Pb d’attribution du Numéro de travail : plus de 6."
i = 0
End If
fctNumTravail = i
End Function
*********************
J'en ai profité pour corriger une autre erreur, dans la boucle For ... Next.
Le reste devrait convenir.
Tiens moi au courant.
Il faudrait savoir comment tu as appelé le contrôle qui contient le num de
tatouage. D'après ton dernier mesage : N°_tatouage,
mais d'après ton message précédent : numéro_de_tatouage (voir procédure
évènementielle)
Il te suffit le mettre le même partout...
A ce sujet, il est très déconseillé de metre des espaces ou des "_" dans les
noms d'objets et variable. Dans le cas présent : Numtatouage, NuméroTatouage,
N°Tatouage ou même tatouage sont bien préférables...
Aplus
Il faudrait savoir comment tu as appelé le contrôle qui contient le num de
tatouage. D'après ton dernier mesage : N°_tatouage,
mais d'après ton message précédent : numéro_de_tatouage (voir procédure
évènementielle)
Il te suffit le mettre le même partout...
A ce sujet, il est très déconseillé de metre des espaces ou des "_" dans les
noms d'objets et variable. Dans le cas présent : Numtatouage, NuméroTatouage,
N°Tatouage ou même tatouage sont bien préférables...
Aplus
Il faudrait savoir comment tu as appelé le contrôle qui contient le num de
tatouage. D'après ton dernier mesage : N°_tatouage,
mais d'après ton message précédent : numéro_de_tatouage (voir procédure
évènementielle)
Il te suffit le mettre le même partout...
A ce sujet, il est très déconseillé de metre des espaces ou des "_" dans les
noms d'objets et variable. Dans le cas présent : Numtatouage, NuméroTatouage,
N°Tatouage ou même tatouage sont bien préférables...
Aplus
la zone "Numéro de travail".
---------------------- fin de citation ---------------------------
fonctionne pas. Dans mon exemple avec numéros de 1 à 6. Tout marche bien
si un ou plusieurs numéros entre 1 et 6 manquent. En revanche, si j'ai
tous les numéros entre 1 et 6, je ne vois pas apparaître la MsgBox, il
m'inscrit toujours 7.
---------------------- fin de citation ---------------------------
la zone "Numéro de travail".
---------------------- fin de citation ---------------------------
fonctionne pas. Dans mon exemple avec numéros de 1 à 6. Tout marche bien
si un ou plusieurs numéros entre 1 et 6 manquent. En revanche, si j'ai
tous les numéros entre 1 et 6, je ne vois pas apparaître la MsgBox, il
m'inscrit toujours 7.
---------------------- fin de citation ---------------------------
la zone "Numéro de travail".
---------------------- fin de citation ---------------------------
fonctionne pas. Dans mon exemple avec numéros de 1 à 6. Tout marche bien
si un ou plusieurs numéros entre 1 et 6 manquent. En revanche, si j'ai
tous les numéros entre 1 et 6, je ne vois pas apparaître la MsgBox, il
m'inscrit toujours 7.
---------------------- fin de citation ---------------------------