vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2019
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Select Case of. If-Anweis. mit Messagebox 
Autor: theGodfather
Datum: 21.04.19 11:53

Hallo zusammen,

bei folgender Aufgabenstellung habe ich Probleme es zum laufen zu bringen:

1. Sorgen Sie dafür, dass das Programm nicht abbricht, wenn Buchstaben oder zu große Werte eingegeben wurden.
2. Geben Sie in diesem Fall eine AUSSAGEFÄHIGE Fehlermeldung aus
3. Bei mehr als 10 Kindern fragen Sie bitte nach, ob das stimmen kann



Mein code sieht aus wie unten, aber nur der obere Abschnitt passt. Ab dem Case Is > 256 habe ich einen Fehler. Ich weiss dass Byte nur bis 255 funktioniert. Vermutlich daher das Problem. weiteres Problem, dass bei einem String auch keine Fehlermeldung erfolgt.

Private Sub cmdAufgabe4_Click()
 
    Dim bytKinderzahl As Byte   'Dieser Befehl darf nicht geändert werden
    bytKinderzahl = Me.txtKinder
 
 
     Select Case Me.txtKinder
 
        Case 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
          Exit Sub
 
        Case Is > 10
            MsgBox "Sind Sie sicher, dass Ihre Eingabe von " & Me.txtKinder & "" & _
              "Kindern korrekt ist?",   _vbYesNo, "ACHTUNG!"
          Exit Sub
 
 
       Case Is > 256    'ab hier funktioniert mein Code nicht mehr
 
            MsgBox "Die von Ihnen eingegebene Kinderanzahl ist zu groß!" & vbCr _
              & "Korrigieren Sie ihre Eingabe!", vbCritical, "Fehlerhafte" & _
              "Eingabe"
            Exit Sub
 
 
    Case Else
 
               MsgBox "" & vbCr & "Korrigieren Sie bitte Ihre Eingabe und geben" & _
                 "Sie die Anzahl Ihrer Kinder ein.", vbInformation, _
                 "Fehlerhafte Eingabe"
            Exit Sub
 
                End Select
Hat jemand eine Idee was ich falsch mache und wie ich es besser machen kann?

Danke im Voraus
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Select Case of. If-Anweis. mit Messagebox 
Autor: Manfred X
Datum: 21.04.19 15:20

Hallo!

Welche VB-Version?

Diese Aufgabenstellung müßte genauer erklärt werden.

Rein praktisch gesehen, ist es Unfug, eine Textbox-Eingabe (String)
in eine Byte-Variable zu wandeln.
Die Byte-Variable kann Werte zwischen 0 und 255 aufnehmen, weil die
sich mit einem einzelnen Byte darstellen lassen.

   Dim kinder As String = "5"
 
   Dim bytKinder As Byte
   If Not Byte.TryParse(kinder, bytKinder) Then
       MsgBox("Seltsame Eingabe - Zahl erforderlich (0-255)!")
   End If
Es sollte statt dessen per Integer.Tryparse eine Überprüfung
auf Ganzzahligkeit der Eingabe stattfinden.
Aber eine Verwendung des Datentyps Byte ist auch möglich, falls
das ausdrücklich verlangt wird. Allerdings wird dieser Typ
gewöhnlich für die Verarbeitung von Folgen von Binärdaten verwendet.

Und danach - irgend so was:
If Integervariable > 10 orelse Integervariable < 0 then
   msgbox("unplausible Eingabe (bitte zwischen 0 und 10 eingeben")
End If
Schnell hingeschlampt ...
   Dim intKinder As Integer
 
    If Not Integer.TryParse(kinder, intKinder) Then
       MsgBox("Seltsame Eingabe - positive Ganz-Zahl erforderlich")
    End If
 
    Dim r As MsgBoxResult
 
    If (intKinder > 10 OrElse intKinder < 0) Then
       r = MsgBox("Bitte Zahl zwischen 0 und 10 eingeben", 
           MsgBoxStyle.OkCancel Or MsgBoxStyle.Exclamation)
 
       If r = MsgBoxResult.Cancel Or intKinder > 255 Then Exit Sub
    End If
Alternativ wäre z.B. auch UShort als numerischer Variablentyp nutzbar.

Beitrag wurde zuletzt am 21.04.19 um 15:39:56 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Select Case of. If-Anweis. mit Messagebox 
Autor: sv00010
Datum: 21.04.19 18:31

theGodfather schrieb:
Zitat:

Hallo zusammen,
bytKinderzahl = Me.txtKinder

Select Case Me.txtKinder


Als erstes mal solltst du den TextBox-Inhalt einer String-Variable zuweisen.

Dim strContent_TextBox As String = Me.txtKinder
Danach solltest du dann überprüfen, ob der String leer ist.
Mit System.String.IsNullOrEmpty

Wenn der String nicht leer ist, dann mit Microsoft.VisualBasic.Information.IsNumeric überprüfen,
ob der Inhalt überhaupt numerisch ist (also ohne Buchstaben).

Erst danach den Inhalt der TextBox in einen numerischen Typen umwandeln z.B. Byte wie im Code.

Dein Problem ist, dass der Code zwar funktioniert, aber nur weil implizit konvertiert wird.
Für den Anfang geht das, aber schön ist das nicht.

Beitrag wurde zuletzt am 21.04.19 um 18:32:28 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Select Case of. If-Anweis. mit Messagebox 
Autor: Manfred X
Datum: 21.04.19 19:44

Hallo!

Wieso "Isnumeric"?
Diese Methode testet auf Doublewerte.
Es gibt in "Net" typspezifische Parser. Siehe meinen Beitrag.
(Es könnte allerdings sein, daß der Fragesteller VB6 verwendet.)

Eine Textbox.Text-Eigenschaft enthält bereits einen String.
Insofern ist eine weitere Zuweisung nicht erforderlich.
Die NullorEmpty-Prüfung wird in den Parsern berücksichtigt.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Select Case of. If-Anweis. mit Messagebox 
Autor: theGodfather
Datum: 21.04.19 20:37

Hallo Manfred X und sv00010,

vorab Danke für die schnelle Unterstützung.

Ich versuche über Access VBA Version 7.1 ein Formular mit einem Eingabefeld (mit der Frage nach der Anzahl der Kinder) und einem Button die genannten Befehle zu programmieren.

Dabei muss ich als Hausaufgabe leider bei der Byte-Version bleiben so absurd es auch klingen mag.

d.h
Dim bytKinderzahl As Byte   
    bytKinderzahl = Me.txtKinder
müssen im Code bleiben.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Select Case of. If-Anweis. mit Messagebox 
Autor: Manfred X
Datum: 21.04.19 20:51

Achso VBA - nicht meine Spezialität, aber so sollte es gehen:

Dann kannst Du mit "IsNumeric" zunächst prüfen, ob ein Zahlenwert vorliegt.
Falls ja: Mit der CDbl-Funktion den String in Double wandeln.
Danach muß Du auf >=0 und <= 255 prüfen
Falls ja: Du mußt die Differenz zwischen Fix(Wert) und CDBL(Wert) prüfen
Falls absolute Differenz kleiner 0.00001: Verwende den mit CByte gewandelten FIX-Wert, sonst Abbruch
Falls > 10: Msgbox mit Meldung, ob dieser Wert korrekt ist / Rückgabe auswerten

Beitrag wurde zuletzt am 21.04.19 um 20:57:15 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Select Case of. If-Anweis. mit Messagebox 
Autor: theGodfather
Datum: 21.04.19 21:08

Danke Manfred,

so klappts
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2019 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel