2016-06-03 2 views
1

Я пытаюсь подсчитать количество продуктов, как я могу это сделать (на изображении)? Надеюсь, вы меня поняли. Мой код не работает.
Это мой код:
Как отобразить количество продукта?

private void button1_Click(object sender, EventArgs e) 
    { 
     int i=1; 
     SqlCommand seldb = new SqlCommand("Select * from Product where barcode=" + textBox1.Text, conn); 
     conn.Open(); 
     seldb.ExecuteNonQuery(); 
     SqlDataReader read = seldb.ExecuteReader(); 
     while (read.Read() == true) 
     { 
      dataGridView1.Rows.Add(read.GetValue(0), read.GetValue(1), read.GetValue(2), i); 
      for (int j=0;j<=dataGridView1.Rows.Count-1;j++) 
      { 
       if (textBox1.Text == dataGridView1.Rows[j].Cells[2].Value) 
       { 
        dataGridView1.Rows[j].Cells[3].Value = i; 
       } 
      } 
      i++; 
     } 
     conn.Close(); 
    } 

Не так: Not this

Как это сделать? How do this?

+0

Убедитесь, что передать это значение из текстового в качестве параметра, а не просто конкатенации строки вместе. Очень важно очищать ваши входы в вашу базу данных. –

ответ

2

Попробуйте изменить свой SQL-запрос, чтобы агрегировать ваши количества.

Замените команду на это.

SqlCommand seldb = new SqlCommand("Select ProductId, Name, Barcode, COUNT(*) as Quantity from Product where barcode =" + textBox1.Text + " Group By ProductId, Name, Barcode", conn); 

Вы должны быть фактически используя using заявление с тем, как хорошо.

Затем вы замените свои значения i на новую колонку Quantity.

Примечание: Не забывайте о Бобби Tables - http://bobby-tables.com/

+0

в Таблице продуктов там IdProduct, имя и штрих-код. но не количество – MSS

+0

в datagrid Я буду показывать кол-во имени, которое textBox1.Text == dataGridView1.Rows [j] .Cells [2] .Value – MSS

+0

Это правильное решение. Также он может использовать 'Count' вместо' Sum', а также использовать параметризованный запрос, чтобы избежать SQL Injection. +1. –

Смежные вопросы