Zum Inhalt springen

komplexere IF-Abfrage in C#


Hahne

Empfohlene Beiträge

Hi!

Ich komme gerade irgendwie nciht darauf wie ich zwei if abfragen in eine packen kann.

dieses hier möchte ich vermeiden:


if(var1 > 0)

{

if(var2 > 0)

{

...

}

}

sonder ich möchte das gerne in einer haben. so ungefähr:

if((var1 > 0) & (var2 > 0))

{

...

}

ist sowas möglich? wäre super wenn ihr mir da weiterhelfen könntet!

Link zu diesem Kommentar
Auf anderen Seiten teilen

aaaah sry hab es schon selbst gelöst! naja für andere leute die auch mal so ein problem haben. so kann man die if-abfragen verknüpfen zu einer:


if ((txtNachname.Text.Length == 0) | (txtFirma.Text.Length == 0))

{

txtVorname.Text = "Fehler!";

return;

}

Link zu diesem Kommentar
Auf anderen Seiten teilen

aaaah sry hab es schon selbst gelöst! naja für andere leute die auch mal so ein problem haben. so kann man die if-abfragen verknüpfen zu einer:


if ((txtNachname.Text.Length == 0) | (txtFirma.Text.Length == 0))

{

txtVorname.Text = "Fehler!";

return;

}

*am kopf kratz* So kann es sein, dass eine Firma gegeben ist, aber der Nachname nicht, oder auch andersrum. ;-)

Schau dir mal die Seite an, die ich oben gepostet hab.

M.f.G.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Jetzt seh ich aber grad das ich noch ein weiteres Problem ahbe. Willa ber nicht extra wieder ein neuen thread aufmachen.

und zwar habe ich sozusagen einen filter gebaut wo cih nach dem vor bzw nachnamen suchen kann. meien sql abfrage dafür sieht wie folgt aus:

"SELECT Nachname, Vorname, Firma, Land, TelNr, GebDatum FROM TelNum WHERE Nachname='" + strNachname + "' OR Vorname='" + strVorname + "'";

Das Problem ist dass wenn ich OR drin habe ich alle Mitglieder bekomme die den selben Vor bzw nachnamen haben aber ich möchte wenn ich vor und nachname angegeben hab nur diesen einen benutzer haben. mit AND geht es auch nicht weil da gibt er wenn cih nur einen wert eingebe gar nichts aus. wie kann ich das mal realisieren?

Link zu diesem Kommentar
Auf anderen Seiten teilen

wie würdest du das denn machen? versteh das net ganz.

meinst du erst eien prüfung was der user alles eingegeben hat und aus dem ergebnis dieser prüfung (je nachdem was der user angegeben hat) die sql abfrage zusammenbasteln?

wenn du das so meinst wie würdest das denn prüfen? ich hab die ganze zeit select case im kopf aber wüsste jetzt auch net wie ich das damit realisieren könnte

Link zu diesem Kommentar
Auf anderen Seiten teilen

also mit case geht schon mal nicht weil mehrere felder sind die nicht entweder oder abgefragt werden.

hier mal ein beispiel


string sqlWhere="";

if(textbox1.value!="")

{

// geht nur weils der erste in der liste ist. bei den folgenden muss noch eine 

//abfrage dazu

sqlWhere+=" WHERE [Spaltenname]='"+textbox1.value+"' ";

}

if(textbox2.value!="")

{

if(sqlWhere!="")

{

sqlWhere+=" AND [Spaltenname]='"+textbox2.value+"' ";

}

else

{

sqlWhere+=" WHERE [Spaltenname]='"+textbox2.value+"' ";

}


}

...

so in etwa...

keine Ahnung ob der Code so ausführbar ist

wenn du deine Controlls in einer liste hats kannst du theoretisch auch ne schleife und ein Case verwenden. Dann würdest du die abfrage nach sqlWhere nur einmal inerhalb der schleife schreiben, aber das sollte aus meiner sicht klar sien

Bearbeitet von U[[ °LoneWolf°
Link zu diesem Kommentar
Auf anderen Seiten teilen

So habe die Prüfugn der Felder jetzt fertig und es Funktioniert alles wunderbar.

Keine Angst wenn ihr euch den Code anguckt!!! Es ist keine SQL-Injektion möglich da ich vorher schon mit den übergebenen Strings eine Prüfung gemacht habe ob in diesem illegale Zeichen drin sind. Sprich ich kann in diesen Strings ausschliesslich Buchstaben oder Zahlen haben!


//Definierung der einzelnen Variablen

        bool isNextValue = false;

        string SqlNachname = "";

        string SqlVorname = "";

        string SqlFirma = "";

        string SqlLand = "";


        //Prüfung welche Felder angegeben worden sind und ob es das erste

        //angegebene Feld im Formular ist.

        //Erstellung der individuellen SQL-Abfrage

        if (strNachname != "")

        {

                isNextValue = true;

                SqlNachname = " Nachname='" + strNachname + "'";

        }


        if (strVorname != "")

        {

            if (isNextValue == true)

            {

                SqlVorname = " AND Vorname='" + strVorname + "'";

            }

            else

            {

                isNextValue = true;

                SqlVorname = " Vorname='" + strVorname + "'";

            }

        }


        if (strFirma != "")

        {

            if (isNextValue == true)

            {

                SqlFirma = " AND Firma='" + strFirma + "'";

            }

            else

            {

                isNextValue = true;

                SqlFirma = " Firma='" + strFirma + "'";

            }

        }


        if (strLand != "")

        {

            if (isNextValue == true)

            {

                SqlLand = " AND Land='" + strLand + "'";

            }

            else

            {

                isNextValue = true;

                SqlLand = " Land='" + strLand + "'";

            }

        }

Eigentlich ist alles selbsterklärend trotzdem wollte ich noch einmal kurz die Geschichte mit dem isNextValue (true/false) erläutern.

Es ist lediglich eine Prüfung ob es der erste angegebene Wert im Formular ist oder nicht. Ich muss ja wissen ob ich eine AND davor setzen muss oder nicht. :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi nochmal @ Hahne:

zu dem:

...

Keine Angst wenn ihr euch den Code anguckt!!! Es ist keine SQL-Injektion möglich da ich vorher schon mit den übergebenen Strings eine Prüfung gemacht habe ob in diesem illegale Zeichen drin sind. Sprich ich kann in diesen Strings ausschliesslich Buchstaben oder Zahlen haben!

...

was machst du mit leuten mit hochkomma im namnen (ich glaub nent sich acson oder so ´)???

@HonkyTonk

nette idee werd ich mir merken das spart einige codezeilen

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich habe ja nich alle Symbole verboten. Die Symbole, die wir teilweise auch in Namen benötigen habe ich natürlich zugelassen so wie das Accent ( ´ ).

Was ich gesperrt habe sind Symbole die mir gefährlich werden könnten wie z.B. ' & ! = ; < > | u.s.w. Und sone Symbole kommen ganz sicher nicht in Namen vor. ;)

Aber auch wenn ich das Zeichen ´ rausfiltern würde, würde z.B. ein Buchstabe mit Accent (z.B. á ) angezeigt werden da das Symbol ja nciht mehr alleine ist sodnern in Kombination mit dem Buchstaben.

Bearbeitet von Hahne
Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...