Hahne Geschrieben 4. Juni 2008 Geschrieben 4. Juni 2008 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!
Hahne Geschrieben 4. Juni 2008 Autor Geschrieben 4. Juni 2008 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; }
Cadpax Geschrieben 4. Juni 2008 Geschrieben 4. Juni 2008 Jap, klappt so. Allerdings empfehle ich dir &&, wobei sich das eig. nur für große Operationen wirklich rentiert, allerdings hab ich's mir so angewöhnt. Unterschied kannst hier lesen M.f.G.
Cadpax Geschrieben 4. Juni 2008 Geschrieben 4. Juni 2008 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.
Hahne Geschrieben 4. Juni 2008 Autor Geschrieben 4. Juni 2008 sry hatte mich mti dem | (oder) und & (und) zeichen versehen. das | muss natürlich geändert werden in &. ich will ja nich das alle ausgefüllt werden sondern das mindestens ein feld ausgefüllt wird.
Cadpax Geschrieben 4. Juni 2008 Geschrieben 4. Juni 2008 sry hatte mich mti dem | (oder) und & (und) zeichen versehen. das | muss natürlich geändert werden in &. ich will ja nich das alle ausgefüllt werden sondern das mindestens ein feld ausgefüllt wird. Dann ist ja alles gut. ;-)
Hahne Geschrieben 4. Juni 2008 Autor Geschrieben 4. Juni 2008 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?
U-- °LoneWolf° Geschrieben 4. Juni 2008 Geschrieben 4. Juni 2008 in dem du dien statemnet je nach übergebenen parametern zusammen baust
Hahne Geschrieben 4. Juni 2008 Autor Geschrieben 4. Juni 2008 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
SoL_Psycho Geschrieben 4. Juni 2008 Geschrieben 4. Juni 2008 /edit: Gelöscht da geistige Umnachtung meinerseits
U-- °LoneWolf° Geschrieben 4. Juni 2008 Geschrieben 4. Juni 2008 (bearbeitet) 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 4. Juni 2008 von U[[ °LoneWolf°
Hahne Geschrieben 4. Juni 2008 Autor Geschrieben 4. Juni 2008 Stimmt das ist ne gute Idee! Weiss auchs chon wie ich das am Besten umsetze. Besten Dank!
Hahne Geschrieben 5. Juni 2008 Autor Geschrieben 5. Juni 2008 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.
Honkytonk Geschrieben 5. Juni 2008 Geschrieben 5. Juni 2008 Kannst übrigens hinters "WHERE" auch die Zusatzbedingung "1=1" packen und dann immer "AND" + Klausel setzen. Spart einige nextValue-Verschachtelungen... Beispiel: SELECT * FROM Blubb WHERE 1=1 AND Vorname='xyz' Gruß, Honky
U-- °LoneWolf° Geschrieben 5. Juni 2008 Geschrieben 5. Juni 2008 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
Hahne Geschrieben 5. Juni 2008 Autor Geschrieben 5. Juni 2008 (bearbeitet) 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 5. Juni 2008 von Hahne
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden