praktikantin
Goto Top

Benutzereingabe prüffen

Prüfung ob die Eingabe Numeric 5(4,2) ist

Hallo Leute,

ich habe ein kleines Visual Basic Programm erstellt, dass mit Hilfe einer Gespeichterten Prozedur einen Wert in der Datenbank aktualisiert-ändert....
Dieser Wert (freq) ist eine numeric 5(4,2) in der Datenbank. Das programm nehmt die freq von einer Textbox und so wird sie mit der SP aktualisiert. Ich will jetzt sicher sein ob die Eingabe vom benutzter richtig ist, also das richtige Format hat damit in der Datenbank keinen Falschen Werte eingegeben werden oder die Prozedur mit einem Unbekannten Fehler platzt. Ich dachte ich versuche mal

if not isnumeric(freq)
msgbox "Der Wert ist falsch"
End if

Aber mit isnumeric werden wohl die Negativen Zahlen nicht überprüft und in der Datenbank sind Negative Zahlen nicht erlaubt. Ausserdem würde ich gerne dass die Zahl zwischen 0.1 und 10 ist...

Wenn ich noch eine Prüfung im Code haben muss bitte schreibt es mir. Ich will einfach mal sehen wie diese Prüfungen von jemandem mit großer Erfahrung definiert werden...

Danke im voraus
und viele liebe Grüße

Praktikantin

Content-ID: 123296

Url: https://administrator.de/contentid/123296

Ausgedruckt am: 23.11.2024 um 04:11 Uhr

filippg
filippg 23.08.2009 um 13:36:06 Uhr
Goto Top
Ausserdem würde ich gerne dass die Zahl zwischen 0.1 und
10 ist...
Jaaaa..... Und warum schreibst du es dann nicht einfach hin? Leider habe ich keine Ahnung von VB, aber einen "AND"-Opertor gibt es bestimmt, ebenso wie ein größer und kleiner. Und alles zusammengepackt ergibt: If not (isnumeric(freq) AND freq >= 0.1 AND freq <= 10) then... Analog dazu würde ich es zumindest in jeder anderen Sprache machen. Damit hast du auch sichergestellt, dass der Wert nicht negativ ist. Die isnumierc-Abfrage an erster Stelle macht bei den meisten Programmiersprachen auch Sinn: sie liefern bei einem Vergleich "a" >= 0.1 nicht einfach "true" oder "false" sondern lösen eine Ausnahme aus.

Gruß

Filipp
76109
76109 23.08.2009 um 13:40:39 Uhr
Goto Top
Hallo Praktikantin!

Vielleicht so:
Private Sub Button_Click()

    On Error GoTo SendErrMsg 'Error wenn folgender Test Not Numeric  
    
    If TextBox < 0.1 Or TextBox > 10 Then GoTo SendErrMsg
    
   '..........  

    Exit Sub

SendErrMsg:
    Hide
    MsgBox "Der Wert ist falsch"  
    Show
End Sub

oder so:
Private Sub Button_Click()

    If IsNumeric(TextBox) Then
        If TextBox < 0.1 Or TextBox > 10 Then GoTo SendErrMsg
    Else
        GoTo SendErrMsg
    End If
    
   '..........  

    Exit Sub

SendErrMsg:
    Hide
    MsgBox "Der Wert ist falsch"  
    Show
End Sub

Gruß Dieter
Praktikantin
Praktikantin 23.08.2009 um 13:56:01 Uhr
Goto Top
Hallo Filipp und Dieter,

ja das mache ich dann-->
If TextBox < 0.1 Or TextBox > 10 Then GoTo SendErrMsg

Damit ist wohl alles ok . Das einzige was ich noch machen muss ist ein ltrim, rtrim oder trim damit ich die spaces lösche. Somit habe ich alle Fehler die ein benutzter machen kann.

Vielen dank an euch beide, man füllt sich einfach sicherer wenn man einen Tipp von einem Experten bekommt face-smile und so sammelt man auch tolle Ideen! Noch einmal danke

Viele Grüsse Praktikantin
76109
76109 23.08.2009 um 14:12:01 Uhr
Goto Top
Hallo Praktikantin!

Aber den Test "IsNumeric" oder die Anweisung "On Error" verwendest Du hoffentlich auch?

Noch ein Tip: Verwende anstatt LTrim/RTrim nur Trim.

Und dafür muss man kein Experte sein. Ich bin zumindest keinerface-smile

Gruß Dieter
Praktikantin
Praktikantin 23.08.2009 um 14:32:14 Uhr
Goto Top
Ok Dieter,

ich werde auch isnumeric verwenden und Trim statt ltrim/rtrim (zu viel SQL im Kopf) face-smile Gut dass Du mir das noch geschrieben hast... Ich dachte mit der If TextBox < 0.1 Or TextBox > 10 Then GoTo SendErrMsg wäre alles ok... Jetzt wo ich darüber nachdenke kann doch etwas passieren... Ok dann. Mit OnError meinst Du diesen abschnitt oder?

SendErrMsg:
Hide
MsgBox "Der Wert ist falsch"
Show
End Sub

Wenn so etwas vorkommt werde ich einfacht den Inhalt der Textbox löschen und den Benutzer auffordern einen richtigen Wert einzugeben. Ist das so ok?

Und noch etwas... Aus meiner Sicht, die zum ersten mal so etwas macht bist Du schon ein Experte face-smile Alles ist eben Ansichtssache!!!! face-winkface-winkface-wink

Vielen Dank
Praktikantin
76109
76109 23.08.2009 um 15:37:53 Uhr
Goto Top
Hallo Praktikantin!

Also, wenn bei dem Test kleiner/größer kein numerischer Wert vorhanden ist, dann wird ein Error-Ereignis ausgelöst. Daher muss entweder explizit ein IsNumeric-Test ausgeführt werden oder mit On Error Goto dafür gesorgt werden, das das Error-Erreignis vom Code selbst mit einem Goto verarbeitet wird.

Entweder diesen Code:
    On Error GoTo SendErrMsg
    If TextBox < 0.1 Or TextBox > 10 Then GoTo SendErrMsg
oder diesen Code verwenden:
    If IsNumeric(TextBox) Then
        If TextBox < 0.1 Or TextBox > 10 Then GoTo SendErrMsg
    Else
        GoTo SendErrMsg
    End If

Der Rest ist gleich.

Das löschen der TextBox, kannst Du in dem Teil mit der MsgBox mit einbinden.

Gruß Dieter