Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Eingabeformat für Währung

Begonnen von Optiplex, Dezember 10, 2010, 11:46:00

⏪ vorheriges - nächstes ⏩

Optiplex

hallo zusammen,
kann man die Eingabe von Währungsbeträgen irgendwie formatieren? Das Ergebnis sollte das eingeben von Buchstaben  und bei mir auch das vorzeichen "-" verhindern. Also nur positive Zahlen mit 2 Nachkommastellen sollten möglich sein. Bei einer dreistelligen Zahl gebe ich zum Beispiel bei Eingabeformat "999;;_" ein. Ich hoffe ihr habt verstanden was ich meine.

Danke und Gruß Dieter

oma

#1
Hallo Dieter,

genügt dir nicht einfach     >=0      als Gültigkeitsregel für das Währungsfeld in der Tabelle und die Einstellung auf 2 Kommastellen im Bearbeitungsformular?

Gruß Oma
nichts ist fertig!

Optiplex

Hallo Oma,
dann hätte ich nur den Minusbereich abgefangen, Komischerweise kann man bei Währung Buchstaben in Access eingeben. Gibt es denn kein Eingabeformat das man verwenden könnte? Es werden hier ja keine Milionenbeträge eingegeben, ich müsste eigentlich nur den Bereich von 0-10000 abdecken.

Dieter

Jonny

Hallo,
ein Feld Währung ist ein Zahlenfeld und wenn man da Buchstaben eingibt kommt eine entsprechende Meldung.
Also reicht das was Oma geschrieben hat.

Wenn du umbedingt willst kannst du ja das Eingabeformat 99990,00;;_ nehmen.
Ich halte das für aber für mehr als umständlich das hier immer fünf Stellen Vorkomma und zwei Stellen Nachkomma erfast
werden müssen.

Gruß

Johann

database

Hallo,

du KÖNNTEST aber auch als Gültigkeitsregel >=0 und <=10000 nehmen oder prüfst überhaupt gleich komplett auf Formularebene - was ICH bevorzugen würde

Gruß

Gast

Hallo,

kein Beitrag ohne ein Database Kommentar, egal ob zusätzlich oder überflüssig...

Gruß

Optiplex

@Jonny
danke für den Tip, aber mir persönlich gehen diese Meldungen von Access auf die Nerven, da ich dann keine Möglichkeit beim Verlassen des Feldes darauf zu reagieren, Zum Beispiel wenn eine Falsche Eingabe erfolgt, dass dann einfach 0,00€  wieder ins feld geschrieben wird. Oder kennst du eine Möglichkeit diese Meldungen zu unterdrücken und statt dessen einfach das Feld mit einem neuen Wert zu besetzen, deshalb die Frage nach der Eingabeformatierung.

@database
wenn die Eingabe korrekt war kann man natürlich auf Formularebene den Wert abfragen und entsprechend reagieren. Aber so weit kommt es ja nicht, ich kann das Feld bei Falscher Eingabe nicht verlassen.

Ich stelle mir folgendes vor
Falsche eingabe -> Meldung von mir -> zurücksetzen des wertes auf 0,00€

geht sowas in Access ? kann man diese Access Meldungen abfangen und durch eigene ersetzen?

Gruß Dieter

oma

Hallo Dieter,

du kannst doch alle Felder in Formular prüfen u. gegebenfalls auch immer eine 0,00 schreiben.
so in etwa:

Private Sub DeinFeld_AfterUpdate()
    If Me!DeinFeld<= 0 Then
        msgBox "Wert falsch"
        Me!DeinFeld = 0
        Me!DeinFeld.SetFocus
End If
End Sub


Gruß Oma
nichts ist fertig!

Jonny

Hallo,
Database hat zwar vom Gast (Feigling ist bestimmt jemand sich einloggen könnte) einen drübergekriegt aber ich wage
auch noch eine Ergänzung.
Da hast geschrieben das auch Buchstaben eingeben werden können, als das ein wirkliches Textfeld ist.
Dann die Routine noch etwas ergänzen:

