2016-07-20 79 views
-3

我嘗試此代碼,但無法正常工作(僅插入第一個值添加到數據庫第二個值)。過程或函數插入已指定的參數太多,這是顯示的錯誤過程或函數插入指定的參數太多

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

a [mcve]會很棒 –

回答

0

檢查傳遞給它的參數存儲過程Sp_Sale_Dtl_Insert要求和參數數目。

機會是在第一次迭代hasTax和hasBatch都是假的或至少有一個是錯誤的,傳遞參數的數量匹配存儲過程所需的數量。

在第二次迭代中,最有可能的(如果在第一次迭代中都是假的),至少有一個是真的會導致no。爲存儲過程生成的參數要多於它所需的參數,或者如果在第一次迭代中一個爲真,則在第二次迭代中,hasTaxhasBatch爲真,因此再次生成更多no。的參數比所需要的。

另請檢查dtl.Insertdtl_Meth(info1);如何生成參數並將其傳遞給存儲過程的方法。

+0

hasTax和hasBatch已從代碼中刪除,但對其餘代碼無效 – shafeeq

+0

您是否有權訪問dtl.Insertdtl_Meth(info1)中的代碼? ?裏面的代碼必須創建參數並傳遞給存儲過程。檢查它創建的參數數量以及您的存儲過程實際預期的數量。 –

+0

是的,我會從dtl.Insertdtl_Meth(info1)訪問代碼,代碼正在運行使用break然後DTL.Insertdtl_Meth(info1)是正確的工作,參數傳遞是正確的,第一次迭代是正確的,並正確地插入到數據庫中,for第二次迭代時將顯示錯誤 – shafeeq

相關問題