Voici la description d'un cas qui me pose problème. Je précise que je
débute dans access, la solution sera ptet évidente mais pour le moment
ca m'échappe.
J'ai un formulaire d'achat. Dans celui ci je sélectionne un client.
Jusque là rien d'extraordinaire. Sur ce client je vérifie la validité
des dates de naissance (majeur obligatoirement) et de la carte
d'identité (moins de 10 ans), et tout va bien.
Sous le nom du client j'ai un bouton pour accéder à sa fiche. Lors de
la fermeture de la fiche client, je revérifie les validités de ces
informations.
C'est là qu'est le hic :
Si le client est valide et que j'accède à sa fiche, je peux mettre une
date de naissance trop récente et une date de passeport trop ancienne.
Lors de la fermeture du formulaire, ces valeurs ne sont pas
raffraichies assez rapidement (je pense) et le test de validité est
TOUJOURS bon malgré les valeurs nouvellement faussées.
Si par contre je réaccède à sa fiche et que je sors sans ne toucher à
rien, là les valeurs incorrectes sont bien détectées.
Comment faire pour régler ce problème ?
Y a-t-il une propriété des Recordset permettant de savoir si ce
recordset est en cours d'écriture ? J'ai vu un truc ressemblant à
propos de batchs, mais pas dans mon cas.
Y a-t-il une fonction me permettant de forcer l'enregistrement des
valeurs et ne continuant le code que lorsque la mise à jour est
effectuée ?
peut etre un me.refresh avant de faire le test en quittant
lorsque tu es sur un enregistrement tant que tu ne l'a pas quitté il est toujours en mode edition donc tu ne vois pas encore les modifs
me.refresh permet de mettre à jour les champs liés à ton form
ja;)
WWWWWWWWwooooooooouuuuuuuuiiiii
3stone
Salut,
joyeux atchoum
peut etre un me.refresh avant de faire le test en quittant
lorsque tu es sur un enregistrement tant que tu ne l'a pas quitté il est toujours en mode edition donc tu ne vois pas encore les modifs
me.refresh permet de mettre à jour les champs liés à ton form
Il me semble qu'il se trouve sur un autre... formulaire et que les données ne sont pas rafraichies dans le premier...
Avant de fermer ce second formulaire, faire un :
Forms!Nom_1er_Formulaire.Requery
devrait faire ce qu'il souhaite...
-- A+ Pierre (3stone) Access MVP -------------------------------------- Une pour tous, tous pour une ;-) http://users.skynet.be/mpfa/ --------------------------------------
Salut,
joyeux atchoum
peut etre un me.refresh
avant de faire le test en quittant
lorsque tu es sur un enregistrement tant que tu ne l'a pas quitté il
est toujours en mode edition
donc tu ne vois pas encore les modifs
me.refresh permet de mettre à jour les champs liés à ton form
Il me semble qu'il se trouve sur un autre... formulaire et que les
données ne sont pas rafraichies dans le premier...
Avant de fermer ce second formulaire, faire un :
Forms!Nom_1er_Formulaire.Requery
devrait faire ce qu'il souhaite...
--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/
--------------------------------------
peut etre un me.refresh avant de faire le test en quittant
lorsque tu es sur un enregistrement tant que tu ne l'a pas quitté il est toujours en mode edition donc tu ne vois pas encore les modifs
me.refresh permet de mettre à jour les champs liés à ton form
Il me semble qu'il se trouve sur un autre... formulaire et que les données ne sont pas rafraichies dans le premier...
Avant de fermer ce second formulaire, faire un :
Forms!Nom_1er_Formulaire.Requery
devrait faire ce qu'il souhaite...
-- A+ Pierre (3stone) Access MVP -------------------------------------- Une pour tous, tous pour une ;-) http://users.skynet.be/mpfa/ --------------------------------------
joyeux atchoum
S'lt
2 fois que tu corriges mes betises va falloir que j'apprenne à meiux lire ou tourner mes doigts 7 fois avant de taper au clavier :=)
ja:)
S'lt
2 fois que tu corriges mes betises va falloir que j'apprenne à meiux
lire ou tourner mes doigts 7 fois avant de taper au clavier :=)
2 fois que tu corriges mes betises va falloir que j'apprenne à meiux lire ou tourner mes doigts 7 fois avant de taper au clavier :=)
ja:)
3stone
Salut,
tolwin
Je fais le test de validité du client lors du clic sur le bouton de validation/fermeture du formulaire Client.
Dans le second formulaire donc... (dans la fiche Client, comme tu dis dans le premier message)
Mais, tu ne dit pas, sur quoi est basé le second formulaire et comment il est lié / filtré...
Me.Refresh, ca ne passe pas. J'ai essayé en supprimant la fermeture du formulaire pour pouvoir cliquer plusieurs fois, il se passe 5 bonnes secondes avant que la fonction de test de client n'ait en lecture les nouvelles valeurs des dates de naissance et de pièce d'identité.
Tu l'applique où, le Me.Refresh dans le second formulaire ??
Mais, si c'est là que tu modifie les données, que veux tu rafaîchir ?
J'ai testé avec une recherche du client par requete, et par recordset, mais je n'ai toujours que les valeurs périmées.
?? Comprend pas... tu modifie les données et tu fait une requête ? qui devrait te ramener quoi ?
J'ai essayé avec un goto new rec plus fermeture du formulaire avant de lancer la fonction, même topo ca ne fonctionne pas.
idem... comprends pas... Demander un nouvel enregistrement alors que tu ferme le formulaire ?? ensuite, lancer la fonction ! Elle fait quoi, cette fonction ?
Il me reste la possibilité de faire une fonction qui prenne ses valeurs depuis les contrôls sur le formulaire et non pas dans la table, ca ira ptet plus vite comme ça.
Si tu fait des modifications dans le formulaire, pour ensuite vérifer dans la table... si les valeurs sont bonnes, et peut-être même... avant de sauver les modifications... normal que tu as des problèmes !
Les modifications réalisées dans un formulaire, ne sont prises en compte qu'a partir du moment ou : - tu ferme le formulaire - tu change d'enregistrement - tu sauve l'enregistrement (par appui sur un bouton, ou tout autre événement)
Mais, cela n'explique pas, pourquoi tu vas dans la table... alors que les données sont déjà dans le formulaire !
Dans le code de ton bouton de fermeture :
Me.Dirty = False Appel de ta fonction.... (?) Si ok, fermer le formulaire si non...
Et si ca fonctionne, est-ce considéré comme de l'Access "orthodoxe" ?
Toutes les religions que l'on veut "transmettre", me donne la chair de poules! Je ne m'avancerais donc pas ;-)
Mais, il me semble, que tu fait de grands détours, au sens Access ;-)))
-- A+ Pierre (3stone) Access MVP -------------------------------------- Une pour tous, tous pour une ;-) http://users.skynet.be/mpfa/ --------------------------------------
Salut,
tolwin <tolwin@caramail.com>
Je fais le test de validité du client lors du clic sur le bouton de
validation/fermeture du formulaire Client.
Dans le second formulaire donc... (dans la fiche Client, comme tu dis dans le premier message)
Mais, tu ne dit pas, sur quoi est basé le second formulaire et comment il est lié / filtré...
Me.Refresh, ca ne passe pas. J'ai essayé en supprimant la fermeture du
formulaire pour pouvoir cliquer plusieurs fois, il se passe 5 bonnes
secondes avant que la fonction de test de client n'ait en lecture les
nouvelles valeurs des dates de naissance et de pièce d'identité.
Tu l'applique où, le Me.Refresh dans le second formulaire ??
Mais, si c'est là que tu modifie les données, que veux tu rafaîchir ?
J'ai
testé avec une recherche du client par requete, et par recordset, mais
je n'ai toujours que les valeurs périmées.
?? Comprend pas...
tu modifie les données et tu fait une requête ? qui devrait te ramener quoi ?
J'ai essayé avec un goto new rec plus fermeture du formulaire avant de
lancer la fonction, même topo ca ne fonctionne pas.
idem... comprends pas...
Demander un nouvel enregistrement alors que tu ferme le formulaire ??
ensuite, lancer la fonction ! Elle fait quoi, cette fonction ?
Il me reste la possibilité de faire une fonction qui prenne ses
valeurs depuis les contrôls sur le formulaire et non pas dans la
table, ca ira ptet plus vite comme ça.
Si tu fait des modifications dans le formulaire, pour ensuite vérifer dans
la table... si les valeurs sont bonnes, et peut-être même... avant de sauver
les modifications... normal que tu as des problèmes !
Les modifications réalisées dans un formulaire, ne sont prises en compte
qu'a partir du moment ou :
- tu ferme le formulaire
- tu change d'enregistrement
- tu sauve l'enregistrement (par appui sur un bouton, ou tout autre événement)
Mais, cela n'explique pas, pourquoi tu vas dans la table... alors que les données
sont déjà dans le formulaire !
Dans le code de ton bouton de fermeture :
Me.Dirty = False
Appel de ta fonction.... (?)
Si ok, fermer le formulaire
si non...
Et si ca fonctionne, est-ce considéré comme de l'Access "orthodoxe" ?
Toutes les religions que l'on veut "transmettre", me donne la chair de poules!
Je ne m'avancerais donc pas ;-)
Mais, il me semble, que tu fait de grands détours, au sens Access ;-)))
--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/
--------------------------------------
Je fais le test de validité du client lors du clic sur le bouton de validation/fermeture du formulaire Client.
Dans le second formulaire donc... (dans la fiche Client, comme tu dis dans le premier message)
Mais, tu ne dit pas, sur quoi est basé le second formulaire et comment il est lié / filtré...
Me.Refresh, ca ne passe pas. J'ai essayé en supprimant la fermeture du formulaire pour pouvoir cliquer plusieurs fois, il se passe 5 bonnes secondes avant que la fonction de test de client n'ait en lecture les nouvelles valeurs des dates de naissance et de pièce d'identité.
Tu l'applique où, le Me.Refresh dans le second formulaire ??
Mais, si c'est là que tu modifie les données, que veux tu rafaîchir ?
J'ai testé avec une recherche du client par requete, et par recordset, mais je n'ai toujours que les valeurs périmées.
?? Comprend pas... tu modifie les données et tu fait une requête ? qui devrait te ramener quoi ?
J'ai essayé avec un goto new rec plus fermeture du formulaire avant de lancer la fonction, même topo ca ne fonctionne pas.
idem... comprends pas... Demander un nouvel enregistrement alors que tu ferme le formulaire ?? ensuite, lancer la fonction ! Elle fait quoi, cette fonction ?
Il me reste la possibilité de faire une fonction qui prenne ses valeurs depuis les contrôls sur le formulaire et non pas dans la table, ca ira ptet plus vite comme ça.
Si tu fait des modifications dans le formulaire, pour ensuite vérifer dans la table... si les valeurs sont bonnes, et peut-être même... avant de sauver les modifications... normal que tu as des problèmes !
Les modifications réalisées dans un formulaire, ne sont prises en compte qu'a partir du moment ou : - tu ferme le formulaire - tu change d'enregistrement - tu sauve l'enregistrement (par appui sur un bouton, ou tout autre événement)
Mais, cela n'explique pas, pourquoi tu vas dans la table... alors que les données sont déjà dans le formulaire !
Dans le code de ton bouton de fermeture :
Me.Dirty = False Appel de ta fonction.... (?) Si ok, fermer le formulaire si non...
Et si ca fonctionne, est-ce considéré comme de l'Access "orthodoxe" ?
Toutes les religions que l'on veut "transmettre", me donne la chair de poules! Je ne m'avancerais donc pas ;-)
Mais, il me semble, que tu fait de grands détours, au sens Access ;-)))
-- A+ Pierre (3stone) Access MVP -------------------------------------- Une pour tous, tous pour une ;-) http://users.skynet.be/mpfa/ --------------------------------------