2013-05-23 2 views
0

В моем ниже коде дают мне эту ошибкуНесколько GridView строк Вставки в Databse во время

ошибки моего GridView значения столбца текстового поля не вставляя в моего Databse parametere отсутствующего ошибка

try { 
    da=DateTime.Now; 

    foreach(DataGridViewRow row in dataGridView1.Rows) { 
     string SelectedText=Convert.ToString((row.Cells["article_name"] as DataGridViewComboBoxCell).FormattedValue.ToString()); 
     string SelectedText1=Convert.ToString((row.Cells["size_name"] as DataGridViewComboBoxCell).FormattedValue.ToString()); 
     string SelectedText2=Convert.ToString((row.Cells["color_name"] as DataGridViewComboBoxCell).FormattedValue.ToString()); 
     string SelectedText3=Convert.ToString((row.Cells["unit_name"] as DataGridViewComboBoxCell).FormattedValue.ToString()); 

     SqlCommand comm=new SqlCommand("abc", con); 
     con.Open(); 
     comm.Parameters.Add("@order_no", SqlDbType.NVarChar).Value="abc123"; 
     comm.Parameters.Add("@article_name", SqlDbType.NVarChar).Value=SelectedText; 

     //dataGridView1.Rows[i].Cells["article_name"].Value; 
     comm.Parameters.Add("@size_name", SqlDbType.NVarChar).Value=SelectedText1; 
     comm.Parameters.Add("@color_name", SqlDbType.NVarChar).Value=SelectedText2; 
     comm.Parameters.Add("@quantity", SqlDbType.Int).Value=row.Cells["quantity"].Value; 
     comm.Parameters.Add("@piece_carton", SqlDbType.Int).Value=row.Cells["pcs_carton"].Value; 
     comm.Parameters.Add("@no_of_carton", SqlDbType.Int).Value=row.Cells["no_carton"].Value; 
     comm.Parameters.Add("@unit_name", SqlDbType.NVarChar).Value=SelectedText3; 
     comm.Parameters.Add("@rate", SqlDbType.NVarChar).Value=row.Cells["rate"].Value; 
     comm.Parameters.Add("@ship_qty", SqlDbType.Int).Value=row.Cells["ship_qty"].Value; 
     comm.Parameters.Add("@date1", SqlDbType.DateTime).Value=da; 
     comm.Parameters.Add("@amount", SqlDbType.NVarChar).Value=row.Cells["amount"].Value; 

     //comm.CommandText = StrQuery; 
     db.insertprocedure(comm); 
    } 
} 
catch(SqlException ex) { 
    MessageBox.Show(ex.Message); 
} 
finally { 
    con.Close(); 
} 

Вот мой запрос

create proc abc 
@order_no varchar(50), 
@article_name varchar(500), 
@size_name varchar(100), 
@color_name varchar(100), 
@quantity int, 
@piece_carton int, 
@no_of_carton int, 
@unit_name varchar(50), 
@rate varchar(50), 
@ship_qty int, 
@date1 date, 
@amount varchar(50) 
as 
begin 
set @date1=CONVERT(varchar,@date1,1) 
insert into transaction_order(order_id,article_id,size_id,color_id,quantity,piece_carton,no_of_carton,unit_id,rate,ship_qty,date1,amount) 
values(@order_no,(select article_id from article_order where [email protected]_name),(select size_id from size where [email protected]_name),(select color_id from color where [email protected]_name),@quantity,@piece_carton,@no_of_carton,(select unit_id from unit where [email protected]_name),@rate,@ship_qty,@date1,@amount) 
end 

Вот моя функция insertprocedure этой функции в классе базы данных

 public void insertprocedure(SqlCommand txt) 
     { 
      DateTime da = new DateTime(); 

      try 
      { 
       da = DateTime.Now; 
       con.Open(); 
       txt.CommandType = CommandType.StoredProcedure; 
       txt.ExecuteNonQuery(); 

       con.Close(); 
      } 
      catch (Exception ex) { throw ex; } 
      finally { con.Close(); } 
     } 

