OVH Cloud OVH Cloud

Comment écrire ce bout de procédure avec access

4 réponses
Avatar
gogo
Je n'est jamais fait de code avant. Excusez-moi pour tout ce détail mais si
je veux une réponse complète ....
Je fait une petite gestion d' inventaire pour les clés de mon école. J'ai un
formulaire qui doit assigner des clés aux nouveaux employés.
Mon formulaire ce base sur la table suivante.
Employé.Idpers
EMployé.Nom
Sous-formulaire
Assignation.idpers
Assignation.typeClé
Assignation.NoClé

J'ai une autre table pour la description des TypeClé
TypeClé.TypeCLé
TypeClé.Description
TypeClé.quantité

dans le sous-formulaire en mode ajout (*), je tape le Type de clé a assigner
à l'empoyé et quand je DOUBLECLIC sur le NoClé j'aimerais que la procédure
suivante génère le prochaine numéro de clé libre dans la table Assigation.

Private Sub NoClé_DblClick(Cancel As Integer)
Dim cpt As Integer
cpt = 1
If IsNull(Assignation_TypeClé) Then
MsgBox "Inscrire un type de clé."
Else
'ici ca marche pas. je dois me positionner dans la table Assignation au
début du type de clé demandé
select * from assignation where typeclé=assignation_typeClé ORDER BY
typeclé
'ensuite je dois trouver le prochain numéro de clé de libre dans la table
assignation
While (assignation.typeclé = Assignation_TypeClé And cpt =
assignation.NoClé)
cpt = cpt + 1
Wend
If cpt <= Typeclé_quantité Then
' je dois afficher le numéro trouvé (cpt) dans le formulaire
Assignation_NoClé = cpt
Else
MsgBox "Il n'y a plus de clé de disponible"

End If
End If
End Sub

J'espère etre comprise. J'aimerais savoir comment faire en détail.

merci infiniment. Je trouve extra tout ce bénévolat pour la communauté.
marthe

4 réponses

Avatar
ze_titi
Bonjour,

je pense qu'il y a moyen de faire plus simple...
Si tes numéros de clé se suivent, on peut faire de la façon suivante:
....
if isnull(Assignation_TypeClé) then
msgbox "Inscrire un type de clé."
else
cpt=dmax("NoClé","Assignation","Typeclé=" & Assignation_typeclé)+1
if cpt>typeclé_quantité then
msgbox "Plus de clé disponible"
else
assignation_noclé=cpt
end if
end if
end sub

--
Cordialement,

ze_titi

Mail perso: http://www.cerbermail.com/?sj4KuQC4GQ




Je n'est jamais fait de code avant. Excusez-moi pour tout ce détail mais si
je veux une réponse complète ....
Je fait une petite gestion d' inventaire pour les clés de mon école. J'ai un
formulaire qui doit assigner des clés aux nouveaux employés.
Mon formulaire ce base sur la table suivante.
Employé.Idpers
EMployé.Nom
Sous-formulaire
Assignation.idpers
Assignation.typeClé
Assignation.NoClé

J'ai une autre table pour la description des TypeClé
TypeClé.TypeCLé
TypeClé.Description
TypeClé.quantité

dans le sous-formulaire en mode ajout (*), je tape le Type de clé a assigner
à l'empoyé et quand je DOUBLECLIC sur le NoClé j'aimerais que la procédure
suivante génère le prochaine numéro de clé libre dans la table Assigation.

Private Sub NoClé_DblClick(Cancel As Integer)
Dim cpt As Integer
cpt = 1
If IsNull(Assignation_TypeClé) Then
MsgBox "Inscrire un type de clé."
Else
'ici ca marche pas. je dois me positionner dans la table Assignation au
début du type de clé demandé
select * from assignation where typeclé=assignation_typeClé ORDER BY
typeclé
'ensuite je dois trouver le prochain numéro de clé de libre dans la table
assignation
While (assignation.typeclé = Assignation_TypeClé And cpt =
assignation.NoClé)
cpt = cpt + 1
Wend
If cpt <= Typeclé_quantité Then
' je dois afficher le numéro trouvé (cpt) dans le formulaire
Assignation_NoClé = cpt
Else
MsgBox "Il n'y a plus de clé de disponible"

