Entwickler-Ecke

Sonstiges (.NET) - If-Schleife


bergrath - Di 13.11.07 07:59
Titel: If-Schleife
Hallo Leute.
Ich habe mal ne Frage und zwar wollte ich folgendes wissen. Ich überprüfe die Werte einer DataTable mit einer If-Schleife. Ich prüfe eine Spalte in der nur die Werte 3,5,W,E stehen sollen. Meine If-Schleife sieht folgendermaßen aus:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
 foreach (DataRow row in PVSDataTable.Rows)
                    {
                        if (row["21/22"].ToString() != "GC")
                        {
                            MessageBox.Show("Fehler");
                        }
                        if (row["23"].ToString() != "D")
                        {
                            MessageBox.Show("Kein C307");
                        }

                        if ((row["24"].ToString() != "3") | (row["24"].ToString() != "5") | (row["24"].ToString() != "W") | (row["24"].ToString() != "E"))
                        {
                            MessageBox.Show("fehler in Spalte 24");
                        }
                   




                    }
                    MessageBox.Show("Okay");
            }}


Nun meine Frage: Die Werte meiner DataTable haben alle die Werte 3,5,W,E , aber ich bekomme trotzdem die MessageBox mit der Fehlermeldung angezeigt. Es ist doch aber so, daß zuerst alle Bedingungen in der if-Schleife geprüft werden, also daß immer ein Wert zutrifft. Wieso bekomme ich dann immer die Fehlermeldung?


Für Hinweise wäre ich sehr dankbar.

MfG


Moderiert von user profile iconjasocul: Topic aus C# - Die Sprache verschoben am Di 13.11.2007 um 08:23


JüTho - Di 13.11.07 09:24

Zunächst einmal: if-Schleife ist Quatsch. Schleifen sind for, foreach, while usw. if ist eine Anweisung.

Überlege doch bitte, was Deine if-Anweisung prüfen soll: Wenn der Wert "3" ist, dann ist die Abfrage "ungleich 5" wahr; also wird die MessageBox aufgerufen. Du willst die MessageBox aber haben, wenn der Wert "ungleich 3" UND "ungleich 5" usw. ist.

Gruß Jürgen


bergrath - Di 13.11.07 09:46

Hi. Danke für die Antwort. Ist mir auch aufgefallen. Deswegen habe ich meinen Code geändert und die Bedingungen mit UND verknüpft, aber ich erhalte weiterhin die Fehlermeldung. Ich habe die Bedingungen auf != gesetzt ( also z.B. !=3) und habe mit && verknüpft, aber es funktioniert nicht.

Die MessageBox wird doch ausgelöst, sobald die Bedingung true ist, oder?

Was muss ich da anders machen?


Für Hinweise wäre ich sehr dankbar.

MfG


JüTho - Di 13.11.07 15:35

Was machst Du eigentlich mit:

C#-Quelltext
1:
row["24"].ToString()                    

Lautet wirklich der Name der Spalte "24", oder ist es nicht eher die Nummer der Spalte?

Von welchem Datentyp ist die Spalte? Kannst Du direkt String oder Char vergleichen?

Übrigens: Wenn das Problem auch nach einer Änderung besteht, ist es im Zweifelsfall besser, den geänderten Code neu zu zitieren.

Jürgen


Hajoseb - Sa 17.11.07 18:35

user profile iconJüTho hat folgendes geschrieben:
Zunächst einmal: if-Schleife ist Quatsch. Schleifen sind for, foreach, while usw. if ist eine Anweisung.
...
Gruß Jürgen


Siehe auch http://www.if-schleife.de

:D