MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Access & Datenbanken > Microsoft Access
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 04.05.2011, 10:06   #1
Hung
MOF User
MOF User
Standard Acc2007 - Datumsfeld - falsche Eingabe abfangen

Hallo Forum,

habe ein Datumsfeld mit der Einstellung Format kurz.

Jetzt ist es aber so, dass bei Eingaben wie zB. 31.02.11das Feld mit dem
Datums-Wert 11.02.1931 gefüllt wird.

Schade eigentlich, dass hier nicht direkt eine Fehlermeldung erscheint.
Weiss jemand wie man trotzdem solche Fehleingaben verhindern kann.

Vielen Dank!

__________________

Gruß, Hung
------------------
Hung ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 04.05.2011, 10:29   #2
Edgar Basler
MOF Profi
MOF Profi
Standard

Wie meistens gibt es hierzu mehrere Möglichkeiten:

1.) Aufpassen - ok .... kein sonderlich guter Ansatz
2.) In der Tabelleneigenschaft kann man z.B. eine Gültigkeitsregel erstellen. Hat den Nachteil - wehe es kommt wirklcih ein Datum "11.02.1931´" vor.
3.) Im Formular kann man die Eigenschaft "vor Aktualisierung" benützen und dort per VBA eine Meldung erzeugen die darauf hinweist und trotzdem die Möglichkeit eröffnet dies abspeichern zu können.
Edgar Basler ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 04.05.2011, 11:10   #3
Hung
Threadstarter Threadstarter
MOF User
MOF User
Standard

Danke schon mal für die Antwort.

Da müßte es doch andere Möglichkeiten geben.
Die ein nicht im Kalender enthaltenes Datum abfangen.
Oder soll man im Hintergrund mit einer Tabelle das Datum prüfen?
Wäre das ne' Möglichkeit?

__________________

Gruß, Hung
------------------
Hung ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 04.05.2011, 11:20   #4
Josef P.
MOF Guru
MOF Guru
Standard

Hallo!

Wenn du die Eingabe im Format Tag.Monat.Jahr vorschreiben willst, könntest du auch die Text-Eigenschaft mit der Value-Eigenschaft vergleichen.

z. B.:
Code:

Private Sub DeinTextfeld_BeforeUpdate(Cancel As Integer)
   Dim tb As TextBox
   Set tb = Me.DeinTextfeld
   If Format(tb.Value, "dd.mm.yyyy") <> tb.Text And _
      Format(tb.Value, "d.m.yyyy") <> tb.Text And _
      Format(tb.Value, "dd.mm.yy") <> tb.Text And _
      Format(tb.Value, "d.m.yy") <> tb.Text Then
      MsgBox "Bitte gültiges Datum eingeben"
      Cancel = True
   End If
End Sub
.. oder beliebige Abwandlungen von diesem Code.

mfg
Josef

Geändert von Josef P. (04.05.2011 um 11:23 Uhr).
Josef P. ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 04.05.2011, 11:28   #5
ebs17
MOF Guru
MOF Guru
Standard

Zitat:

Da müßte es doch andere Möglichkeiten geben.

Wenn man denn gleich dem Benutzer ein Kalenderformular/-steuerelement anbietet, wird er in der Lage sein, ein gültiges Datum auszuwählen, und gerne dieses Angebot nutzen, weil er klickfaulerer agieren kann.

Man sollte dem Benutzer doch helfen, gleich Richtiges zu tun, statt ihm nachträglich mitzuteilen, dass er gerade "Mist" gemacht hat, egal ob verschuldet oder nicht.

__________________

Ein freundliches Glück Auf!

Eberhard

Abfrageperformance ist kein Geheimnis
SQL ist leicht: {0}:{1}:{2}:{3}:{4}:{5}:{6}:{7}:{8}:{9}:{10}:{11}:{12} <= geklammerte Zahlen sind Einzelthemen
Dein Dankeschön: DBWiki => Spende
ebs17 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 04.05.2011, 11:29   #6
Lanz Rudolf
MOF Guru
MOF Guru
Standard

Hallo
wie Edgar Basler sagt Datum Prüfen
da dass feld tt.mm.jj 31.02.11 ungültig ist (31. FEb ?) formatiert er das Feld in jj.mm.tt
evtl. eine Eingabemaske verwenden das tt.mm.jjjj eigegeben werden muss

__________________


Gruss
Ruedi

