2013-07-17 3 views
0

안녕하세요 여러분,이 INSERT INTO와 SELECT를 사용하는 SqlCommands를 가지고 있습니다. prikaz2 (INSERT INTO) 조건에 CHECKBOX에 의해 선택된 행만 INSERT INTO로 추가해야합니다.SqlCommand checkBox에 의해 선택된 행에 대해서만 INSERT INTO가 발생합니다.

나는 조용한 오랜 시간 동안 이것에 대해 궁금해했지만 내 코드 중 누구도 그렇게 할 수 없었습니다.

저에게 뭔가 제안 해 주시겠습니까? 제 의견으로는 "어디"를 추가해야합니까?

SqlCommand comm = new SqlCommand("Select MAX (ID_K) FROM klient", spojeni); 
      spojeni.Open(); 
      int max = (int)comm.ExecuteScalar(); 
      spojeni.Close(); 

      for (int i = 0; i < dtg_ksluzby.Rows.Count; i++) 
      { 
       SqlCommand prikaz2 = new SqlCommand("INSERT INTO klisluz(text,pocet,akce,subkey) values(@val1,@val2,@val3,@val4) ", spojeni); // here I need to add condition to INSERT INTO only selected rows 
       prikaz2.Parameters.AddWithValue("@val1", dtg_ksluzby.Rows[i].Cells["text"].Value); 
       prikaz2.Parameters.AddWithValue("@val2", dtg_ksluzby.Rows[i].Cells["pocet"].Value); 
       prikaz2.Parameters.AddWithValue("@val3", dtg_ksluzby.Rows[i].Cells["akce"].Value); 
       prikaz2.Parameters.AddWithValue("@val4", max + 1);      spojeni.Open(); 
       prikaz2.ExecuteNonQuery(); 
       spojeni.Close(); 
    } 
    private void dtg_ksluzby_CellValueChanged(object sender, 
            DataGridViewCellEventArgs e) 

이 얼마나 두 개의 문 합류에 대해 row.e

 foreach (DataGridViewRow row in dtg_ksluzby.Rows) 
    { 

     DataGridViewCheckBoxCell chk1 = row.Cells[3] as DataGridViewCheckBoxCell; 
     if (Convert.ToBoolean(chk1.Value) == true) 
     { 

      MessageBox.Show("Služba byla vybrána"); 
     } 
     else 
     { 
     } 
    } 

답변

2

그래서 dtg_ksluzby.Rows를 통해 foreach는 반복하는과 루프에 대한 귀하를 교체하고이 루프 내부에 체크되어 있는지 확인하기 위해 검사를 수행.

foreach (DataGridViewRow row in dtg_ksluzby.Rows) 
     { 
      if (Convert.ToBoolean(row.Cells[3].Value) == true) // check this line here 
      { 
       SqlCommand prikaz2 = new SqlCommand("INSERT INTO klisluz(text,pocet,akce,subkey) values(@val1,@val2,@val3,@val4) ", spojeni); 
       prikaz2.Parameters.AddWithValue("@val1", row.Cells["text"].Value); 
       prikaz2.Parameters.AddWithValue("@val2", row.Cells["pocet"].Value); 
       prikaz2.Parameters.AddWithValue("@val3", row.Cells["akce"].Value); 
       prikaz2.Parameters.AddWithValue("@val4", max + 1);      
       spojeni.Open(); 
       prikaz2.ExecuteNonQuery(); 
       spojeni.Close(); 
      } 
     } 
+0

글쎄, 버튼 클릭시 INSERT INTO가 있기 때문에이 작업을 수행해야합니다. 코딩을 도와 주시겠습니까? – Marek

+0

그렇지 않습니까? 나는 이것을 테스트하지 않았으므로 구문이 바뀌지 만 올바른 방향으로 당신을 가리켜 야 할 것입니다. – bhs

+0

글쎄 그것은 2 개의 오류를 말합니다 : 이름 "chk1"현재 컨텍스트에 존재하지 않습니다. 이름 "i"는 현재 상황에 존재하지 않습니다. – Marek

2

을 선택하는 내 코드?

INSERT INTO klisluz(text,pocet,akce,subkey) 
VALUES (@val1, 
     @val2, 
     @val3, 
     COALESCE((Select MAX (ID_K) FROM klient) + 1, 1) 
+0

이것은 좋지만 선택한 행에만 삽입하려면 어떻게해야합니까? – Marek