Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/01/2011, 18h30   #1
Membre régulier
 
Inscription : janvier 2011
Messages : 307
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 307
Points : 76
Points : 76
Par défaut Pb Expression injectée dans champ après suppression d'un registre

Bonjour à tous,

Je veux qu'une valeur spécifique "Payée" ou " Générée" soit injectée dans mon formulaire "Devis et Facture" dans le champ "EtatDocument" lorsque une suppression de registre de ma table acompte intervient ...

j'ai donc mis ce code sur le bouton qui permet de supprimer l'acompte sélectionné :

Code :
1
2
3
4
5
6
7
8
9
10
11
Private Sub EffacerAcompte_Click()
DoCmd.RunCommand acCmdDeleteRecord
Me.Requery
Forms![Devis et Factures].Recalc
If Forms![Devis et Factures]![ResteAPayer] = 0 Then
Forms![Devis et Factures]![EtatDocument] = "Payée"
End If
If Forms![Devis et Factures]![ResteAPayer] > 0 Then
Forms![Devis et Factures]![EtatDocument] = "Générée"
End If
End Sub
Or l'acompte s'efface bien, le calcul du nouveau total se fait bien mais l'injection de la valeur dans le champ [EtatDocument] ne se fait jamais : aucune valeur apparait suivant telle ou telle condition...

Que fais-je mal ?

Merci d'avance pour toute réponse
clickandgo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2011, 19h05   #2
Rédacteur/Modérateur
 
Avatar de GAYOT
 
Homme Jean-Damien GAYOT
Inscription : novembre 2004
Messages : 2 071
Détails du profil
Informations personnelles :
Nom : Homme Jean-Damien GAYOT
Âge : 56
Localisation : France, Meuse (Lorraine)

Informations professionnelles :
Secteur : Distribution

Informations forums :
Inscription : novembre 2004
Messages : 2 071
Points : 4 385
Points : 4 385
Envoyer un message via Skype™ à GAYOT
Bonsoir
Essaie celà
Code :
Forms![Devis et Factures]![EtatDocument].[ZoneDeTexte].Value = "Payée"
__________________
Plus j'avance et plus j'ai l'impression de ne rien savoir. Et comme j'essaie d'aller loin..!!.

Tutoriels sur:http://jdgayot.developpez.com

Pas de sujets techniques par Mp. Sinon
GAYOT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2011, 23h37   #3
Membre régulier
 
Inscription : janvier 2011
Messages : 307
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 307
Points : 76
Points : 76
J'y avais pensé, merci, mais tjs rien !

J'ai remarqué qu'en faisant un recalc ou refresh du formulaire principal un zéro apparait dans chaque champ pendant une fraction de seconde le temps du recalcul, apparement c'est à ce moment là qu' Access 2010 vérifie mes conditions et comme à chaque fois il voit un zéro, il n'applique pas ce que je lui demande...

Comment contourner ça ? Peut on lui demander d'attendre d'avoir actualisés les champs avant d'appliquer vraiment les conditions ?

Merci d'avance si vous avez une suggestion !
clickandgo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2011, 06h17   #4
Rédacteur/Modérateur
 
Avatar de GAYOT
 
Homme Jean-Damien GAYOT
Inscription : novembre 2004
Messages : 2 071
Détails du profil
Informations personnelles :
Nom : Homme Jean-Damien GAYOT
Âge : 56
Localisation : France, Meuse (Lorraine)

Informations professionnelles :
Secteur : Distribution

Informations forums :
Inscription : novembre 2004
Messages : 2 071
Points : 4 385
Points : 4 385
Envoyer un message via Skype™ à GAYOT
Bonjour
Pour savoir où est l'erreur intercale un Message ou un DebugPrint

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub EffacerAcompte_Click()
DoCmd.RunCommand acCmdDeleteRecord
Me.Requery
Forms![Devis et Factures].Recalc
DoEvents
MsgBox "Valeur à controler: " & Forms![Devis et Factures]![ResteAPayer].Value
If Forms![Devis et Factures]![ResteAPayer] = 0 Then
Forms![Devis et Factures]![EtatDocument] = "Payée"
End If
If Forms![Devis et Factures]![ResteAPayer] > 0 Then
Forms![Devis et Factures]![EtatDocument] = "Générée"
End If
End Sub
Ainsi tu verras déjà si ta valeur est bonne
__________________
Plus j'avance et plus j'ai l'impression de ne rien savoir. Et comme j'essaie d'aller loin..!!.

Tutoriels sur:http://jdgayot.developpez.com

Pas de sujets techniques par Mp. Sinon
GAYOT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2011, 12h30   #5
Membre régulier
 
Inscription : janvier 2011
Messages : 307
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 307
Points : 76
Points : 76
Merci d'avoir répondu,

