OVH Cloud OVH Cloud

Access2000 - rafraîchissement des sous-formulaires

12 réponses
Avatar
Philou
Bonjour à tous,

Dans un formulaire, j'ai intégré une liste déroulante (contrôle indépendant
contenant juste SELECT [Fournisseurs].[Fournisseur] FROM Fournisseurs; ) où
Fournisseurs est une table ne contenant qu'un champ unique.
Je peux ainsi choisir un fournisseur et 2 sous-formulaires se mettent à
jour.
Jusque là, tout va bien.

Où ça se complique, c'est avec "NotInList".
J'utilise le procédé trouvé ici
http://www.self-access.com/access/index.php?url=%2Faccess%2Fgrenier

Mon nouveau nom entre bien dans ma table, mais ne s'affiche pas dans ma
liste déroulante.
En outre, mes 2 sous-formulaires pointent alors sur les données
correspondant au 1er fournisseur de la liste.

Qu'est-ce que j'ai oublié pour que mon formulaire et ses 2 sous-formulaires
correspondent au nouveau fournisseur, c'est-à-dire vide sauf la liste
déroulante ?

Merci d'avance pour votre aide.

Philou.

10 réponses

1 2
Avatar
Gafish
"Philou" a écrit dans le message de news:
e%
Bonjour à tous,


Bonjour,

Mon nouveau nom entre bien dans ma table, mais ne s'affiche pas dans ma
liste déroulante.
En outre, mes 2 sous-formulaires pointent alors sur les données
correspondant au 1er fournisseur de la liste.


Essaie peut être de rafraîchir ta liste en mettant à la suite du code pour
ajouter l'élément un :
me.NomDeTeListe.Requery


--
Charte du forum : http://users.skynet.be/mpfa/
Recherche dans les archives :
http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
JMH
Salut
Si tu n'as rien dans ta liste déroulante, tu dois faire un
me.MaListeDeroulante.requery
Et là il va être intégré

"Philou" a écrit dans le message de news:
e%
Bonjour à tous,

Dans un formulaire, j'ai intégré une liste déroulante (contrôle
indépendant contenant juste SELECT [Fournisseurs].[Fournisseur] FROM
Fournisseurs; ) où Fournisseurs est une table ne contenant qu'un champ
unique.
Je peux ainsi choisir un fournisseur et 2 sous-formulaires se mettent à
jour.
Jusque là, tout va bien.

Où ça se complique, c'est avec "NotInList".
J'utilise le procédé trouvé ici
http://www.self-access.com/access/index.php?url=%2Faccess%2Fgrenier

Mon nouveau nom entre bien dans ma table, mais ne s'affiche pas dans ma
liste déroulante.
En outre, mes 2 sous-formulaires pointent alors sur les données
correspondant au 1er fournisseur de la liste.

Qu'est-ce que j'ai oublié pour que mon formulaire et ses 2
sous-formulaires correspondent au nouveau fournisseur, c'est-à-dire vide
sauf la liste déroulante ?

Merci d'avance pour votre aide.

Philou.



Avatar
Philou
[Réponse valable également pour JMH]
Merci à tous les 2
Cette formule ne fonctionne pas.
Après saisie d'un nom inexistant dans ma liste déroulante, j'ai bien le
message me demandant si je veux l'ajouter.
Une fois accepté, ma fenêtre VBA s'ouvre sur la ligne .requery.
Je ferme la fenêtre VBA et j'ai une fenêtre d'insulte me disant que je dois
choisir une donnée contenue dans ma liste.
Celle-ci contient alors tous mes fournisseurs, sauf celui que je tente
d'ajouter.
Je dois fermer et réouvrir mon formulaire pour voir mon nouveau fournisseur.
J'espère que ce presque pas-à-pas va permettre à quelqu'un de m'aiguiller
vers la bonne correction.

Merci d'avance.

"Gafish" a écrit dans le message de news:


Essaie peut être de rafraîchir ta liste en mettant à la suite du code pour
ajouter l'élément un :
me.NomDeTeListe.Requery


Avatar
Philou
///Risque de doublon : ma précédente réponse semblant perdue.

[Réponse valable également pour JMH]
Merci à tous les 2
Cette formule ne fonctionne pas.
Après saisie d'un nom inexistant dans ma liste déroulante, j'ai bien le
message me demandant si je veux l'ajouter.
Une fois accepté, ma fenêtre VBA s'ouvre sur la ligne .requery.
Je ferme la fenêtre VBA et j'ai une fenêtre d'insulte me disant que je dois
choisir une donnée contenue dans ma liste.
Celle-ci contient alors tous mes fournisseurs, sauf celui que je tente
d'ajouter.
Je dois fermer et réouvrir mon formulaire pour voir mon nouveau fournisseur.
J'espère que ce presque pas-à-pas va permettre à quelqu'un de m'aiguiller
vers la bonne correction.

Merci d'avance.

"Gafish" a écrit dans le message de news:


