2014-04-23 5 views
0

현재 버튼을 클릭 할 때 기능이 정상적으로 작동하는 INSERT INTO 문이 있습니다. 이 프로젝트에 대한 추가 요구 사항으로 인해 두 번째로 INSERT INTO 쿼리가 작동하지만 이제는 둘 다 서로 관련되어 있어야합니다. 다른 방법은 두 개의 새로운 열을 추가하기 때문에 예상되는 행을 복제하기 때문에 두 INSERT 쿼리를 모두 사용하여 하나의 INSERT INTO 문으로 만드는 방법은 무엇입니까? Informix 데이터베이스에있는 gridview에서매개 변수없이 INSERT INTO 문을 실행하십시오.

현재 INSERT INTO : 나는 아래 다음과 같은 쿼리를 게시 한

INSERT INTO brev_efile_user_doc_stats 
SELECT trans_nbr,received_on,description,register_action,sequence_id, reviewed_event_code,  
ROW_NUMBER() OVER(PARTITION BY trans_nbr 
ORDER BY trans_nbr,sequence_id) AS corrected_seq_id 
FROM brev_efile_user_doc_stats 
WHERE trans_nbr IS NOT NULL 
ORDER BY trans_nbr,sequence_id 
: (항상 정확하지 않습니다) XML에서 수정 순서를 표시하는 데 사용

private void btnInsert_Click(object sender, EventArgs e) 
{ 
OdbcDataAdapter da2 = new OdbcDataAdapter(); 

for (int i = 0; i < dataGridView2.Rows.Count; i++) 
{ 
String insertData = "INSERT INTO brev_efile_user_doc_stats (trans_nbr, sequence_id, received_on, description, register_action) VALUES (?,?,?,?,?)"; 

OdbcCommand cmd = new OdbcCommand(insertData, connection); 
cmd.Parameters.AddWithValue("@trans_nbr", dataGridView2.Rows[i].Cells[0].Value); 
cmd.Parameters.AddWithValue("@sequence_id", dataGridView2.Rows[i].Cells[1].Value); 
cmd.Parameters.AddWithValue("@received_on", dataGridView2.Rows[i].Cells[2].Value); 
cmd.Parameters.AddWithValue("@description", dataGridView2.Rows[i].Cells[3].Value); 
cmd.Parameters.AddWithValue("@register_action", dataGridView2.Rows[i].Cells[4].Value); 

    da2.InsertCommand = cmd; 

    try 
    { 
    connection.Open(); 
    cmd.ExecuteNonQuery(); 
      } 
      catch (Exception ex) 
      { 
       Console.WriteLine(ex.Message); 
      } 

      finally 
      { 
       connection.Close(); 
      } 
     } 
    } 

둘째 INSERT INTO

답변

1

UNION ALL을 사용하여 하나의 명령문에서 삽입을 수행 할 수 있어야한다고 생각합니다. 첫 번째 select에 두 번째 select 문과 동일한 수의 열 (이 경우 매개 변수)이 있는지 확인하십시오. @reviewed_event_code 및 @corrected_seq_id에 대한 추가 매개 변수를 추가했습니다. ODBCCommand 오브젝트에서 다른 매개 변수 값을 설정하는 것과 같은 f}으로 매개 변수 값을 설정해야합니다. 이게 도움이 되길 바란다!

INSERT INTO brev_efile_user_doc_stats 
SELECT @trans_nbr, @received_on, @description, @register_action, @sequence_id, @reviewed_event_code, @corrected_seq_id 
UNION ALL 
SELECT trans_nbr,received_on,description,register_action,sequence_id, reviewed_event_code, 
ROW_NUMBER() OVER(PARTITION BY trans_nbr ORDER BY trans_nbr, received_on) AS corrected_seq_id 
FROM brev_efile_user_doc_stats 
WHERE trans_nbr IS NOT NULL 
ORDER BY trans_nbr,corrected_seq_id 
+0

DataGridview 테이블에서 가져온 Values ​​()와 정확히 얼마나 작동합니까? – clerktech

+0

해결하려는 근본적인 문제를 문맥 상 완전히 이해할 수는 없지만 그 문은 gridview 행 매개 변수 값을 대체 한 다음 brev_efile_user_doc_stats 테이블에서 선택된 모든 추가 레코드를 삽입합니다. 아마도 이것은 근본적인 문제를 해결하지 못할 것입니다. 죄송합니다 – MDiesel

+0

이 XML은 데이터를 추출하는 악몽입니다. 순서 번호는 절대로 1,2,3이 아닙니다. 나는 그것이 1,9,10을하는 것을 보았다. 기본적으로, "trans_nbr"이 몇 번이나 나타나는지에 대한 중복 레코드 (해당 레코드가있는 경우)마다 시퀀스를 강제 실행합니다. – clerktech