Ошибка получения: в процедуре или функции указано слишком много аргументов - PullRequest
0 голосов
/ 28 января 2019

Исключение выдается с последней возможностью (subtract_QtyFromStock_Ex <0)."Процедура или функция DeleteFromtb_QtyEx имеет слишком много аргументов."даже указанная процедура не должна вызываться внутри цикла при такой возможности. </p>

Я проверил количество параметров, я не использую глобальную команду sql, я протестировал функцию отдельно, и у нее все хорошо

Хранимая процедура с проблемой

ALTER proc [dbo].[DeleteFromtb_QtyEx]
@autoCodeIdentifier int
As
Delete from tb_Quantity_Expire
where tb_Quantity_Expire.item_auto_code=@autoCodeIdentifier

Код в DataAccessLayer

public void ExecuteCommand(string stored_procedure, SqlParameter[] param)
    {
        SqlCommand cmd = new SqlCommand(stored_procedure, con);

        cmd.CommandType = CommandType.StoredProcedure;
        if(param != null)
        {

            cmd.Parameters.AddRange(param);
        }
        cmd.ExecuteNonQuery();
    }

Код в классе

public void DeleteFromtb_QtyEx(int autoCodeIdentifier)
    {
        Cls_DataAccessLayer DAL = new Cls_DataAccessLayer();
        DAL.OpenCon();
        SqlParameter[] param = new SqlParameter[1];
        param[0] = new SqlParameter("@autoCodeIdentifier", SqlDbType.Int);
        param[0].Value = autoCodeIdentifier;

        DAL.ExecuteCommand("DeleteFromtb_QtyEx", param);
        DAL.CloseCon();
    }

Код в btn_click

private void btnTender_Click(object sender, EventArgs e)
    {
        for (int i = 0; i < dataGridView1.Rows.Count; i++)
        {
            decimal qty_entered = 
            Convert.ToDecimal(dataGridView1.Rows[i].Cells[3].Value);
            decimal stk = 
            Convert.ToDecimal(dataGridView1.Rows[i].Cells[5].Value);
            decimal subtract = stk - qty_entered;
            if (subtract < 0)
            {
Cls.DeleteFromtb_QtyEx(Convert.ToInt32(dataGridView1.Rows[i].Cells[0].Value));
                Cls.InsertTotb_QtyEx(Convert.ToInt32(dataGridView1.Rows[i].Cells[0].Value), subtract);
            }else if(subtract==0)
            {
                Cls.DeleteFromtb_QtyEx(Convert.ToInt32(dataGridView1.Rows[i].Cells[0].Value));
                Cls.InsertTotb_QtyEx(Convert.ToInt32(dataGridView1.Rows[i].Cells[0].Value), subtract);




            }else if (subtract > 0)
            {
                DataTable dt_QtyEx = new DataTable();
                dt_QtyEx = Cls.SelectFromtb_QtyEx(Convert.ToInt32(dataGridView1.Rows[i].Cells[0].Value));
                decimal subtract_QtyFromStock_Ex = 0;
                //decimal qty = Convert.ToDecimal(dataGridView1.Rows[i].Cells[3].Value);

                for (int x = 0; x < dt_QtyEx.Rows.Count; x++)
                {
                    if (x == 0)
                    {
                        subtract_QtyFromStock_Ex = Convert.ToDecimal(dt_QtyEx.Rows[x][2]) - qty_entered;

                    }
                    else
                    {
                        subtract_QtyFromStock_Ex = Convert.ToDecimal(dt_QtyEx.Rows[x][2]) - (0 - subtract_QtyFromStock_Ex);

                    }
                    if (subtract_QtyFromStock_Ex > 0)
                    {
                        Cls.Updatetb_QtyEx(Convert.ToInt32(dt_QtyEx.Rows[x][0]), Convert.ToDateTime(dt_QtyEx.Rows[x][1]), subtract_QtyFromStock_Ex);

                        break;
                    }
                    else if (subtract_QtyFromStock_Ex == 0)
                    {
                        Cls.DeleteFromtb_QtyEx_Expire(Convert.ToInt32(dt_QtyEx.Rows[x][0]), Convert.ToDateTime(dt_QtyEx.Rows[x][1]));

                        break;
                    }
                    else if (subtract_QtyFromStock_Ex < 0)
                    {
                        Cls.DeleteFromtb_QtyEx_Expire(Convert.ToInt32(dt_QtyEx.Rows[x][0]), Convert.ToDateTime(dt_QtyEx.Rows[x][1]));

                    }

                }
            }
        }

1 Ответ

0 голосов
/ 28 января 2019

Спасибо всем ..... Исключение выдается из-за ужасной ошибки, которую я совершил, вызвав хранимую процедуру "DeleteFromtb_QtyEx" в функции для другой хранимой процедуры "DeleteFromtb_QtyEx_Expire"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...