Essaie peut être de rafraîchir ta liste en mettant à la suite du code pour
ajouter l'élément un :
me.NomDeTeListe.Requery


Avatar
JMH
Salut
Bon je ne vois pas ton code, mais
Si tu as fais comme dans le site où c'est expliqué, tu rajoutes
sur l'événement AfterUpdate de TaListe tu fais
me.MaListe.Requery

et là tu auras avancé d'une case....



"Philou" a écrit dans le message de news:

///Risque de doublon : ma précédente réponse semblant perdue.

[Réponse valable également pour JMH]
Merci à tous les 2
Cette formule ne fonctionne pas.
Après saisie d'un nom inexistant dans ma liste déroulante, j'ai bien le
message me demandant si je veux l'ajouter.
Une fois accepté, ma fenêtre VBA s'ouvre sur la ligne .requery.
Je ferme la fenêtre VBA et j'ai une fenêtre d'insulte me disant que je
dois
choisir une donnée contenue dans ma liste.
Celle-ci contient alors tous mes fournisseurs, sauf celui que je tente
d'ajouter.
Je dois fermer et réouvrir mon formulaire pour voir mon nouveau
fournisseur.
J'espère que ce presque pas-à-pas va permettre à quelqu'un de m'aiguiller
vers la bonne correction.

Merci d'avance.

"Gafish" a écrit dans le message de news:


Essaie peut être de rafraîchir ta liste en mettant à la suite du code
pour ajouter l'élément un :
me.NomDeTeListe.Requery






Avatar
Philou
"JMH" a écrit dans le message de news:

...
sur l'événement AfterUpdate de TaListe tu fais
me.MaListe.Requery


Bonjour et merci pour ton attention

Avec cette manipulation, j'ai bien le nouveau nom dans ma liste, mais le
choisir me renvoie les données du premier nom de la liste.
Je n'ai au moins plus de message d'erreur.

Ci-après mon code expurgé :

Private Sub Form_AfterUpdate()
Me.Requery
End Sub

Private Sub FournisseurRecherché_AfterUpdate()
Me!FournisseurRecherché.Requery
' Rechercher l'enregistrement correspondant au contrôle.
Dim rs As Object
Set rs = Me.Recordset.Clone
rs.FindFirst "[Fournisseur] = '" & Me![FournisseurRecherché] & "'"
Me.Bookmark = rs.Bookmark
Me!TAF_Étiquette.Caption = UCase(Me![Fournisseur])
Me!FournisseurRecherché = Null
End Sub

Private Sub FournisseurRecherché_NotInList(NewData As String, Response As
Integer)
'http://www.self-access.com/access/index.php?url=%2Faccess%2Fgrenier
Dim rst As DAO.Recordset
If MsgBox("L'élément [" & _
NewData & "] ne figure pas dans la liste. Voulez-vous l'ajouter ?", _
vbQuestion + vbYesNo) = vbYes Then
Set rst = CurrentDb.OpenRecordset("Fournisseurs")
rst.AddNew
rst!Fournisseur = NewData
rst.Update
rst.Close
Set rst = Nothing
End If
Response = acDataErrAdded
End Sub

Avatar
JMH
Re
Ta ligne Me!FournisseurRecherché.Requery doit être
Me.FournisseurRecherché.Requery et dans d'autre ligne tu as la même chose
avec Me!.

Difficile à te dire ce qui va pas par rapport à ce que je vois.

Soit tu debug ta routine pour voir si le champ "FournisseurRecherché"
contient quelque chose, sinon tu mets un Msgbox "FournisseurRecherché"
Bon courage




"Philou" a écrit dans le message de news:

"JMH" a écrit dans le message de news:

...
sur l'événement AfterUpdate de TaListe tu fais
me.MaListe.Requery


Bonjour et merci pour ton attention

Avec cette manipulation, j'ai bien le nouveau nom dans ma liste, mais le
choisir me renvoie les données du premier nom de la liste.
Je n'ai au moins plus de message d'erreur.

Ci-après mon code expurgé :

Private Sub Form_AfterUpdate()
Me.Requery
End Sub

Private Sub FournisseurRecherché_AfterUpdate()
Me!FournisseurRecherché.Requery

' Rechercher l'enregistrement correspondant au contrôle.
Dim rs As Object
Set rs = Me.Recordset.Clone
rs.FindFirst "[Fournisseur] = '" & Me![FournisseurRecherché] & "'"
Me.Bookmark = rs.Bookmark
Me!TAF_Étiquette.Caption = UCase(Me![Fournisseur])
Me!FournisseurRecherché = Null
End Sub

Private Sub FournisseurRecherché_NotInList(NewData As String, Response As
Integer)
'http://www.self-access.com/access/index.php?url=%2Faccess%2Fgrenier
Dim rst As DAO.Recordset
If MsgBox("L'élément [" & _
NewData & "] ne figure pas dans la liste. Voulez-vous l'ajouter ?", _
vbQuestion + vbYesNo) = vbYes Then
Set rst = CurrentDb.OpenRecordset("Fournisseurs")
rst.AddNew
rst!Fournisseur = NewData
rst.Update
rst.Close
Set rst = Nothing
End If
Response = acDataErrAdded
End Sub