J'avais aussi pensé à faire cela, je te confirme que tout le problème vient du fait que la condition vérifiée par access a une valeur tjs égale à zéro même quand après recalcul du champ cela est en réalité supérieur à zéro ...
En effet et curieusement, lorsqu'un recalc est effectué sur un champ calculé on voit apparaitre pendant une fraction de seconde un "0" juste avant que le champ s'actualise, les conditions s'évaluant à ce moment précis access considère qu'il s'agit d'un zéro ...

En faisant un test sans recalc toutes les conditions s'effectuent normalement, aucun problème, mais vu que j'ai besoin que les champs soient recalculés juste après suppression d'un acompte, comment dois-je m'y prendre ?
(mettre en place une minuterie ?)

Il doit bien y avoir un moyen pour feinter et faire en sorte qu'access ait le temps de recalculer les champs complètement avant qu'il vérifie les conditions ?

PS: J'ai lu sur un autre forum que quelqu'un avait exactement le même problème... Aucune réponse à son message...

Merci de m'aider à trouver une solution !
clickandgo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2011, 12h52   #6
Rédacteur/Modérateur
 
Avatar de GAYOT
 
Homme Jean-Damien GAYOT
Inscription : novembre 2004
Messages : 2 071
Détails du profil
Informations personnelles :
Nom : Homme Jean-Damien GAYOT
Âge : 56
Localisation : France, Meuse (Lorraine)

Informations professionnelles :
Secteur : Distribution

Informations forums :
Inscription : novembre 2004
Messages : 2 071
Points : 4 385
Points : 4 385
Envoyer un message via Skype™ à GAYOT
Bonjour
As tu mis le DoEvents que je j'ai mis dans le code.
Cette commande sert justement à attendre la fin d'une opération.
__________________
Plus j'avance et plus j'ai l'impression de ne rien savoir. Et comme j'essaie d'aller loin..!!.

Tutoriels sur:http://jdgayot.developpez.com

Pas de sujets techniques par Mp. Sinon
GAYOT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2011, 13h27   #7
Membre régulier
 
Inscription : janvier 2011
Messages : 307
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 307
Points : 76
Points : 76
Bonjour Gayot,

Oui, et il me dit toujours "0".
...
Comment faire ?
clickandgo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2011, 13h53   #8
Rédacteur/Modérateur
 
Avatar de GAYOT
 
Homme Jean-Damien GAYOT
Inscription : novembre 2004
Messages : 2 071
Détails du profil
Informations personnelles :
Nom : Homme Jean-Damien GAYOT
Âge : 56
Localisation : France, Meuse (Lorraine)

Informations professionnelles :
Secteur : Distribution

Informations forums :
Inscription : novembre 2004
Messages : 2 071
Points : 4 385
Points : 4 385
Envoyer un message via Skype™ à GAYOT
Quelle est la source du formulaire?
__________________
Plus j'avance et plus j'ai l'impression de ne rien savoir. Et comme j'essaie d'aller loin..!!.

Tutoriels sur:http://jdgayot.developpez.com

Pas de sujets techniques par Mp. Sinon
GAYOT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2011, 14h02   #9
Membre régulier
 
Inscription : janvier 2011
Messages : 307
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 307
Points : 76
Points : 76
Citation:
Envoyé par GAYOT Voir le message
Quelle est la source du formulaire?
La source est la table "Acomptes", pourquoi ?

Pour essayer j'ai mis le même code sur l'event "AfterDelConfirm" du formulaire : tjs le même problème...
clickandgo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2011, 14h06   #10
Rédacteur/Modérateur
 
Avatar de GAYOT
 
Homme Jean-Damien GAYOT
Inscription : novembre 2004
Messages : 2 071
Détails du profil
Informations personnelles :
Nom : Homme Jean-Damien GAYOT
Âge : 56
Localisation : France, Meuse (Lorraine)

Informations professionnelles :
Secteur : Distribution

Informations forums :
Inscription : novembre 2004
Messages : 2 071
Points : 4 385
Points : 4 385
Envoyer un message via Skype™ à GAYOT
Je disais cela, car cela m'est arrivé une fois parce que la source de mon formulaire était une requête en vba. Il fallait que je remette la source pour que cela s'actualise.
Voilà la raison de ma question.
__________________
Plus j'avance et plus j'ai l'impression de ne rien savoir. Et comme j'essaie d'aller loin..!!.

Tutoriels sur:http://jdgayot.developpez.com

Pas de sujets techniques par Mp. Sinon
GAYOT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2011, 14h09   #11
Rédacteur/Modérateur
 
Avatar de GAYOT
 
Homme Jean-Damien GAYOT
Inscription : novembre 2004
Messages : 2 071
Détails du profil
Informations personnelles :
Nom : Homme Jean-Damien GAYOT
Âge : 56
Localisation : France, Meuse (Lorraine)

Informations professionnelles :
Secteur : Distribution

