Категории из 2 ComboBox, влияющих на третий Combobox для datagridview с SQL

Кратко рассказывать

Мне нужно что-то вроде «SELECT companyName FROM table, где mainCategory = firstcombobox и подкатегория = secondcombobox», как я могу выполнить запрос sql?

========================== Длинная история

Я создал форму с рабочим кодированием, но мне нужна дополнительная помощь.

В некоторой степени я застрял в попытке выяснить, как разрешить третье значение combobox, определяемое первым и вторым.

и то, что я хотел, это что-то вроде того, чтобы получить значение главной категории и подкатегории для создания списка третьего поля со списком.

Мне просто нужен SQL-запрос, например: «SELECT companyName FROM table, где maincategory = firstcombobox и подкатегория = secondcombobox»

а затем отображает название компании в рамках выбора основной и подкатегории.

Как это :

Основная форма

Для основной категории и подкатегории я работаю с этим кодом. Этот код также включает в себя 3-й код ComboBox, который теперь работает без первого и второго combobox, прикрепленных к 3-му коду.

public partial class User : Form { Dictionary<string, List<string>> Category = new Dictionary<string, List<string>>(); DataSet ds1; public User() { InitializeComponent(); } private void User_Load(object sender, EventArgs e) { SqlConnection conn = new SqlConnection(); conn.ConnectionString = "Data Source=\\SQLEXPRESS;Initial Catalog=master;Integrated Security=True"; conn.Open(); SqlDataAdapter daMain = new SqlDataAdapter("SELECT * FROM MAINCATE", conn); ds1 = new DataSet(); daMain.Fill(ds1, "Maincate"); DataTable dt = ds1.Tables["MAINCATE"]; foreach (DataRow dr in dt.Rows) { List<string> SubCats = new List<string> { dr["Subcat1"].ToString(), dr["Subcat2"].ToString(), dr["Subcat3"].ToString(), dr["Subcat4"].ToString() }; Category.Add(dr["mainCate"].ToString(), SubCats); mainCatU.Items.Add(dr["mainCate"].ToString()); } mainCatU.DropDownStyle = ComboBoxStyle.DropDownList; mainCatU.Enabled = true; subCatU.DropDownStyle = ComboBoxStyle.DropDownList; //**Code for third combobox** SqlDataAdapter daSearch = new SqlDataAdapter("SELECT cName FROM ComDet", conn); DataTable dt1 = new DataTable(); ListU.DataSource = dt1; daSearch.Fill(dt1); ListU.ValueMember = "cName"; ListU.DisplayMember = "cName"; ListU.DropDownStyle = ComboBoxStyle.DropDownList; ListU.Enabled = true; //**----------------------** conn.Close(); } private void mainCatU_SelectedIndexChanged(object sender, EventArgs e) { if(Category.ContainsKey(mainCatU.SelectedItem.ToString())) { subCatU.DataSource = Category[mainCatU.SelectedItem.ToString()]; } } 

и базы данных показаны:

dbo.MAINCATE MAINCATE

dbo.ComDet ComDet

и код button « View Selected Company :

 private void searchBtn_Click(object sender, EventArgs e) { SqlConnection conn = new SqlConnection(); conn.ConnectionString = "Data Source=PEWPEWDIEPIE\\SQLEXPRESS;Initial Catalog=master;Integrated Security=True"; conn.Open(); SqlDataAdapter daS = new SqlDataAdapter("select cName, cDetails, cDetails2 from ComDet where cName = @cName", conn); daS.SelectCommand.Parameters.Add("@cName", SqlDbType.VarChar).Value = ListU.SelectedValue; DataTable dts3 = new DataTable(); daS.Fill(dts3); dataGridView1.DataSource = dts3.DefaultView; dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect; conn.Close(); } 
  • снова, прямо сейчас третий комбинированный блок кодируется для запуска без основной категории и подкатегории

========================

Answered – создала кнопку под названием поиск и взяла кодировку из загрузки формы в кнопку, добавленную с помощью SQLCon, и добавила SQLQuery.

Thx ребята .. 🙂

 private void button2_Click_1(object sender, EventArgs e) { SqlConnection conn = new SqlConnection(); conn.ConnectionString = "Data Source=PEWPEWDIEPIE\\SQLEXPRESS;Initial Catalog=master;Integrated Security=True"; conn.Open(); string myRequest = "SELECT cName FROM ComDet where mainCate = '" + mainCatU.SelectedItem.ToString() + "' and Subcat = '" + subCatU.SelectedItem.ToString() + "'"; SqlDataAdapter daSearch = new SqlDataAdapter(myRequest, conn); DataTable dtSea = new DataTable(); ListU.DataSource = dtSea; daSearch.Fill(dtSea); ListU.ValueMember = "cName"; ListU.DisplayMember = "cName"; ListU.DropDownStyle = ComboBoxStyle.DropDownList; ListU.Enabled = true; } 

Попробуйте вызвать следующую функцию в событии изменения SelectedValue для mainCatU и subCatU :

 private void SetCompanyList() { if (string.IsNullOrEmpty(Convert.ToString(mainCatU.SelectedValue)) || string.IsNullOrEmpty(Convert.ToString(subCatU.SelectedValue))) return; SqlConnection conn = new SqlConnection(); conn.ConnectionString = "Data Source=\\SQLEXPRESS;Initial Catalog=master;Integrated Security=True"; conn.Open(); SqlDataAdapter daMain = new SqlDataAdapter("SELECT cName FROM ComDet where mainCate = @mainCat subCat = @subCate", conn); daMain.SelectCommand.Parameters.Add("@mainCat", SqlDbType.VarChar).Value = mainCatU.SelectedValue; daMain.SelectCommand.Parameters.Add("@subCate", SqlDbType.VarChar).Value = subCatU.SelectedValue; DataTable _table = new DataTable(); daMain.Fill(_table); ListU.DataSource = _table; } 

вы должны использовать следующий запрос:

  SELECT companyName FROM table where mainCategory = '" + mainCatU.selectedValue + "' and subcategory = '" + subCatU.selectedValue + "'"