Avatar
Philou
"JMH" a écrit dans le message de news:
%
Re
Ta ligne Me!FournisseurRecherché.Requery doit être
Me.FournisseurRecherché.Requery et dans d'autre ligne tu as la même chose
avec Me!.
... sinon tu mets un Msgbox "FournisseurRecherché"


J'ai corrigé tous mes Me! en Me.
Mais ça ne change rien.
Lorsque je crée un nouveau fournisseur, il s'inscrit dans la table
Fournisseurs dès que je valide le MsgBox.
J'ai intégré à ma routine la ligne :
MaBoîte = MsgBox([NewData], vbOKOnly, [Fournisseur])
Le résultat est correct pour [NewData], mais [Fournisseur] renvoit le nom du
fournisseur affiché lorsque je tente d'en créer un. L'appui sur le bouton OK
passe au fournisseur F+1
Par ailleurs, j'ai dans Private Sub Form_Current()
les lignes :
nbre = Me.FournisseurRecherché.ListCount
If nbre > 30 Then nbre = 20
Me.FournisseurRecherché.ListRows = nbre
ce qui me permet d'avoir un maximum raisonnable de nom dans la liste.
Cette liste s'incrémente bien lorsque j'ajoute un nouveau fournisseur,
c'est-à-dire que j'ai bien mon nouveau nom à sa place (tri alpha) en plus
des autres noms.
Mais le compteur d'enregistrement en bas de mon formulaire reste impassible.
Et l'appel du nouveau nom reste inopérant.
J'ai noté également que, si je clique sur le bouton >* du compteur, je passe
bien sur mon nouveau fournisseur.
Mais dès que j'en change, le compteur revient à sa position initiale.
D'ailleurs, si j'entre une donnée dans un des sous-formulaires en regard du
nouveau fournisseur, cette donnée s'inscrit dans la table ad-hoc, mais sans
référence au dit fournisseur. :-(

Est-ce que ça peut t'aider ... à m'aider ?

Avatar
JMH
Lis ta bal


"Philou" a écrit dans le message de news:


"JMH" a écrit dans le message de news:
%
Re
Ta ligne Me!FournisseurRecherché.Requery doit être
Me.FournisseurRecherché.Requery et dans d'autre ligne tu as la même chose
avec Me!.
... sinon tu mets un Msgbox "FournisseurRecherché"


J'ai corrigé tous mes Me! en Me.
Mais ça ne change rien.
Lorsque je crée un nouveau fournisseur, il s'inscrit dans la table
Fournisseurs dès que je valide le MsgBox.
J'ai intégré à ma routine la ligne :
MaBoîte = MsgBox([NewData], vbOKOnly, [Fournisseur])
Le résultat est correct pour [NewData], mais [Fournisseur] renvoit le nom
du fournisseur affiché lorsque je tente d'en créer un. L'appui sur le
bouton OK passe au fournisseur F+1
Par ailleurs, j'ai dans Private Sub Form_Current()
les lignes :
nbre = Me.FournisseurRecherché.ListCount
If nbre > 30 Then nbre = 20
Me.FournisseurRecherché.ListRows = nbre
ce qui me permet d'avoir un maximum raisonnable de nom dans la liste.
Cette liste s'incrémente bien lorsque j'ajoute un nouveau fournisseur,
c'est-à-dire que j'ai bien mon nouveau nom à sa place (tri alpha) en plus
des autres noms.
Mais le compteur d'enregistrement en bas de mon formulaire reste
impassible.
Et l'appel du nouveau nom reste inopérant.
J'ai noté également que, si je clique sur le bouton >* du compteur, je
passe bien sur mon nouveau fournisseur.
Mais dès que j'en change, le compteur revient à sa position initiale.
D'ailleurs, si j'entre une donnée dans un des sous-formulaires en regard
du nouveau fournisseur, cette donnée s'inscrit dans la table ad-hoc, mais
sans référence au dit fournisseur. :-(

Est-ce que ça peut t'aider ... à m'aider ?






Avatar
Philou
Je suis désolé mais c'est une fausse bal :-(
Comme la tienne d'ailleurs.
Je te saurai gré de bien vouloir reposter ici :
http://cerbermail.com/?BiqhDZubQI

Merci d'avance et désolé pour cette confusion.
Je pensais que le jeu de mots était suffisant :-(

"JMH" a écrit dans le message de news:
%
Lis ta bal


"Philou" a écrit dans le message de news:



Je suis désolé mais c'est une fausse bal :-( Enfin, j'espère qu'elle
n'existe pas :-)))
Comme la tienne d'ailleurs.
Je te saurai gré de bien vouloir reposter ici :
http://cerbermail.com/?BiqhDZubQI

Merci d'avance et désolé pour cette confusion.
Je pensais que le jeu de mots était suffisant :-(

1 2