samlee69 Ответов: 1

Процедура или функция abc ожидает идентификатор параметра', который не был указан.


привет в моем коде,
я взял два вида сетки
gridview1 и gridview2
и я использую itextsharpe для календаря.
когда я selcetindex первой строки gridview1, то получаю данные во второй строке gridview2.
теперь на втором gridview2 я помещаю код для показа данных между двумя датами.
но он показывает ошибку, что я не передал значения gl_acid...
на самом деле я использовал viewstate для передачи идентификатора пользователя из первого gridview1 во второй gridview2.
я также посылаю вам свой код и хранимые процедуры.
пожалуйста, дайте мне оптимальное решение, чтобы избавиться от этой ошибки.

Что я уже пробовал:

это код на кнопке, чтобы показать данные между двумя датами.

protected void getBydate_Click(object sender, EventArgs e)
   {
       getdateValues();
   }
   public void getdateValues()
   {
       if (con.State == ConnectionState.Closed)
           con.Open();
       cmd = new SqlCommand("sp_dateBetween", con);
       cmd.Parameters.AddWithValue("@userid", Convert.ToInt32(Session["user"]));
       cmd.Parameters.AddWithValue("@gl_acid", Convert.ToInt32(ViewState["id"]));
       cmd.Parameters.AddWithValue("@dateFrom", dateFromText.Text);
       cmd.Parameters.AddWithValue("@dateTo", dateToText.Text);
       sda = new SqlDataAdapter(cmd);
       ds = new DataSet();
       sda.Fill(ds);
       GridView2.DataSource = ds;
       GridView2.DataBind();
       cmd.ExecuteNonQuery();
       con.Close();
   }



вот хранимая процедура для этого

ALTER procedure [dbo].[sp_dateBetween]
(
  @gl_acid int,
  @userid int,
  @dateFrom datetime,
  @dateTo datetime
  )
  as 
  begin

SELECT 	ROW_NUMBER() OVER (Order by gLedeger.PK_id) as sno,gLedeger.gl_date as date,gLedeger.gl_narration  as Narration ,
	case when gLedeger.gl_drcr > 0 then abs(gLedeger.gl_drcr) else 0.00 end as debit,
	case when gLedeger.GL_DRCR	 < 0 then abs(gLedeger.gl_drcr) else 0.00 end as credit,
SUM(gLedeger.gl_drcr) OVER(ORDER BY gledeger.pk_ID ROWS UNBOUNDED PRECEDING) AS    Balance  
	FROM gLedeger   LEFT JOIN master ON 
    gLedeger.gl_acid = master.PK_ID left join registration r on master.userId= @userid
    WHERE gLedeger.gl_acid = @gl_acid
	and gl_date between Convert(Datetime, @dateFrom ,103) and Convert(Datetime,@dateTo,103)
	ORDER BY gLedeger.gl_date
end

1 Ответов

Рейтинг:
9

NotPolitcallyCorrect

Вам нужно установить тип команды и сказать ей, что это хранимая процедура, которую вы вызываете. Свойство sqlcommand.Свойство CommandType (System. Data.SqlClient)[^]