End If
End If
End Sub

J'espère etre comprise. J'aimerais savoir comment faire en détail.

merci infiniment. Je trouve extra tout ce bénévolat pour la communauté.
marthe


Avatar
gogo
Désolé, mais les numéros de clés ne se suivent pas. Lorsqu'un employé
quitte, il remet ces clés, donc la clé MK-02 est disponible pour remettre à
quelqu'un d'autre alors que toutes les autres clés peuvent être déjà
assignées. De plus ma table assignation est trié par défaut par
IdPers+TypeClé. Pour trouver une clé disponible, il faut trier ORDER BY
typeCle, NoClé

Donc, il faut me dire comment écrire le bout de procédure ci-haut mentionné.

Est-ce que ça se fait avec access 2003, si oui aidez-moi svp?
marthe



Bonjour,

je pense qu'il y a moyen de faire plus simple...
Si tes numéros de clé se suivent, on peut faire de la façon suivante:
....
if isnull(Assignation_TypeClé) then
msgbox "Inscrire un type de clé."
else
cpt=dmax("NoClé","Assignation","Typeclé=" & Assignation_typeclé)+1
if cpt>typeclé_quantité then
msgbox "Plus de clé disponible"
else
assignation_noclé=cpt
end if
end if
end sub

--
Cordialement,

ze_titi

Mail perso: http://www.cerbermail.com/?sj4KuQC4GQ




Je n'est jamais fait de code avant. Excusez-moi pour tout ce détail mais si
je veux une réponse complète ....
Je fait une petite gestion d' inventaire pour les clés de mon école. J'ai un
formulaire qui doit assigner des clés aux nouveaux employés.
Mon formulaire ce base sur la table suivante.
Employé.Idpers
EMployé.Nom
Sous-formulaire
Assignation.idpers
Assignation.typeClé
Assignation.NoClé

J'ai une autre table pour la description des TypeClé
TypeClé.TypeCLé
TypeClé.Description
TypeClé.quantité

dans le sous-formulaire en mode ajout (*), je tape le Type de clé a assigner
à l'empoyé et quand je DOUBLECLIC sur le NoClé j'aimerais que la procédure
suivante génère le prochaine numéro de clé libre dans la table Assigation.

Private Sub NoClé_DblClick(Cancel As Integer)
Dim cpt As Integer
cpt = 1
If IsNull(Assignation_TypeClé) Then
MsgBox "Inscrire un type de clé."
Else
'ici ca marche pas. je dois me positionner dans la table Assignation au
début du type de clé demandé
select * from assignation where typeclé=assignation_typeClé ORDER BY
typeclé
'ensuite je dois trouver le prochain numéro de clé de libre dans la table
assignation
While (assignation.typeclé = Assignation_TypeClé And cpt =
assignation.NoClé)
cpt = cpt + 1
Wend
If cpt <= Typeclé_quantité Then
' je dois afficher le numéro trouvé (cpt) dans le formulaire
Assignation_NoClé = cpt
Else
MsgBox "Il n'y a plus de clé de disponible"

End If
End If
End Sub

J'espère etre comprise. J'aimerais savoir comment faire en détail.

merci infiniment. Je trouve extra tout ce bénévolat pour la communauté.
marthe




Avatar
ze_titi
Alors on va changer de stratégie...

