OVH Cloud OVH Cloud

MAJ d'une combobox

1 réponse
Avatar
Jean-Marc
Salut à tous,

Dans le formulaire "produits" j'ai 2 combobox, une pour les noms de produits
et l'autre pour les nr réf produits (affiche le nr réf produit et le
nomproduit).
Il est donc ainsi possible de chercher un produit par son nom ou par son nr
réf.
Comme il s'agit du nr réf chez le fournisseur, celui-ci est susceptible de
changer.
Son contenu est :
SELECT [Produits].[RéfProduit], [Produits].[NrRéfFournisseur],
[Produits].[NomProduit] FROM Produits ORDER BY [NrRéfFournisseur];
Limiter à liste : oui
Sur absence dans liste :
Private Sub ListeNrRéfFournisseur_NotInList(NewData As String, Response As
Integer)
If MsgBox("Ce numéro de référence n'existe pas dans la base de données." &
Chr(10) & Chr(13) & "Voulez-vous introduire un nouveau numéro de référence
ou modifier celui-ci ?", vbYesNo, "Erreur de numéro de référence") = vbYes
Then
Response = acDataErrContinue
Me.ListeNrRéfFournisseur.Undo
Me.NrRéfFournisseur.Visible = True
Me.NrRéfFournisseur.SetFocus
Me.ListeNrRéfFournisseur.Visible = False
Else
Response = acDataErrContinue
Me.ListeNrRéfFournisseur.Undo
End If
End Sub

Tout cela fonctionne bien.
Il est donc possible d'introduire un nouveau NrRéfFournisseur ou de modifier
l'actuel.
Sur MAJ (du champs NrRéfFournisseur) :
Private Sub NrRéfFournisseur_AfterUpdate()
Me.ListeNrRéfFournisseur.Visible = True
Me.ListeNrRéfFournisseur.Requery
Me.ListeNrRéfFournisseur.SetFocus
Me.ListeNrRéfFournisseur = Me.ListeNomProduit
Me.NrRéfFournisseur.Visible = False
End Sub

C'est ic que ça coince.
Il affiche bien la ligne du bon produit (cfr la colonne NomProduit) mais le
NrRéfFournisseur reste vide.
Je pensais que le Requery referait le query et qu'il prendrait donc la
valeur.
Pour que la valeur soit prise en compte, je dois actuellement fermer et
rouvrir le formulaire.
Il doit exister un moyen, mais lequel ?

Merci de vos z'avis z'avisés,

Jean-Marc

1 réponse

Avatar
Jean-Marc
J'ai trouvé, pour ceux que cela intéresse :
Il faut mettre
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
au début du MAJ du champs NrRéfFournisseur pour qu'il sauvegarde les données
dans la table AVANT de faire le requery du combobox.

JM

"Jean-Marc" a écrit dans le message de
news:
Salut à tous,

Dans le formulaire "produits" j'ai 2 combobox, une pour les noms de
produits

et l'autre pour les nr réf produits (affiche le nr réf produit et le
nomproduit).
Il est donc ainsi possible de chercher un produit par son nom ou par son
nr

réf.
Comme il s'agit du nr réf chez le fournisseur, celui-ci est susceptible de
changer.
Son contenu est :
SELECT [Produits].[RéfProduit], [Produits].[NrRéfFournisseur],
[Produits].[NomProduit] FROM Produits ORDER BY [NrRéfFournisseur];
Limiter à liste : oui
Sur absence dans liste :
Private Sub ListeNrRéfFournisseur_NotInList(NewData As String, Response As
Integer)
If MsgBox("Ce numéro de référence n'existe pas dans la base de données." &
Chr(10) & Chr(13) & "Voulez-vous introduire un nouveau numéro de référence
ou modifier celui-ci ?", vbYesNo, "Erreur de numéro de référence") = vbYes
Then
Response = acDataErrContinue
Me.ListeNrRéfFournisseur.Undo
Me.NrRéfFournisseur.Visible = True
Me.NrRéfFournisseur.SetFocus
Me.ListeNrRéfFournisseur.Visible = False
Else
Response = acDataErrContinue
Me.ListeNrRéfFournisseur.Undo
End If
End Sub

Tout cela fonctionne bien.
Il est donc possible d'introduire un nouveau NrRéfFournisseur ou de
modifier

l'actuel.
Sur MAJ (du champs NrRéfFournisseur) :
Private Sub NrRéfFournisseur_AfterUpdate()
Me.ListeNrRéfFournisseur.Visible = True
Me.ListeNrRéfFournisseur.Requery
Me.ListeNrRéfFournisseur.SetFocus
Me.ListeNrRéfFournisseur = Me.ListeNomProduit
Me.NrRéfFournisseur.Visible = False
End Sub

C'est ic que ça coince.
Il affiche bien la ligne du bon produit (cfr la colonne NomProduit) mais
le

NrRéfFournisseur reste vide.
Je pensais que le Requery referait le query et qu'il prendrait donc la
valeur.
Pour que la valeur soit prise en compte, je dois actuellement fermer et
rouvrir le formulaire.
Il doit exister un moyen, mais lequel ?

Merci de vos z'avis z'avisés,

Jean-Marc