VisualBasic Fehlerprüfung durch eigens definierte Fehler schläft fehl.

DenSe

Cadet 3rd Year
Registriert
Okt. 2016
Beiträge
35
Hallo,

ich habe hier eine Funktion geschrieben, die mir einen Barcode auf seine Richtigkeit prüft.

Code:
incoming = TextBox_Scan.Text
            wg = Microsoft.VisualBasic.Mid(incoming, 6, 3)
            If incoming.Length <> 11 Then
                MsgBox("Falscher Barcode, bitte erneut scannen", MsgBoxStyle.Critical, "JUFI-ERROR")
                TextBox_Scan.Clear()
                TextBox_Scan.Focus()
            ElseIf wg <> "130" Or wg <> "170" Or wg <> "003" Or wg <> "004" Or wg <> "005" Or wg <> "006" Or wg <> "007" Or wg <> "180" Or wg <> "140" Or wg <> "670" Or wg <> "671" Or wg <> "672" Or wg <> "190" Or wg <> "160" Then
                MsgBox("Falscher Barcode, bitte erneut scannen", MsgBoxStyle.Critical, "JUFI-ERROR")
                TextBox_Scan.Clear()
                TextBox_Scan.Focus()
            ElseIf Microsoft.VisualBasic.Mid(incoming, 9, 1) <> "0" Or Microsoft.VisualBasic.Mid(incoming, 9, 1) <> "1" Then
                MsgBox("Falscher Barcode, bitte erneut scannen", MsgBoxStyle.Critical, "JUFI-ERROR")
                TextBox_Scan.Clear()
                TextBox_Scan.Focus()
            ElseIf Microsoft.VisualBasic.Right(incoming, 2) > vkid Then
                MsgBox("Falscher Barcode, bitte erneut scannen", MsgBoxStyle.Critical, "JUFI-ERROR")
                TextBox_Scan.Clear()
                TextBox_Scan.Focus()
            End If

Der Barcode ist wiefolgt aufgebaut: Bsp.: 00200130001

00200 = Preis in dem Fall 2,00€
130 = Warengruppe
0 = Prüfziffer für Rabatte
01 = ID des aktuellen Verkaufstags

Mein Problem ist, wenn ich den o. g. Barcode manuell oder auch mit Barcodescanner dem Programm übergebe, wirft er mir bei der zweiten If-Abfrage, die die Warengruppe prüft, die Fehlermeldung aus.

Habe ich da irgendwo einen logischen Fehler? oder gibt es eine Möglichkeit, wie ich das eleganter lösen könnte?
Ich will auch nicht, dass das Programm dann eine Exception wirft, da man dann anschließend weiterscannen soll.

Vielen Dank für eure Hilfe.


Viele Grüße

DenSe:D
 
Bei or langt es ja, dass eins true ist und dann ist alles true
Schon das zweite Statement wg <> "170" ist ja true also bekommst du die Fehlermeldung

Würde die Warengruppen alle in eine Liste packen und dann mit exist oder nicht exist arbeiten - dass lässt sich auch sehr übersichtlich erweitern.
 
Zuletzt bearbeitet:
Das bedeutet, ich muss es mit XOR verknüpfen
:D

ich glaube das war zu einfach:cool_alt:
 
Ich würde dort ein AND nehmen ;)

Würde es auch mit einer Liste machen wie razzer es beschrieben hat.
 
In eine Liste packen, bedeutet in einem Array speichern?
 
und versuch mal den Namespace Microsoft.VisualBasic
zu vermeiden.

Nimm statt
Code:
Microsoft.VisualBasic.Mid(incoming, 9, 1)
lieber
Code:
incoming.SubString(...)

und
Code:
TextBox_Scan.Text.Trim()
löscht dir ggf. vorhandene und nicht gewollte Leerzeichen
 
Zurück
Oben