WICHTIG Hilfe findet man auch hier:
<a *****"http://www.donkarl.com/" target="_blank">http://www.donkarl.com/</a> ;<a *****"http://www.yaccess.de/" target="_blank">http://www.yaccess.de/</a> ; und natürlich MS Office Forum Ask Dr. Mof <a *****"http://www.ms-office-wissen.de/askdrmof/index.php" target="_blank">http://www.ms-office-wissen.de/askdrmof/index.php</a>;
Umgang mit NULL ; <a *****"attachment.php?attachmentid=20764&d=1243959564" target="_blank">hier downloaden</a>
Datenrettung;<a *****"http://www.access-rettung.de/info.htm" target="_blank">http://www.access-rettung.de/info.htm</a>Meine Doc;<a *****"https://www.dropbox.com/s/pa6yzgvw74lk6ik/ACCESS%202000BU%20%20Begleitunterlagen.zip?dl=0" target="_blank">Meine Doc</a>
Lanz Rudolf ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 04.05.2011, 11:32   #7
Josef P.
MOF Guru
MOF Guru
Standard

Zitat:

Wenn man denn gleich dem Benutzer ein Kalenderformular/-steuerelement anbietet, wird er in der Lage sein, ein gültiges Datum auszuwählen, und gerne dieses Angebot nutzen, weil er klickfaulerer agieren kann.

... aber nur jene User die gerne mit der Maus herumklicken.
Jene User, die lieber die Hand bei der Tastatur lassen, werden so ein Kalendersteuerelement nicht nutzen, da die Datumseingabe per Tastatur schneller ist.

BTW: Datumsauswahl über Kalender ist in Ac2007 bereits fertig für Textfelder vorhanden. Man benötigt kein zusätzliches Steuerelement.

Zitat:

Man sollte dem Benutzer doch helfen, gleich Richtiges zu tun, statt ihm nachträglich mitzuteilen, dass er gerade "Mist" gemacht hat, egal ob verschuldet oder nicht.

Hier stimme ich dir aber zu 100% zu.

mfg
Josef
Josef P. ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 04.05.2011, 11:59   #8
ebs17
MOF Guru
MOF Guru
Standard

Zitat:

da die Datumseingabe per Tastatur schneller ist

Für die, die wissen, was sie tun, schon. Strg + ; erzeugt z.B. das aktuelle Datum. Dann wäre der angebotene Kalender ein Angebot.

Bei einer Eingabe wie 31.02.11 wäre ein optisches Angebot aber durchaus hilfreich, da auch eine zweistellige Jahreszahl bei sonst korrektem Datum je nach Einstellung in der Systemsteuerung unterschiedlich interpretiert werden kann.

Eine Notwendigkeit der Datumsprüfung bleibt in vielen Fällen bestehen, da ein Datum, das syntaktisch richtig ist, inhaltlich voll daneben liegen kann.

__________________

Ein freundliches Glück Auf!

Eberhard

Abfrageperformance ist kein Geheimnis
SQL ist leicht: {0}:{1}:{2}:{3}:{4}:{5}:{6}:{7}:{8}:{9}:{10}:{11}:{12} <= geklammerte Zahlen sind Einzelthemen
Dein Dankeschön: DBWiki => Spende
ebs17 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 04.05.2011, 12:07   #9
Hung
Threadstarter Threadstarter
MOF User
MOF User
Standard

Ich Danke Euch.

Der code von Josef hift mir perfekt weiter.

merci

__________________

Gruß, Hung
------------------
Hung ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 04.05.2011, 12:24   #10
Atrus2711
MOF Guru
MOF Guru
Standard

Hi,
  • zweistellige Jahreszahlen könnte man durch Eingabeformat verhindern. Dann muss auch nicht interpretiert werden. Seit Y2k sollten zweistellige Jahreszahlen bei der Eingabe tabu sein.
  • das "Uminterpretieren" von Datumswerten, die der Ländereinstellung widersprechen, halte ich für eine Unart von MS. Mein Traum wäre ein tippbares Control (ggf. mit Kalenderpopup-Option), das die Datumswerte in einstellbarer (ggf. aus der Ländereinstellung übernommener) Notation erwartet und alles andere zurückweist (mangels Vererbung in VBA aber nicht gut möglich). Ein 02-14-2011 ist in D m.E. schlichtweg kein Datum. Wer den 14.02.2011 meint, soll das in D auch so eingeben.
  • Inhaltliche Fehler sind ohnehin logisch kaum erkennbar. Wenn ein Geburtsdatum durch Tippfehler falsch, aber immer noch gültig ist, ist das eben eine Falscheingabe. Plausis wie erforderliche Volljährigkeit, "Geburtsdatum <= Date()" helfen oft, aber nicht immer.
Atrus2711 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 04.05.2011, 12:42   #11
Josef P.
MOF Guru
MOF Guru
Standard

Hallo!

Zitat:

