Laden...

2 Suchfelder, 2 ComboBoxen --> Problem

Erstellt von rs4 vor 19 Jahren Letzter Beitrag vor 19 Jahren 2.436 Views
R
rs4 Themenstarter:in
87 Beiträge seit 2005
vor 19 Jahren
2 Suchfelder, 2 ComboBoxen --> Problem

Hallo allerseits!

Ich stehe irgendwie an, und sehe den Wald vor lauter Bäumen nicht mehr!

Ich habe 2 Textboxen, welche als Suchfelder fungieren. Dann hab ich 2 ComboBoxen, welche mit den Feldnamen der Tabelle versehen sind, damit ich die Suche eingrenzen kann. Diese geben auch den Datentyp der Spalte zurück, damit zusätzlich noch Zeichenbeschränkung in den Textfeldern implementiert werden kann. (Dies ist hier jedoch nur sekundär).

Mein Problem ist jetzt, dass ich es nicht ganz zum laufen bringe. Z.B. wenn ich ein Suchfeld leer lasse, geht gar nix... Den Teil mit nach Strings suchen, bring ich irgendwie auch nicht hin...

Hier mal den Code:

private void search(object sender, System.EventArgs e)
		{
			//Text aus der 1. Textbox wird in eien Variable gespeichert
			string search_result1 = this.textBox1.Text;
			string search_result2 = this.textBox2.Text;

			//Where Bedingung aus ComboBoxen werden in Variablen gespeichert
			string where_result1 = this.comboBox1.Text;
			string where_result2 = this.comboBox2.Text;

			if(this.Datatype1 == "System.Int32" && this.Datatype2 == "System.Int32")
			{
				//Dies sollte die Suchabfrage füt numerische Werte 
				//über beide Suchfelder mit AND-Verknüpfung darstellen
				if(this.textBox1.Text != "" && this.textBox2.Text != "")
				{
					db.OBST_LoadTable("SELECT * FROM " + this.comboBox3.Text + " WHERE " + where_result1 + " = " + search_result1
						+ " AND " + where_result2 + " = " + search_result2,  this.comboBox3.Text);
				}

				if(this.textBox1.Text == "" || this.textBox2.Text == "")
				{
					db.OBST_LoadTable("SELECT * FROM " + this.comboBox3.Text + " WHERE " + where_result1 + " = " + search_result1,  this.comboBox3.Text);
				}
			}

Mich interessiert jetzt, bin ich völlig auf dem Holzweg, oder fehlt noch etwas kleines?? Wäre froh wenn jemand mir kurze Hilfestellung geben könnte, damit ich neue Ideen habe, und das Problem endlich in den Griff kriege!

Danke und Grüsse

rs4

R
rs4 Themenstarter:in
87 Beiträge seit 2005
vor 19 Jahren

Etwas habe ich doch rausgefunden, habe auch ein paar Minuten Pause gemacht:

Der Code sieht nun so aus:

if(this.Datatype1 == "System.Int32" && this.Datatype2 == "System.Int32")
			{
				//Dies sollte die Suchabfrage füt numerische Werte 
				//über beide Suchfelder mit AND-Verknüpfung darstellen
				if(this.textBox1.Text != "" && this.textBox2.Text != "")
				{
					db.OBST_LoadTable("SELECT * FROM " + this.comboBox3.Text + " WHERE " + where_result1 + " = " + search_result1
						+ " AND " + where_result2 + " = " + search_result2,  this.comboBox3.Text);
				}

				if(this.textBox1.Text != "" || this.textBox2.Text == "")
				{
					db.OBST_LoadTable("SELECT * FROM " + this.comboBox3.Text + " WHERE " + where_result1 + " = " + search_result1,  this.comboBox3.Text);
				}

				if(this.textBox1.Text == "" || this.textBox2.Text != "")
				{
					db.OBST_LoadTable("SELECT * FROM " + this.comboBox3.Text + " WHERE " + where_result2 + " = " + search_result2,  this.comboBox3.Text);
				}
			}

Jetzt stellt sich das Problem, dass wenn ich nix in die Textfelder eingebe, eine Fehlermeldung produziert wird! Jemand ne Idee wie ich dies abfangen kann?

C
122 Beiträge seit 2004
vor 19 Jahren

mach ein if um den ganzen code mit der Prüfung ob beide Felder leer sind

if(this.textBox1.Text != "" || this.textBox2.Text != "")
{
   //hier der Code
}
else
{
 MessageBox.Show("Sie haben kein Feld ausgefüllt.");
}

mfg

Zwei Dinge sind unendlich: Das Universum und die menschliche Dummheit. Aber beim Universum bin ich mir nicht ganz sicher. - Albert Einstein

R
rs4 Themenstarter:in
87 Beiträge seit 2005
vor 19 Jahren

👍Vielen Dank für deine Hilfe!

Die Fehlermeldung ist nun weg!

Puh...Endlich mal etwas weiter. Nacher versuche ich die Suche nach den Strings einzubinden. Kann durchaus sein, dass ich mich nochmal melde... 😁

Vielen Dank nochmal für die Unterstützung!

Gruss rs4

R
rs4 Themenstarter:in
87 Beiträge seit 2005
vor 19 Jahren

Also ich habe mal den Mittag damit verbracht, dass alles kompakter zu gestalten.

Ich habe noch eine AND/OR Suchauswahlmöglichkeit reingebastelt. Jetz kommts...... Es läuft nicht!! 🙁

Meiner Meinung nach, müsste der Code das gleiche machen, wei der Code zuvor:

Hier mein ganzer Stolz (Der noch nicht läuft):

private void search(object sender, System.EventArgs e)
		{
			//Text aus den Textboxen wird in eien Variable gespeichert
			string search_result1 = this.textBox1.Text;
			string search_result2 = this.textBox2.Text;

			//Verknüpfungsabfrage Variabel
			string gating = " AND ";

			//Gänsefüsschen
			if(Datatype1 == "System.String")
			{
				search_result1 = "'" + search_result1 + "'";
			}
			if(Datatype2 == "System.String")
			{
				search_result2 = "'" + search_result2 + "'";
			}

			//Verknüpfung mit OR
			if(this.radioButton2.Checked == true)
			{
				gating = " OR ";
			}

			//Suche
			if(this.textBox1.Text != "" && this.textBox2.Text != "")
			{
				db.OBST_LoadTable("SELECT * FROM " + this.comboBox3.Text + " WHERE " + this.comboBox1.Text + " = " + search_result1  + gating  + this.comboBox2.Text + " = " + search_result2,  this.comboBox3.Text);
			}

			if(this.textBox1.Text != "" && this.textBox2.Text == "")
			{
				db.OBST_LoadTable("SELECT * FROM " + this.comboBox3.Text + " WHERE " + this.comboBox1.Text + " = " + search_result1,  this.comboBox3.Text);
			}

			if(this.textBox2.Text == "" && this.textBox2.Text == "")
			{
				db.OBST_LoadTable("SELECT * FROM " + this.comboBox3.Text + " WHERE " + this.comboBox2.Text + " = " + search_result2,  this.comboBox3.Text);
			}

			//Hier werden die Suchresultate im Datagrid ausgeben.
			db.OBST_BindGrid(this.comboBox3.Text);
		}

Kurze Erklärung dazu:

Ich habe mir folgendes überlegt: M
Der User kann auswählen in welchem Feld er suchen will (Also ändern sich die Datantypen), dann kann er aussuchen ob OR/AND verknüpft werden soll, und ob er in einer oder beiden Suchfeldern Text deponieren will.

Darum habe ich diese veränderbaren Dinge in Variabeln gepackt.

Ich habe versucht umzustellen, und bin nun beim Hardcore-Pröbeln angelangt, darum hier nochmals die Bitte, falls jemand den besseren Durchblick hat als ich....

Danke für euer Bemühen

Grüsse

R
rs4 Themenstarter:in
87 Beiträge seit 2005
vor 19 Jahren

Ok, habs fürs erste schon gesehen:

Meine letzte if-Abfrage ist ja der Hammer.... 😁

Ok, dieses Problem wäre schon gelöst, läuft zwar alles noch nicht so recht, aber ich bin wieder auf Kurs!

Danke trotzdem allen!

Grüsse

4.221 Beiträge seit 2005
vor 19 Jahren

Dein Code öffnet so aber Tür und Tor für SQL-Injection....

Was ist das ?

--> http://www.codeproject.com/cs/database/SqlInjectionAttacks.asp

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

R
rs4 Themenstarter:in
87 Beiträge seit 2005
vor 19 Jahren

Oh oh...

Danke für den Hinweis...Müsste man schon beachten, wenn andere damit arbeiten würden, ich brauche es jedoch nur lokal für mich...

Werde es trotzdem abändern, lernen schadet ja nie... 😁

Grüsse