Private Sub DeinFeld_AfterUpdate()   
    If not isnumeric(me!DeinFeld) or Me!DeinFeld<= 0 Then       
         msgBox "Wert falsch"       
          Me!DeinFeld = 0       
          Me!DeinFeld.SetFocus
    End If
End Sub

mit not isnumeric fängst du auch Buchstaben bzw Null Wert ab.

Gruß

Johann

Optiplex

Drücke ich mich so unverständlich aus?

dass ich nach der Eingabe und unter Einhaltung des Währungsformates auf Formularebene reagieren kann ist mir schon klar. Ich komme aber erst gar nicht in den Genuß etwas ändern zu können, weil bei dem Datentyp Währung immer zuerst die Access Fehlermeldung kommt und diese mich in dem Feld solange festhält, bis das Währungsformat eingehalten wurde.  Ich möchte genau das tun was ihr mir schon die ganze Zeit vorschlagt, nämlich selbst auf eine Falscheingabe zu reagieren, nur muss ich diese Accessfehlermeldung dazu irgendwie unterdrücken oder auschalten da sonst alle Ereignisse im Formular erst gar nicht erreicht werden.

Gruß Dieter

MzKlMu

Hallo,
um das vernüftig abzufangen, braucht man sowieso Code. Also würde ich Prozedur erstellen, die in einem Formularfeld erst gar keine Buchstaben zulässt.
Eingabe beschränken auf Zahlen, Komma und Rücktaste. Und alle Spatzen sind gefangen.
Falls Interesse an einer solchen Lösung, mache ich Dir gern einen Vorschlag.
Brauchst Du das Komma?
Gruß Klaus

oma

Hallo Dieter,

ZitatDrücke ich mich so unverständlich aus?

also nun verstehe ich dich nicht! Mit dem Code von mir bzw. der Ergänzung von Johann (oder evt. noch mehr Erweiterungen) kommt es doch zu keiner Access-Meldung?

Zitatweil bei dem Datentyp Währung immer zuerst die Access Fehlermeldung kommt und diese mich in dem Feld solange festhält

Bei mir kommt bei "Fehleingaben" immer die Meldung aus dem Code. Eine zusätzliche Access-Meldung kommt bei mir in keinen Eingabefall im Formular.


Gruß Oma
nichts ist fertig!

Optiplex

Hallo Oma, Hallo MzKlMu,

Oma ich weis nicht was für eine Version du hast, (ich habe A2003) bei mir kommt immer eine Fehlermeldung (falsches Format) ich habe bereits probiert in dem Ereignis OnChance während der Eingabe zu reagieren, aber entweder habe ich was falsch gemacht oder aber das Ereignis wird während ich Eingebe nicht aufgerufen.

MzKlMu gerne nehme ich dein Angebot an mir einen Vorschlag zu unterbreiten wie ich dem Problen begegnen kann.

Gruß Dieter

MzKlMu

#13
Hallo,
anbei ein Vorschlag:
Private Sub DeinFeldName_KeyDown(KeyCode As Integer, Shift As Integer)
   Select Case KeyCode
   Case 48 To 57, 8, 44, 188, 27, 13
       '48-57=Zahlen, 8=Rück, 44 und 188=Komma, 13=Enter, 27=ESC
       'es wird nichts gemacht bzw. normale Tastenfunktion bleibt erhalten
   Case Else
       MsgBox "Ätsch, geht nicht" 'MsgBox nicht unbedingt notwendig
       KeyCode = 0
   End Select
End Sub

Es funktionieren nur die genannten Tasten.
Auf ein Eingabeformat sollte verzichtet werden. Die Msgbox ist nicht notwendig, bei einer falschen Taste passiert dann einfach gar nichts.
Gruß Klaus

Optiplex

Hallo MzKlMu,
das klappt hervorragend, großes Lob an dich. Was mir jetzt noch Fehlt sind die Keycodes für die Numertastatur 0-9 und Komma im Nummernblock oder noch besser gibt es irgendwo eine Liste mit diesen KeyCodes. So eine Liste wäre bestimmt auch eine feine Sache für die Tips Und Tricks Abteilung hier im Forum.

Auf jeden Fall hast du mir sehr geholfen

Danke und Gruß Dieter