Mein Traum wäre ein tippbares Control (ggf. mit Kalenderpopup-Option), das die Datumswerte in einstellbarer (ggf. aus der Ländereinstellung übernommener) Notation erwartet und alles andere zurückweist (mangels Vererbung in VBA aber nicht gut möglich).

... mit einer Hilfsklasse zur Steuerung eines Textfeldes aber auch nicht unbedigt der Riesenaufwand im Formular. (Die Klasse selbst kann natürlich schon etwas komplexer werden - aber das interessiert später nicht mehr, wenn sie funktioniert. )

mfg
Josef
Josef P. ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 04.05.2011, 12:45   #12
Hung
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hallo Martin,

zu den letzten beiden Punkten bin ich Deiner Meinung.
Monat;Tag;Jahr - klar unlogisch.

Plausibilitätsabfragen sind meiner Erfahrung nach ziemlich
oft notwendig.

__________________

Gruß, Hung
------------------
Hung ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 04.05.2011, 12:48   #13
Atrus2711
MOF Guru
MOF Guru
Standard

@Hung:
Beim 02-14-2011 ist die Alternative vielleicht noch erahnbar. Aber was machst du beim 02-03-2011: Ist das nun der 02. März oder 03. Februar? Und wenn ja, warum? Und wie sieht das dann ein Schweizer/Franzose/US-Amerikaner/Brite?

Solang nicht dabei steht bzw. geregelt ist, was Monat und was Tag ist, ist das alles nur Vermutung. Das "Dabeistehen" ist eigentliche die Ländereinstellung. Wer die aber nicht beachtet, kriegt nicht etwa eine Fehlermeldung, sondern wird gedeutet. Fakten sollten aber nicht deutbar sein, sondern zweifelsfrei.

Und zur Plausi: Person X ist am 11.10.1980 geboren. Welche Plausi will anschlagen, um zu verhindern, dass man den 12.10.1980 eingibt? Und welche Plausi will erkennen, wo im Namen "Fritz Martin" der Vorname und wo der Nachname steckt?

Geändert von Atrus2711 (04.05.2011 um 12:51 Uhr).
Atrus2711 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 04.05.2011, 18:14   #14
Lanz Rudolf
MOF Guru
MOF Guru
Standard

Hallo
ich habe da :
http://cid-0838611f737bd3d9.office.l...KalenderKK.zip
eine Muster MDB
möglich dass das was für Dich ist
öffne die MDB und dann Form "FrmKTest" oder "FrmELFmDE"

auf den Formularen sollte das nötigste an anweisungen zu lessen sein !

__________________


Gruss
Ruedi

WICHTIG Hilfe findet man auch hier:
<a *****"http://www.donkarl.com/" target="_blank">http://www.donkarl.com/</a> ;<a *****"http://www.yaccess.de/" target="_blank">http://www.yaccess.de/</a> ; und natürlich MS Office Forum Ask Dr. Mof <a *****"http://www.ms-office-wissen.de/askdrmof/index.php" target="_blank">http://www.ms-office-wissen.de/askdrmof/index.php</a>;
Umgang mit NULL ; <a *****"attachment.php?attachmentid=20764&d=1243959564" target="_blank">hier downloaden</a>
Datenrettung;<a *****"http://www.access-rettung.de/info.htm" target="_blank">http://www.access-rettung.de/info.htm</a>Meine Doc;<a *****"https://www.dropbox.com/s/pa6yzgvw74lk6ik/ACCESS%202000BU%20%20Begleitunterlagen.zip?dl=0" target="_blank">Meine Doc</a>
Lanz Rudolf ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 04.05.2011, 18:33   #15
ebs17
MOF Guru
MOF Guru
Standard

Zitat:

Und zur Plausi: Person X ist am 11.10.1980 geboren. Welche Plausi will anschlagen, um zu verhindern, dass man den 12.10.1980 eingibt? Und welche Plausi will erkennen, wo im Namen "Fritz Martin" der Vorname und wo der Nachname steckt?

Solche Beispiele können aber nicht dazu führen zu glauben, dass Plausibilitätsprüfungen generell unnötig und unmöglich sind, und die Erfahrung eines anderen können sie auch nicht auf Null legen.
Ein Test, ob ein Geburtsdatum vor einem Betriebseintritt liegt, ein Spieler einer A-Jugend-Mannschaft nicht 36 ist u.a. wird durchaus machbar sein.

__________________

Ein freundliches Glück Auf!

Eberhard

Abfrageperformance ist kein Geheimnis
SQL ist leicht: {0}:{1}:{2}:{3}:{4}:{5}:{6}:{7}:{8}:{9}:{10}:{11}:{12} <= geklammerte Zahlen sind Einzelthemen
Dein Dankeschön: DBWiki => Spende
ebs17 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:04 Uhr.



Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.