Informations forums :
Inscription : novembre 2004
Messages : 2 071
Points : 4 385
Points : 4 385
Envoyer un message via Skype™ à GAYOT
Néanmoins
Tu peux peut être essayer cela pour cerner le problème.
Au lieu du recalc:
Code :
1
2
3
 
Forms![Devis et Factures].RecordSource = ""
Forms![Devis et Factures].RecordSource = "Acomptes"
__________________
Plus j'avance et plus j'ai l'impression de ne rien savoir. Et comme j'essaie d'aller loin..!!.

Tutoriels sur:http://jdgayot.developpez.com

Pas de sujets techniques par Mp. Sinon
GAYOT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2011, 14h12   #12
Membre régulier
 
Inscription : janvier 2011
Messages : 307
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 307
Points : 76
Points : 76
Citation:
Envoyé par GAYOT Voir le message
Je disais cela, car cela m'est arrivé une fois parce que la source de mon formulaire était une requête en vba. Il fallait que je remette la source pour que cela s'actualise.
Voilà la raison de ma question.
Merci de t'intéresser à mon cas, j'éspère qu'on trouvera une astuce rapidement car ça me retarde pour faire les blocages des champs nécéssaires suivant l' état de la facture ...

Je viens de faire un essai en retirant les conditions et forçant la valeur "Générée" après suppression et ça marche, donc il s'agit bien d'un problème de synchro, il faut éviter que Access lise "0" avant d'appliquer les conditions...

Je pense qu'il faut lui indiquer d'attendre que le recalc soit fini avant qu'il vérifie les conditions, que faut il mettre dans le code pourqu'il y ait une pause ?

je suis ouvert à toute autre suggestion ....
clickandgo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2011, 14h19   #13
Rédacteur/Modérateur
 
Avatar de GAYOT
 
Homme Jean-Damien GAYOT
Inscription : novembre 2004
Messages : 2 071
Détails du profil
Informations personnelles :
Nom : Homme Jean-Damien GAYOT
Âge : 56
Localisation : France, Meuse (Lorraine)

Informations professionnelles :
Secteur : Distribution

Informations forums :
Inscription : novembre 2004
Messages : 2 071
Points : 4 385
Points : 4 385
Envoyer un message via Skype™ à GAYOT
As tu essayé ce que je t'ai mis plus haut.
__________________
Plus j'avance et plus j'ai l'impression de ne rien savoir. Et comme j'essaie d'aller loin..!!.

Tutoriels sur:http://jdgayot.developpez.com

Pas de sujets techniques par Mp. Sinon
GAYOT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2011, 14h31   #14
Membre régulier
 
Inscription : janvier 2011
Messages : 307
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 307
Points : 76
Points : 76
Oui, bien sûr !
clickandgo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2011, 14h37   #15
Rédacteur/Modérateur
 
Avatar de GAYOT
 
Homme Jean-Damien GAYOT
Inscription : novembre 2004
Messages : 2 071
Détails du profil
Informations personnelles :
Nom : Homme Jean-Damien GAYOT
Âge : 56
Localisation : France, Meuse (Lorraine)

Informations professionnelles :
Secteur : Distribution

Informations forums :
Inscription : novembre 2004
Messages : 2 071
Points : 4 385
Points : 4 385
Envoyer un message via Skype™ à GAYOT
Ce doit être super bête ou j'ai les neurones en compote, mais sans essayer et sans voir je ne sais plus trop quoi ajouter.
Ta commande est bien envoyée à partir du formulaire "Devis et factures" ou à partir d'un autre formulaire.
__________________
Plus j'avance et plus j'ai l'impression de ne rien savoir. Et comme j'essaie d'aller loin..!!.

Tutoriels sur:http://jdgayot.developpez.com

Pas de sujets techniques par Mp. Sinon
GAYOT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2011, 14h46   #16
Membre régulier
 
Inscription : janvier 2011
Messages : 307
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 307
Points : 76
Points : 76
Elle se trouve dans le SF "Acomptes" lui même dans un onglet sur le formulaire [Devis et Factures] ...

Si la référence n'était pas bonne Access me le signalerait de suite, ce n'est pas le cas...
En mettant "Do events" comme tu l'as suggéré il apparait à chaque fois "0" même quand le champ indique une autre valeur.
Ca me semble un problème de synchro, Access chope le "0" qui apparait quelques fractions de secondes dans le champ avant qu'il ne soit recalculé...
clickandgo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 03h09   #17
Membre régulier
 
Inscription : janvier 2011
Messages : 307
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 307
Points : 76
Points : 76
Comme aucune solution ne m'a été donnée j'ai résolu moi même la question en utilisant la fonction Dsum() dans les champs incriminés ce qui permet de calculer les valeurs indépendamment de si un formulaire contient ou non des registres ...
clickandgo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h06.


 
 
 
 
Partenaires

Hébergement Web