PDA

Vollständige Version anzeigen : Plausibilitätskontrollen: Wie kann ich Prozentzahlen eingeben


Manuela Kulpa
31.12.2002, 12:48
Das Ausgabeformat: Prozentzahl wird sehr häufig falsch angezeigt, da die Benutzung des %-Zeichens bei der Eingabe häufig vergessen wird bzw. zu umständlich ist. Manche geben Prozentzahlen gewohnheitsmäßig als Dezimalzahl ein (z.B. 0,16 für 16%), andere wiederum lieber als ganze Zahl (hier also nur 16). Egal wie du das Feld formatierst, irgendjemand schafft es immer, es falsch einzugeben.

Wie kannst du es umgehen: Erstelle in deinem Formular ein Textfeld und benenne das Feld z.B. in txtProzentfeld um.
Stelle als Ausgabeformat Prozentzahl ein (Textfeldeigenschaft – Register Format)
Öffne ein bestehendes Modul oder erstell ein neues Modul und füge folgende Funktion ein:
<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre><span class="TOKEN">Public Function</span> CheckProzent(vWert <span class="TOKEN">As</span> Variant) <span class="TOKEN">As</span> <span class="TOKEN">Single</span>
<span class="TOKEN">Dim</span> sngWert <span class="TOKEN">As</span> <span class="TOKEN">Single</span>
&nbsp;
<span class="REM"> ' Wurde was &uuml;bergeben</span>
<span class="TOKEN">If</span> <span class="TOKEN">Not</span> IsNull(vWert) <span class="TOKEN">Then</span>
<span class="REM"> ' ist der Wert ganzzahlig?</span>
<span class="TOKEN">If</span> vWert &gt; 1 <span class="TOKEN">Then</span>
<span class="REM"> ' teile ihn durch 100</span>
sngWert = vWert / 100
<span class="TOKEN">Else</span>
<span class="REM"> ' ansonsten, belass den Wert so wie er ist</span>
sngWert = vWert
<span class="TOKEN">End</span> <span class="TOKEN">If</span>
<span class="TOKEN">End</span> <span class="TOKEN">If</span>
&nbsp;
<span class="REM"> ' &Uuml;bergabe &Uuml;berpr&uuml;fung</span>
CheckProzent = sngWert
&nbsp;
<span class="TOKEN">End</span> <span class="TOKEN">Function</span></pre></div>
Erstell anschließend für dein Textfeld folgende Ereignisprozedur (Textfeldeigenschaft – Register Ereignis – Nach Aktualisieren – dort auf die Aufbauenschaltfläche […] – Code-Generator):
<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre><span class="TOKEN">Private Sub</span> txtProzentfeld_AfterUpdate()
&nbsp;
Me!txtProzentfeld = CheckProzent(Me!txtProzentfeld)
&nbsp;
<span class="TOKEN">End</span> <span class="TOKEN">Sub</span></pre></div> Überprüfe es, indem du beide Varianten z.B. Eingabe 16 bzw. 0,16 ausprobierst. Das war's schon! Weitere Informationen findest du in der allgemeinen Onlinehilfe: Stichwort Programmieren in Access – Ereignisse bzw. Grundlegende Programmierkonzepte. Denk bitte auch immer an die [F1]-Taste (Wort markieren, F1-Taste betätigen), falls du nähere Informationen zu den im Code verwendeten Befehlen benötigst!

0din
12.04.2006, 19:10
und was passiert wenn man z.B. 16,1 % eingebe... dann teilt er auch durch 100 oder? oder wenn ich tatsächlich nur 0,98 % von etwas ausrechnen will?

swati
06.05.2008, 17:41
Hallo Manuela!

Super Code!. Aber wenn mann/Frau 1 eingibt wird 100% angezeigt, also musst Du statt ' ist der Wert ganzzahlig?
If vWert > 1 Then

einfach ist der Wert ganzzahlig?
If vWert > =1 Then

' einfügen, dann klappt es!