Numerische Eingaben sicherstellen
Versionen: Access 97, 2000 und 2002
In Ihren Datenbanken verwenden Sie häufig Felder, in denen nur numerische Inhalte, also Ziffern von "0" bis "9" gespeichert werden dürfen. Alphanumerische Eingaben, die zum Beispiel irrtümlich eingetippte Leerzeichen enthalten, wirken sich unter Umständen negativ auf Auswertungen aus, führen zu einer falschen Sortierung oder zeigen sonstige unerwünschte Nebeneffekte. Eine ähnliche Problematik tritt auf, wenn Sie Daten importieren möchten, die eventuell ebenfalls alphanumerische Inhalte aufweisen können und dann entsprechend korrigiert werden müssen. Einen sauberen Datenbestand können Sie in beiden Fällen durch den Einsatz einer benutzerdefinierten Funktion sicherstellen. Zunächst legen Sie diese Funktion wie folgt an:
Öffnen Sie ein eventuell vorhandenes Modul im Entwurfsmodus oder legen Sie im Bereich "Module" ein neues Modul an.
Im VBA-Editor geben Sie nun die folgenden Anweisungen ein:
Function NumericOnly(varInput As Variant) As Variant
Dim varOutput As Variant, strChar As String
Dim intPos As Integer
If IsNull(varInput) Then Exit Function
For intPos = 1 To Len(varInput)
strChar = Mid(varInput, intPos, 1)
If (strChar >= "0" And strChar <= "9") Then
varOutput = varOutput + strChar
End If
Next
NumericOnly = varOutput
End Function
Verlassen Sie die VBA-Entwicklungsumgebung und sichern Sie das Modul unter "modNumericOnly".
Diese Funktion nimmt als Parameter einen beliebigen Feldinhalt entgegen, prüft diesen Zeichen für Zeichen und sorgt dafür, dass nur Ziffern im Bereich "0" bis "9" in das Funktionsergebnis übernommen werden. Die Funktion generiert also beispielsweise aus einer Eingabe "123 456 789", bei der der Anwender zur vermeintlich besseren Lesbarkeit Leerzeichen eingefügt hat, in einen numerischen Wert "1234567890". Testen können Sie die Funktion über den Direktbereich von Access, indem Sie einmal Strg+G drücken und dort die folgende Anweisung eintippen:
? NumericOnly("123 456 789")
Um nun mit Hilfe dieser Funktion Eingaben in einem Formular zu prüfen und gegebenenfalls zu korrigieren, gehen Sie wie folgt vor:
Öffnen Sie das Formular mit dem zu prüfenden Feld im Entwurfsmodus.
Markieren Sie das Feld und wählen Sie das Menü Ansicht-Eigenschaften an.
Setzen Sie die Eigenschaft "Nach Aktualisierung" auf den Eintrag "[Ereignisprozedur]" und klicken Sie auf die Schaltfläche mit den drei kleinen Punkten dahinter.
Im VBA-Editor geben Sie nun zwischen den Zeilen "Sub..." und "End Sub" die folgenden Anweisungen ein:
Me.[Feldname] = NumericOnly(Me.[Feldname])
"Feldname" ersetzen Sie dabei durch den Namen des Feldes, das Sie prüfen/korrigieren möchten.
Verlassen Sie die VBA-Entwicklungsumgebung und speichern Sie das Formular.
Nach einer Eingabe in das betreffende Feld wird dessen Inhalt nun an die Funktion "NumericOnly()" übergeben, bei Bedarf korrigiert und zurück in das Feld geschrieben.
Zur Korrektur vorhandener Datenbestände setzen Sie eine Aktualisierungsabfrage ein, die wie folgt eingerichtet wird:
Wechseln Sie im Datenbankfenster in den Bereich "Abfragen" und klicken Sie auf die Schaltfläche Neu.
Im folgenden Dialog "Neue Abfrage" wählen Sie "Entwurfsansicht" per Doppelklick und dann anzupassende Tabelle aus. Klicken Sie auf Schließen, um in den Abfrageentwurf zu gelangen.
Nehmen Sie das anzupassende Feld per Doppelklick in die Feldliste in den Abfrageentwurf auf. Für dieses Feld geben Sie in der Zeile "Aktualisieren" die folgende An
= NumericOnly([Feldname])
"Feldname" ersetzen Sie dabei wieder durch den Namen des Feldes, das Sie prüfen/korrigieren möchten. Die Anweisung sorgt nun dafür, dass der aktuelle Inhalt des Feldes über "NumericOnly()" geprüft und wieder zurück in das Feld geschrieben wird.
Wählen Sie das Menü Abfrage-Ausführen an, um die Aktualisierung durchzuführen.
Wenn Sie die Tabelle daraufhin öffnen, können Sie sich direkt vom Ergebnis Ihrer Bemühungen überzeugen.
© 1996-2024 Tibe Services Tim Berlebach, Zangerstraße 22, 65375
Oestrich-Winkel,
Tel: 06723
889005, Fax: 06723 889006, E-Mail: info(at)tibe.de, Internet: www.tibe.de