2016-07-20 3 views
-3

이 코드를 시도했지만 제대로 작동하지 않습니다 (첫 번째 값에 데이터베이스에 두 번째 값 추가가 삽입되지 않음). 프로 시저 또는 함수를 삽입 너무 많은 인수가 지정한이 표시된 오류 매개 변수를 저장 프로 시저 Sp_Sale_Dtl_Insert 필요하며, 매개 변수의 수의 수에 전달되는프로 시저 또는 함수 삽입에 지정된 인수가 너무 많습니다.

foreach (DataGridViewRow row in dgItems.Rows) 
{ 
    for (int i = 0; i < dgItems.Rows.Count; i++) 
    { 
     DataGridViewCellCollection c = dgItems.Rows[i].Cells; 

     //dtl.DOC_TYPE = type; 
     info1.DOC_NO = DOC_NO.Text; 
     info1.ITEM_CODE = c["cCode"].Value.ToString(); 
     info1.ITEM_DESC_ENG = c["cName"].Value.ToString(); 
     info1.UOM = c["cUnit"].Value.ToString(); 
     info1.PRICE = Convert.ToDecimal(c["cPrice"].Value.ToString()); 
     info1.QUANTITY = Convert.ToInt32(c["cQty"].Value.ToString()); 
     info1.ITEM_DISCOUNT = Convert.ToDecimal(c["cDisc"].Value.ToString()); 
     info1.DISC_TYPE = c["DiscTypes"].Value.ToString(); 
     info1.DISC_VALUE = c["DiscValues"].Value.ToString(); 
     info1.SERIALNO = c["SerialNos"].Value.ToString(); 
     info1.BRANCH = lg.Branch; 
     if (hasTax) 
     { 
      info1.ITEM_TAX_PER = Convert.ToDecimal(c["cTaxPer"].Value.ToString()); 
      info1.ITEM_TAX = Convert.ToDecimal(c["cTaxAmt"].Value.ToString()); 
     } 
     if (hasBatch) 
     { 

      info1.BATCH = c["cBatch"].Value.ToString(); 
      info1.EXPIRY_DATE = DateTime.ParseExact(c["cExpDate"].Value.ToString(), "dd/MM/yyyy", null).ToString("MM/dd/yyyy"); 
     } 
     //cmd.CommandText += " UNION ALL "; 
     dtl.Insertdtl_Meth(info1); 
    } 
} 
+0

문제는 아마도 'Insertdtl_Meth' 메소드에 있습니다. 각 통화마다 매개 변수를 재설정 하시겠습니까? – Crowcoder

+0

'info1'은 어디에서 초기화합니까? 이 샘플은 완전하지 않습니다. – user3185569

+2

[mcve]가 좋을 것입니다 –

답변

0

확인합니다.

hasTax 및 hasBatch 둘 다 false이거나 적어도 하나는 false이고 전달되는 매개 변수의 수는 저장 프로 시저에 필요한 것과 일치합니다.

두 번째 반복에서 가장 가능성이 높습니다 (첫 번째 반복에서 둘 다 거짓이면). 저장 프로 시저가 필요한 것 이상으로 생성되는 매개 변수 또는 첫 번째 반복에서 참인 경우 두 번째 반복에서 hasTaxhasBatch이 모두 true이고 따라서 더 많은 no. 필요한 매개 변수보다

dtl.Insertdtl_Meth (info1)도 확인하시기 바랍니다. 매개 변수를 생성하고 저장 프로 시저에 전달하는 방법에 대한 메서드입니다.

+0

hasTax 및 hasBatch가 코드에서 제거되어 나머지 코드에서 작동하지 않습니다. – shafeeq

+0

dtl.Insertdtl_Meth (info1); ? 내부의 코드는 매개 변수를 생성하고 저장 프로 시저에 전달해야합니다. 저장 프로 시저가 실제로 얼마나 많은 매개 변수를 생성하는지 확인하십시오. –

+0

예 dtl.Insertdtl_Meth (info1)의 코드에 액세스하고 코드를 실행하여 break를 실행 한 다음 dtl.Insertdtl_Meth (info1)가 올바른지, 매개 변수가 전달되었는지, 첫 번째 반복이 올 바르고 정확하게 데이터베이스에 삽입되었는지 두 번째 반복 오류가 표시됩니다. – shafeeq

관련 문제