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
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?
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
👍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
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
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
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...
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