Private Sub NoClé_DblClick(Cancel As Integer)
Dim cpt As Integer
cpt = 1
If IsNull(Assignation_TypeClé) Then
MsgBox "Inscrire un type de clé."
Else
dim rs as recordset
set rs=currentdb.opendynaset("select * from assignation where
typeclé=assignation_typeClé ORDER BY typeclé",dbOpenDynaset)
rs.movelast
rs.movefirst
'ensuite je dois trouver le prochain numéro de clé de libre dans la table
assignation
While not rs.EOF and (rs![assignation.typeclé] = Assignation_TypeClé
And cpt =
rs![assignation.NoClé])
cpt = cpt + 1
rs.movenext
Wend
rs.close
If cpt <= Typeclé_quantité Then
' je dois afficher le numéro trouvé (cpt) dans le formulaire
Assignation_NoClé = cpt
Else
MsgBox "Il n'y a plus de clé de disponible"
End If
End If
set rs=nothing
End Sub

--
Cordialement,

ze_titi

Mail perso: http://www.cerbermail.com/?sj4KuQC4GQ




Désolé, mais les numéros de clés ne se suivent pas. Lorsqu'un employé
quitte, il remet ces clés, donc la clé MK-02 est disponible pour remettre à
quelqu'un d'autre alors que toutes les autres clés peuvent être déjà
assignées. De plus ma table assignation est trié par défaut par
IdPers+TypeClé. Pour trouver une clé disponible, il faut trier ORDER BY
typeCle, NoClé

Donc, il faut me dire comment écrire le bout de procédure ci-haut mentionné.

Est-ce que ça se fait avec access 2003, si oui aidez-moi svp?
marthe



Bonjour,

je pense qu'il y a moyen de faire plus simple...
Si tes numéros de clé se suivent, on peut faire de la façon suivante:
....
if isnull(Assignation_TypeClé) then
msgbox "Inscrire un type de clé."
else
cpt=dmax("NoClé","Assignation","Typeclé=" & Assignation_typeclé)+1
if cpt>typeclé_quantité then
msgbox "Plus de clé disponible"
else
assignation_noclé=cpt
end if
end if
end sub

--
Cordialement,

ze_titi

Mail perso: http://www.cerbermail.com/?sj4KuQC4GQ




Je n'est jamais fait de code avant. Excusez-moi pour tout ce détail mais si
je veux une réponse complète ....
Je fait une petite gestion d' inventaire pour les clés de mon école. J'ai un
formulaire qui doit assigner des clés aux nouveaux employés.
Mon formulaire ce base sur la table suivante.
Employé.Idpers
EMployé.Nom
Sous-formulaire
Assignation.idpers
Assignation.typeClé
Assignation.NoClé

J'ai une autre table pour la description des TypeClé
TypeClé.TypeCLé
TypeClé.Description
TypeClé.quantité

dans le sous-formulaire en mode ajout (*), je tape le Type de clé a assigner
à l'empoyé et quand je DOUBLECLIC sur le NoClé j'aimerais que la procédure
suivante génère le prochaine numéro de clé libre dans la table Assigation.

Private Sub NoClé_DblClick(Cancel As Integer)
Dim cpt As Integer
cpt = 1
If IsNull(Assignation_TypeClé) Then
MsgBox "Inscrire un type de clé."
Else
'ici ca marche pas. je dois me positionner dans la table Assignation au
début du type de clé demandé
select * from assignation where typeclé=assignation_typeClé ORDER BY
typeclé
'ensuite je dois trouver le prochain numéro de clé de libre dans la table
assignation
While (assignation.typeclé = Assignation_TypeClé And cpt =
assignation.NoClé)
cpt = cpt + 1
Wend
If cpt <= Typeclé_quantité Then
' je dois afficher le numéro trouvé (cpt) dans le formulaire
Assignation_NoClé = cpt
Else
MsgBox "Il n'y a plus de clé de disponible"

End If
End If
End Sub

J'espère etre comprise. J'aimerais savoir comment faire en détail.

merci infiniment. Je trouve extra tout ce bénévolat pour la communauté.
marthe






Avatar
gogo
Finalement je constate que j'ai encore des "croutes à manger" pour être
bonne, J'ai trouvé un livre extra "Microsoft Office Access 2003" de
l'éditeur Micro Application. isbn:2-7429-3175-9. Tout y est. Si vous avez
accés à ce livre, vous pouver le suggérer au débutant comme moi.

merci pour tout.


Alors on va changer de stratégie...

Private Sub NoClé_DblClick(Cancel As Integer)
Dim cpt As Integer
cpt = 1
If IsNull(Assignation_TypeClé) Then
MsgBox "Inscrire un type de clé."
Else
dim rs as recordset
set rs=currentdb.opendynaset("select * from assignation where
typeclé=assignation_typeClé ORDER BY typeclé",dbOpenDynaset)
rs.movelast
rs.movefirst
'ensuite je dois trouver le prochain numéro de clé de libre dans la table
assignation
While not rs.EOF and (rs![assignation.typeclé] = Assignation_TypeClé
And cpt =
rs![assignation.NoClé])
cpt = cpt + 1
rs.movenext
Wend
rs.close
If cpt <= Typeclé_quantité Then
' je dois afficher le numéro trouvé (cpt) dans le formulaire
Assignation_NoClé = cpt
Else
MsgBox "Il n'y a plus de clé de disponible"
End If
End If
set rs=nothing
End Sub

--
Cordialement,

ze_titi

Mail perso: http://www.cerbermail.com/?sj4KuQC4GQ




Désolé, mais les numéros de clés ne se suivent pas. Lorsqu'un employé
quitte, il remet ces clés, donc la clé MK-02 est disponible pour remettre à
quelqu'un d'autre alors que toutes les autres clés peuvent être déjà
assignées. De plus ma table assignation est trié par défaut par
IdPers+TypeClé. Pour trouver une clé disponible, il faut trier ORDER BY
typeCle, NoClé

Donc, il faut me dire comment écrire le bout de procédure ci-haut mentionné.

Est-ce que ça se fait avec access 2003, si oui aidez-moi svp?
marthe



Bonjour,

je pense qu'il y a moyen de faire plus simple...
Si tes numéros de clé se suivent, on peut faire de la façon suivante:
....
if isnull(Assignation_TypeClé) then
msgbox "Inscrire un type de clé."
else
cpt=dmax("NoClé","Assignation","Typeclé=" & Assignation_typeclé)+1
if cpt>typeclé_quantité then
msgbox "Plus de clé disponible"
else
assignation_noclé=cpt
end if
end if
end sub

--
Cordialement,

ze_titi

Mail perso: http://www.cerbermail.com/?sj4KuQC4GQ




Je n'est jamais fait de code avant. Excusez-moi pour tout ce détail mais si
je veux une réponse complète ....
Je fait une petite gestion d' inventaire pour les clés de mon école. J'ai un
formulaire qui doit assigner des clés aux nouveaux employés.
Mon formulaire ce base sur la table suivante.
Employé.Idpers
EMployé.Nom
Sous-formulaire
Assignation.idpers
Assignation.typeClé
Assignation.NoClé

J'ai une autre table pour la description des TypeClé
TypeClé.TypeCLé
TypeClé.Description
TypeClé.quantité

dans le sous-formulaire en mode ajout (*), je tape le Type de clé a assigner
à l'empoyé et quand je DOUBLECLIC sur le NoClé j'aimerais que la procédure
suivante génère le prochaine numéro de clé libre dans la table Assigation.

Private Sub NoClé_DblClick(Cancel As Integer)
Dim cpt As Integer
cpt = 1
If IsNull(Assignation_TypeClé) Then
MsgBox "Inscrire un type de clé."
Else
'ici ca marche pas. je dois me positionner dans la table Assignation au
début du type de clé demandé
select * from assignation where typeclé=assignation_typeClé ORDER BY
typeclé
'ensuite je dois trouver le prochain numéro de clé de libre dans la table
assignation
While (assignation.typeclé = Assignation_TypeClé And cpt =
assignation.NoClé)
cpt = cpt + 1
Wend
If cpt <= Typeclé_quantité Then
' je dois afficher le numéro trouvé (cpt) dans le formulaire
Assignation_NoClé = cpt
Else
MsgBox "Il n'y a plus de clé de disponible"

End If
End If
End Sub

J'espère etre comprise. J'aimerais savoir comment faire en détail.

merci infiniment. Je trouve extra tout ce bénévolat pour la communauté.
marthe