/// <summary> /// Ermöglicht es nach bestimmten Kunden zu suchen bzw. alle Kunden aus der Datenbank anzeigen zu lassen. /// </summary> private void SearchKunden() { this.Cursor = Cursors.WaitCursor; KundeFilter filter = new KundeFilter(); filter.KundeId = tbxKundenNr.Text; filter.Name_Firma = tbxName.Text; filter.Matchcode = tbxMatchcode.Text; filter.Ort = tbxOrt.Text; filter.PLZ = tbxPLZ.Text; filter.Kategorie = cobKategorie.Text; filter.Status = cbxGesperrt.CheckState; filter.Query = filter.GetSqlQuery(filter); Func.FUebersicht.slKunde.Text = ""; // User hat keine Suchwerte eingegeben - Alle Kunden werden nach Bestätigung durch User aufgelistet if (filter.IsDefault) //if ((tbxKundenNr.Text == "") & (tbxMatchcode.Text == "") & (tbxName.Text == "") & (tbxOrt.Text == "") & (tbxPLZ.Text == "") & // (cbxGesperrt.CheckState == CheckState.Indeterminate) & (cobKategorie.Text == "")) { using (var dbContext = new DataBaseDataContext()) { int customerCount = dbContext.Kunde.Count(); if (customerCount > 0) { //this.Hide(); this.Cursor = Cursors.Default; DialogResult result = MessageBox.Show(string.Format("Es wurden insgesamt ( {0} ) Kunden gefunden.\nSollen diese alle angezeigt werden?", customerCount.ToString()), "Auswahl Kunden", MessageBoxButtons.YesNo, MessageBoxIcon.Question); // Bei Bestätigung des Dialoges werden alle Kunden aus der Datenbank angezeigt. if (result == DialogResult.Yes) { try { this.Cursor = Cursors.WaitCursor; using (var sqlconnection = new SqlConnection(Settings.Default.NorkaConnectionString)) { var command = new SqlCommand(filter.Query, sqlconnection); var adapter = new SqlDataAdapter(command); var table = new DataTable(); Func.FUebersicht.slKunde.Text = string.Format("{0} Datensätze gefunden.", adapter.Fill(table)); Func.FUebersicht.dgrKunden.Columns.Clear(); Func.FUebersicht.dgrKunden.Columns.Add(new DataGridViewCheckBoxColumn() { HeaderText = "Markieren" }); this.Cursor = Cursors.Default; Func.FUebersicht.dgrKunden.DataSource = table; } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } //Func.FUebersicht.dgrKunden.DataSource = dbContext.Kunde.Select(k => k); Func.FUebersicht.LastCustomerSearchQuery = filter.Query; } } } } else { try { this.Cursor = Cursors.WaitCursor; using (var sqlconnection = new SqlConnection(Settings.Default.NorkaConnectionString)) { var command = new SqlCommand(filter.Query, sqlconnection); var adapter = new SqlDataAdapter(command); var table = new DataTable(); Func.FUebersicht.slKunde.Text = string.Format("{0} Datensätze gefunden.", adapter.Fill(table)); Func.FUebersicht.dgrKunden.Columns.Clear(); Func.FUebersicht.dgrKunden.Columns.Add(new DataGridViewCheckBoxColumn() { HeaderText = "Markieren" }); this.Cursor = Cursors.Default; Func.FUebersicht.dgrKunden.DataSource = table; } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } //Func.FUebersicht.dgrKunden.DataSource = dbContext.Kunde.Select(k => k); Func.FUebersicht.LastCustomerSearchQuery = filter.Query; } // if (ValidateKundenNr()) // { // var sb = new StringBuilder("SELECT * FROM Kunde WHERE "); // if (tbxKundenNr.Text != "") // { // sb.AppendFormat("Kunde.KundeID LIKE \'%{0}%\' AND ", tbxKundenNr.Text); // } // if (tbxMatchcode.Text != "") // { // sb.AppendFormat("Kunde.Matchcode LIKE \'%{0}%\' AND ", tbxMatchcode.Text); // } // if (tbxName.Text != "") // { // sb.AppendFormat("Kunde.Name_Firma LIKE \'%{0}%\' AND ", tbxName.Text); // } // if (tbxOrt.Text != "") // { // sb.AppendFormat("Kunde.Ort LIKE \'%{0}%\' AND ", tbxOrt.Text); // } // if (tbxPLZ.Text != "") // { // sb.AppendFormat("Kunde.PLZ LIKE \'%{0}%\' AND ", tbxPLZ.Text); // } // if ((cbxGesperrt.CheckState == CheckState.Checked)) // { // sb.Append("Kunde.Status = \'gesperrt\' AND "); // } // if ((cbxGesperrt.CheckState == CheckState.Unchecked)) // { // sb.Append("Kunde.Status is null AND "); // } // if (cobKategorie.Text != "") // { // sb.AppendFormat("Kunde.Kategorie = \'{0}\'", cobKategorie.Text); // } // String query = sb.ToString(); // String j = query.Substring(query.Length - 4, 3); // if (j == "AND") // { // query = query.Substring(0, query.Length - 5); // } // Func.FUebersicht.LastCustomerSearchQuery = query; // try // { // using (var sqlconnection = new SqlConnection(Settings.Default.NorkaConnectionString)) // { // var command = new SqlCommand(query, sqlconnection); // var adapter = new SqlDataAdapter(command); // var table = new DataTable(); // Func.FUebersicht.slKunde.Text = string.Format("{0} Datensätze gefunden.", adapter.Fill(table)); // Func.FUebersicht.dgrKunden.Columns.Clear(); // Func.FUebersicht.dgrKunden.Columns.Add(new DataGridViewCheckBoxColumn() { HeaderText = "Markieren" }); // Func.FUebersicht.dgrKunden.DataSource = table; // } // } // catch (Exception ex) // { // MessageBox.Show(ex.ToString()); // } // } //} }
public String GetSqlQuery(KundeFilter k) { var sb = new StringBuilder(); String whereclause; String sql; foreach (var property in k.GetType().GetProperties()) { if (property.Name != "IsDefault" & property.GetValue(k,null) != null) { if (property.PropertyType != typeof(CheckState)) { sb.Append(property.GetValue(k, null)); } else { if ((CheckState)property.GetValue(k, null) != CheckState.Indeterminate) { string statusClause = (CheckState)property.GetValue(k, null) == CheckState.Checked ? "Kunde.Status = \'gesperrt\' AND " : "Kunde.Status is null AND "; sb.Append(statusClause); } } } } if (sb.Length > 0) { whereclause = sb.ToString().Substring(0, sb.Length - 4); sql = "SELECT KundeID, Anrede, Vorname, Name_Firma, Straße, AdressZusatz1, AdressZusatz2, PLZ, Ort, Land, Telefon2, Fax2, Mobil, Email2, Homepage, Matchcode, Kategorie, Status, Notiz FROM KUNDE WHERE " + whereclause; } else { sql = "SELECT KundeID, Anrede, Vorname, Name_Firma, Straße, AdressZusatz1, AdressZusatz2, PLZ, Ort, Land, Telefon2, Fax2, Mobil, Email2, Homepage, Matchcode, Kategorie, Status, Notiz FROM KUNDE"; IsDefault = true; } return sql; }