OVH Cloud OVH Cloud

Enregistrement dès la saisie

11 réponses
Avatar
ccriniti
Bonjour,
Je suis dans un sous formulaire avec des textbox. Quand je modifie la valeur
de la textbox, un code vba est exécuté. Ce code effectue une requete SQL. Le
problème, c'est qu'au moment de la requete, la valeur dans la table est
toujours la vieille valeur donc access n'a pas encore enregistré ma saisie
dans la table. Comment faire pour que l'enregistremetn soit imédiat ?

10 réponses

1 2
Avatar
ccriniti
Oublié de dire : Merci d'avance ;)


Bonjour,
Je suis dans un sous formulaire avec des textbox. Quand je modifie la valeur
de la textbox, un code vba est exécuté. Ce code effectue une requete SQL. Le
problème, c'est qu'au moment de la requete, la valeur dans la table est
toujours la vieille valeur donc access n'a pas encore enregistré ma saisie
dans la table. Comment faire pour que l'enregistremetn soit imédiat ?


Avatar
Raymond [mvp]
Il te faut enregistrer les modifications faites dans ton sous-formulaire

avant de lancer ta requête, tu places la fonction:
Forms!Formprincipal![sous-formulaire].Form.Dirty = False

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"ccriniti" a écrit dans le message de
news:
Bonjour,
Je suis dans un sous formulaire avec des textbox. Quand je modifie la
valeur
de la textbox, un code vba est exécuté. Ce code effectue une requete SQL.
Le
problème, c'est qu'au moment de la requete, la valeur dans la table est
toujours la vieille valeur donc access n'a pas encore enregistré ma saisie
dans la table. Comment faire pour que l'enregistremetn soit imédiat ?


Avatar
ccriniti
ça ne change a rien, la requete prend toujours l'ancienne valeur. Si je
modifie a en b, la requete obtient toujours a. Si ensuite je modifie b en c,
j'obtiens b. La requete a toujours un cran de retard par rapport a ma saisie.


Il te faut enregistrer les modifications faites dans ton sous-formulaire

avant de lancer ta requête, tu places la fonction:
Forms!Formprincipal![sous-formulaire].Form.Dirty = False

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"ccriniti" a écrit dans le message de
news:
Bonjour,
Je suis dans un sous formulaire avec des textbox. Quand je modifie la
valeur
de la textbox, un code vba est exécuté. Ce code effectue une requete SQL.
Le
problème, c'est qu'au moment de la requete, la valeur dans la table est
toujours la vieille valeur donc access n'a pas encore enregistré ma saisie
dans la table. Comment faire pour que l'enregistremetn soit imédiat ?







Avatar
Raymond [mvp]
essaie de rajouter une fonction :
DoEvents
immédiatement après le Dirty.

fais un essai en mettant un point d'arret sur la ligne suivant le doevents
et pendant l'arrêt, va voir dans la table quelle valeur tu as.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"ccriniti" a écrit dans le message de
news:
ça ne change a rien, la requete prend toujours l'ancienne valeur. Si je
modifie a en b, la requete obtient toujours a. Si ensuite je modifie b en
c,
j'obtiens b. La requete a toujours un cran de retard par rapport a ma
saisie.


Il te faut enregistrer les modifications faites dans ton sous-formulaire

avant de lancer ta requête, tu places la fonction:
Forms!Formprincipal![sous-formulaire].Form.Dirty = False




Avatar
ccriniti
en regardant dans la table pdt et juste après le doevents il y a toujours
l'ancienne valeur, ce qui est logique puisqu'on place le doevents juste avant
la requete SQL qui donne la réponse eronnée


essaie de rajouter une fonction :
DoEvents
immédiatement après le Dirty.

fais un essai en mettant un point d'arret sur la ligne suivant le doevents
et pendant l'arrêt, va voir dans la table quelle valeur tu as.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"ccriniti" a écrit dans le message de
news:
ça ne change a rien, la requete prend toujours l'ancienne valeur. Si je
modifie a en b, la requete obtient toujours a. Si ensuite je modifie b en
c,
j'obtiens b. La requete a toujours un cran de retard par rapport a ma
saisie.


Il te faut enregistrer les modifications faites dans ton sous-formulaire

avant de lancer ta requête, tu places la fonction:
Forms!Formprincipal![sous-formulaire].Form.Dirty = False









Avatar
Raymond [mvp]
après le dirty, rajoute la fonction:
Forms!Formprincipal![sous-formulaire].Form.Refresh

si ça marche enlève le doevents.
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"ccriniti" a écrit dans le message de
news:
en regardant dans la table pdt et juste après le doevents il y a toujours
l'ancienne valeur, ce qui est logique puisqu'on place le doevents juste
avant
la requete SQL qui donne la réponse eronnée


Avatar
ccriniti
Non cela ne change rien. La valeur reste la meme.


après le dirty, rajoute la fonction:
Forms!Formprincipal![sous-formulaire].Form.Refresh

si ça marche enlève le doevents.
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"ccriniti" a écrit dans le message de
news:
en regardant dans la table pdt et juste après le doevents il y a toujours
l'ancienne valeur, ce qui est logique puisqu'on place le doevents juste
avant
la requete SQL qui donne la réponse eronnée







Avatar
Raymond [mvp]
il y a autre chose.

avec le dirty false et le refresh, tu dois avoir la nouvelle valeur
disponible.
dernière précision, rapprelle-moi sur quels événements tu as mis tes
fonctions.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"ccriniti" a écrit dans le message de
news:
Non cela ne change rien. La valeur reste la meme.



Avatar
ccriniti
sur le textbox_Dirty()

Est-ce qu'il fallait mettre ailleur ?


il y a autre chose.

avec le dirty false et le refresh, tu dois avoir la nouvelle valeur
disponible.
dernière précision, rapprelle-moi sur quels événements tu as mis tes
fonctions.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"ccriniti" a écrit dans le message de
news:
Non cela ne change rien. La valeur reste la meme.








Avatar
Raymond [mvp]
Il me semblait bien.

tu le mets sur l'évènement Form_AfterUpdate.

tu laisses la fonction dirty, refresh et doevents.
ça lui fera du bien.
regarde sur l'aide l'événement dirty, il ne se produit qu'une seule fois
lors de la 1ere modif.
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"ccriniti" a écrit dans le message de
news:
sur le textbox_Dirty()

Est-ce qu'il fallait mettre ailleur ?



1 2