> Here Is My Gridview TextBox Columns Added Code 
private void Form1_Load(object sender, EventArgs e) 
     { 
      string query = "SELECT article_name FROM article_order"; 
      DataTable dt = db.select_command(query); 
      BindingSource bi = new BindingSource(); 
      bi.DataSource = dt; 


      string query1 = "SELECT size_name FROM size"; 
      DataTable dt1 = db.select_command(query1); 
      BindingSource bi1 = new BindingSource(); 
      bi1.DataSource = dt1; 

      string query2 = "SELECT color_name FROM color"; 
      DataTable dt2 = db.select_command(query2); 
      BindingSource bi2 = new BindingSource(); 
      bi2.DataSource = dt2; 


      string query3 = "SELECT unit_name FROM unit"; 
      DataTable dt3 = db.select_command(query3); 
      BindingSource bi3 = new BindingSource(); 
      bi3.DataSource = dt3; 


      //string query4 = "SELECT order_no FROM master_order"; 
      //DataTable dt4 = db.select_command(query4); 
      //BindingSource bi4 = new BindingSource(); 
      //bi4.DataSource = dt4; 








      #region Gridview Columns 
      //Transaction Id 
      DataGridViewTextBoxColumn trans_id = new DataGridViewTextBoxColumn(); 
      trans_id.HeaderText = "ID"; 
      trans_id.Width = 50; 
      trans_id.DataPropertyName = "ID"; 
      trans_id.Name = "trans_id"; 
      dataGridView1.Columns.Add(trans_id); 

      //Order No. 

      //DataGridViewTextBoxColumn order_no = new DataGridViewTextBoxColumn(); 
      //order_no.HeaderText = "Order No"; 
      //order_no.Width = 100; 
      ////order_no.DataPropertyName = "yarn_name"; 
      //order_no.Name = "order_no"; 
      //dataGridView1.Columns.Add(order_no); 

      //query = "select yarn_name from yarn"; 
      //auto.autocomplete1(dataGridView1., textBox9.AutoCompleteCustomSource = namesCollection, query); 
      //DataGridViewTextBoxColumn order_no = new DataGridViewTextBoxColumn(); 
      //order_no.HeaderText = "Order No."; 
      //order_no.Width = 50; 
      //order_no.DataPropertyName = "order_no"; 
      //order_no.Name = "order_no"; 
      //dataGridView1.Columns.Add(order_no); 





      //Article Name 
      DataGridViewComboBoxColumn article_name = new DataGridViewComboBoxColumn(); 
      article_name.DataPropertyName = "Article Name"; 
      article_name.HeaderText = "Article Name"; 
      article_name.Name = "article_name"; 
      article_name.Width = 120; 

      article_name.DataSource = bi; 
      article_name.ValueMember = "article_name"; 
      //article_name.DisplayMember = "article_name"; 

      dataGridView1.Columns.Add(article_name); 
      //Size Name 
      DataGridViewComboBoxColumn size_name = new DataGridViewComboBoxColumn(); 
      size_name.DataPropertyName = "Size Name"; 
      size_name.HeaderText = "Size Name"; 
      size_name.Name = "size_name"; 
      size_name.Width = 120; 

      size_name.DataSource = bi1; 
      size_name.ValueMember = "size_name"; 
      ////size_name1.DisplayMember = "size_name"; 

      dataGridView1.Columns.Add(size_name); 

      //Color Name 
      DataGridViewComboBoxColumn color_name = new DataGridViewComboBoxColumn(); 
      color_name.DataPropertyName = "Color Name"; 
      color_name.HeaderText = "Color Name"; 
      color_name.Name = "color_name"; 
      color_name.Width = 120; 

      color_name.DataSource = bi2; 
      color_name.ValueMember = "color_name"; 
      //ColumnItem.DisplayMember = "ItemText"; 

      dataGridView1.Columns.Add(color_name); 

      //quantity 
      DataGridViewTextBoxColumn quantity = new DataGridViewTextBoxColumn(); 
      quantity.HeaderText = "Quantity"; 
      quantity.Width = 100; 
      quantity.DataPropertyName = "Quantity"; 
      quantity.Name = "quantity"; 
      dataGridView1.Columns.Add(quantity); 

      //Pcs/Carton 
      DataGridViewTextBoxColumn pcs_carton = new DataGridViewTextBoxColumn(); 
      pcs_carton.HeaderText = "Piece/Carton"; 
      pcs_carton.Width = 100; 
      pcs_carton.DataPropertyName = "Piece/Carton"; 
      pcs_carton.Name = "pcs_carton"; 
      dataGridView1.Columns.Add(pcs_carton); 

      //No Of Carton 
      DataGridViewTextBoxColumn no_carton = new DataGridViewTextBoxColumn(); 
      no_carton.HeaderText = "No Of Carton"; 
      no_carton.Width = 70; 
      no_carton.DataPropertyName = "No Of Carton"; 
      no_carton.Name = "no_carton"; 
      dataGridView1.Columns.Add(no_carton); 

      //unit name 
      DataGridViewComboBoxColumn unit_name = new DataGridViewComboBoxColumn(); 
      unit_name.DataPropertyName = "Unit Name"; 
      unit_name.HeaderText = "Unit Name"; 
      unit_name.Name = "unit_name"; 
      unit_name.Width = 120; 

      unit_name.DataSource = bi3; 
      unit_name.ValueMember = "unit_name"; 
      //ColumnItem.DisplayMember = "ItemText"; 

      dataGridView1.Columns.Add(unit_name); 
      //rate 
      DataGridViewTextBoxColumn rate = new DataGridViewTextBoxColumn(); 
      rate.HeaderText = "Rate"; 
      rate.Width = 70; 
      rate.DataPropertyName = "Rate"; 
      rate.Name = "rate"; 
      dataGridView1.Columns.Add(rate); 

      //amount 
      DataGridViewTextBoxColumn amount = new DataGridViewTextBoxColumn(); 
      amount.HeaderText = "Amount"; 
      amount.Width = 70; 
      amount.DataPropertyName = "Amount"; 
      amount.Name = "amount"; 
      dataGridView1.Columns.Add(amount); 

      //Ship quantity 
      DataGridViewTextBoxColumn ship_qty = new DataGridViewTextBoxColumn(); 
      ship_qty.HeaderText = "Ship Quantity"; 
      ship_qty.Width = 70; 
      ship_qty.DataPropertyName = "Ship Quantity"; 
      ship_qty.Name = "ship_qty"; 
      dataGridView1.Columns.Add(ship_qty); 
      #endregion 
     } 
