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, 3488 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 ..
Ähnliche Inhalte
Batch & Shell
gelöst Windows Ereignisse Tracen und automatisieren? (11)

Frage von Xanathos57 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Entwicklung

Exploit Development

Anleitung von burhanudinn123 zum Thema Entwicklung ...

Windows Update

Microsoft Update KB4034664 verursacht Probleme mit Multimonitor-Systemen

(1)

Tipp von beidermachtvongreyscull zum Thema Windows Update ...

Viren und Trojaner

CNC-Fräsen von MECANUMERIC werden (ggf.) mit Viren, Trojanern, Würmern ausgeliefert

(4)

Erfahrungsbericht von anteNope zum Thema Viren und Trojaner ...

Heiß diskutierte Inhalte
Netzwerkprotokolle
Leiten "dumme" Switches VLAN-Tags mit durch? (17)

Frage von coltseavers zum Thema Netzwerkprotokolle ...

E-Business
Wo tragt ihr eure privaten Termine ein? (13)

Frage von honeybee zum Thema E-Business ...

Batch & Shell
Batch zum suchen und verschieben von Verknüpfungen (12)

Frage von zeroblue2005 zum Thema Batch & Shell ...

Windows Server
Terminalserver starten willkürlich neu (12)

Frage von thaefliger zum Thema Windows Server ...