2015-10-28 2 views
0

J'ai créé une expression pour ajouter 3 zones de texte ensemble dans une zone 4e total. L'expression est:Conversion d'une expression en accès VBA

=Cdbl(Nz[txtPart1],0)) + Cdbl(Nz[txtPart2],0)) + Cdbl(Nz[txtPart3],0)) 

Je suis en train de convertir en code VBA parce que la forme que je l'ai créé a tant de choses en cours d'exécution sur ce thats pourquoi le calcul est lent. Je veux être en mesure d'ajouter un sablier afin que l'utilisateur ne pense pas que le programme ne fonctionne pas. J'ai essayé de mettre un code qui résume le 3 dans l'événement après mise à jour des trois zones de texte, mais cela n'a pas fonctionné. S'il vous plaît aider!

J'ai ce code dans le AprèsMAJ des 3 zones de texte:

me.total = me.txtpPart1 + me.txtPart2 + me.txtPart3 

Merci

+0

Cette expression est très rapide, donc vous avez probablement chercher ailleurs pour l'optimisation. Et cela fonctionnera si vos boîtes de texte contiennent des chiffres, alors quel est votre code, s'il vous plaît? – Gustav

+0

J'ai ajouté le mon code que j'ai à la publication –

+0

Testez avec la propriété * Timer Interval * de votre formulaire définie sur 0. Est-ce que cela rend la "boîte 4ème total" plus réactif? Il semblait dans ma copie de votre DB. – HansUp

Répondre

2

Ensuite, vous pouvez utiliser:

Me!Total.Value = 0 
' Ignore error from non-numeric input. 
On Error Resume Next 
Me!Total.Value = CDbl(Nz(Me!txtPart1.Value, 0)) + CDbl(Nz(Me!txtPart2.Value, 0)) + CDbl(Nz(Me!txtPart3.Value, 0)) 
+0

Ok, donc je devrais mettre cela dans le postupdate de chacune des trois zones de texte? –

+0

Non. Vous devez l'enregistrer dans une fonction appelée, par exemple, 'UpdateTotal', puis appeler cette fonction à partir des trois événements' AfterUpdate'. – Gustav