Cześć,
tworzę mały program w którym będę wyświtalał sumowane dane poszczególnych urzadzeń. do wyboru urzadzeń używam checkedListBox a do wyświetlania danych DatagridViiew1. Chcę mieć możliwość wyboru w checkedListBox1 jedno urządzenie lub kilka, checkedListBox1 wypełniam automatycznie łacząc się z bazą danych:
SqlCommand cmd = new SqlCommand("SELECT [VehicleId] ,[RegNo] FROM[TMSCLIENT4].[dbo].[Vehicle]", con);
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
sda.Fill(dt);
checkedListBox1.Items.Add("");
for (int i = 0; i < dt.Rows.Count; i++)
{
checkedListBox1.Items.Add(dt.Rows[i]["RegNo"].ToString());
}
Teraz chcę aby w zależności co wybierze użytkownik (1,2 czy więcej urzadzeń) wyświetliły sie dane poszczególnych urządzeń w DataGridView, dla zapytania z SQLa
SELECT
CAST(SUM(Weight) AS DECIMAL(10, 2)) AS 'Produkacja [t]',
VehicleId
FROM[TMSCLIENT4].[dbo].[vwConveyorScaleMinute]
WHERE VehicleId IN('1','2','4','7')
AND WorkDateTime BETWEEN '2021-09-01 01:00:00.000' AND '2021-09-01 23:00:00.000'
group by VehicleId
Gdzie '1','2','4','7' -- to właśnie urządzenia z checkedListBox1,,kod w c# wygląda tak:
con.Open();
SqlDataAdapter sqlData = new SqlDataAdapter
("SELECT CAST(SUM(Weight) AS DECIMAL(10, 2)) AS 'Produkacja [t]', VehicleId FROM[TMSCLIENT4].[dbo].[vwConveyorScaleMinute] WHERE VehicleId IN('" + checkedListBox1.Items + "','') AND WorkDateTime BETWEEN '2021-01-01 01:00:00.000' AND '2021-02-01 01:00:00.000' group by VehicleId", con);
DataTable dtbl = new DataTable();
sqlData.Fill(dtbl);
dataGridView1.DataSource = dtbl;
con.Close();
Próbowałem przez checkedListBox1.Items i różnych innych i nie mogę sobie z tym poradzić .