OVH Cloud OVH Cloud

temporisation de mise à jour

4 réponses
Avatar
tolwin
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 ?

Mystère, en tout cas pour moi, et vous ? :)

4 réponses

Avatar
joyeux atchoum
S'lt

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
Avatar
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/
--------------------------------------

Avatar
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:)
Avatar
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/
--------------------------------------