Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Benutzereingabe prüffen

Frage Entwicklung VB for Applications

Mitglied: Praktikantin

Praktikantin (Level 1) - Jetzt verbinden

23.08.2009, aktualisiert 12:43 Uhr, 3462 Aufrufe, 6 Kommentare

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
Mitglied: filippg
23.08.2009 um 13:36 Uhr
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
Bitte warten ..
Mitglied: 76109
23.08.2009 um 13:40 Uhr
Hallo Praktikantin!

Vielleicht so:
01.
Private Sub Button_Click() 
02.
 
03.
    On Error GoTo SendErrMsg 'Error wenn folgender Test Not Numeric 
04.
     
05.
    If TextBox < 0.1 Or TextBox > 10 Then GoTo SendErrMsg 
06.
     
07.
   '.......... 
08.
 
09.
    Exit Sub 
10.
 
11.
SendErrMsg: 
12.
    Hide 
13.
    MsgBox "Der Wert ist falsch" 
14.
    Show 
15.
End Sub
oder so:
01.
Private Sub Button_Click() 
02.
 
03.
    If IsNumeric(TextBox) Then 
04.
        If TextBox < 0.1 Or TextBox > 10 Then GoTo SendErrMsg 
05.
    Else 
06.
        GoTo SendErrMsg 
07.
    End If 
08.
     
09.
   '.......... 
10.
 
11.
    Exit Sub 
12.
 
13.
SendErrMsg: 
14.
    Hide 
15.
    MsgBox "Der Wert ist falsch" 
16.
    Show 
17.
End Sub
Gruß Dieter
Bitte warten ..
Mitglied: Praktikantin
23.08.2009 um 13:56 Uhr
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 und so sammelt man auch tolle Ideen! Noch einmal danke

Viele Grüsse Praktikantin
Bitte warten ..
Mitglied: 76109
23.08.2009 um 14:12 Uhr
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 keiner

Gruß Dieter
Bitte warten ..
Mitglied: Praktikantin
23.08.2009 um 14:32 Uhr
Ok Dieter,

ich werde auch isnumeric verwenden und Trim statt ltrim/rtrim (zu viel SQL im Kopf) 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 Alles ist eben Ansichtssache!!!!

Vielen Dank
Praktikantin
Bitte warten ..
Mitglied: 76109
23.08.2009 um 15:37 Uhr
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:
01.
    On Error GoTo SendErrMsg 
02.
    If TextBox < 0.1 Or TextBox > 10 Then GoTo SendErrMsg
oder diesen Code verwenden:
01.
    If IsNumeric(TextBox) Then 
02.
        If TextBox < 0.1 Or TextBox > 10 Then GoTo SendErrMsg 
03.
    Else 
04.
        GoTo SendErrMsg 
05.
    End If

Der Rest ist gleich.

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

Gruß Dieter
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(1)

Tipp von agowa338 zum Thema Windows 10 ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...