+0

Вы используете любой триггер. – Rahul

+4

Эти опечатки не мотивируют людей отвечать на ваш вопрос. Пожалуйста, будьте осторожны. Где sql-запрос? –

+0

И вы хотите 1 результат из нескольких? Если только один, почему вы не пытаетесь поставить TOP 1 в SELECT? – AAlferez

ответ

0

Можем ли мы увидеть ваш запрос на выборку? кажется, что есть вложенный запрос, который возвращает более 1 значение значения

+0

У меня нет выбора запроса m просто вставка в databse dude, и я был опубликован весь мой код, который я использую в своей форме/gridview – naeemshah1

+0

@ naeemshah1 вы попробовали то, что AnnArbor87 сказал, что вы используете подзапросы при вставке »(выберите article_id из article_order, где article_name = @ article_name) (выберите size_id из size, где size_name = @ size_name) (выберите color_id из цвета, где color_name = @ color_name) "? Возможно, некоторые из ваших подзапросов возвращают более 1 значения – Allen

+0

, но это использование для получения идентификатора и вставки – naeemshah1

1

(@order_no,
(выберите article_id из article_order, где article_name = @ article_name),
(выбрать size_id от размера где size_name = @ size_name),
(выбрать color_id от цвета, где COLOR_NAME = @ COLOR_NAME), @ количестве, @ piece_carton, @ no_of_carton,
(выбрать из unit_id блок, где unit_name = @ unit_name),
@ скорости, @ ship_qty, @ date1, @ сумма)

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

0

Выполнить этот запрос:

select article_name,COUNT(*) from article_order GROUP BY article_name HAVING COUNT(*)>1 

Если он возвращает все строки, то ваша проблема в том, что у вас есть несколько статей в вашей таблице с тем же именем.

В качестве альтернативы, убедитесь, что у вас есть УНИКАЛЬНЫЙ ИНДЕКС по каждому из имени_имя, имени_цвет_имя, имени_и_имя и имени_различия. Если вы получаете ошибку при попытке создать этот индекс (потому что один обязательно даст вам ошибку), то вам нужно исправить это в соответствующей таблице, а затем создать индекс.

+0

thx bro i was solve эта ошибка, но у меня появилась новая ошибка, мои поля gridviewtextbox не вставляются, даже не получают значение – naeemshah1

+0

количество, скорость, количество, ship_qty это мой столбец gridviewtextbox, чтобы получить значение и вставить в базу данных – naeemshah1

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