PDA

View Full Version : مشکل با جمع ستون در جستجوی پیشرفته



mjt10063
سه شنبه 22 مهر 1393, 10:52 صبح
سلام دوستان خسته نباشید
من تو جمع ستون در جستجوی پیشرفته به مشکل برخورد کردم و نمیدونم چطوری حلش کنم
خواهشن کمکم کنید با تشکر
ارور : Must declare the scalar variable "@jamjarim_out"
Must declare the scalar variable "@jamekht_out"
اینم کد برنامه


try
{
string Q = "Select * From t_jarime ";
string QJamJarime = "set @jamjarim_out = (select SUM (jarime) from t_jarime ";
string QJamEkhtlf = "set @jamekht_out = (select SUM (ekhtelaf) from t_jarime ";
string sort_a; //مرتب سازی به صورت صعودی یا نزولی
string sort_n; //مرتب سازی بر اساس ستون
string sort; //مرتب سازی
string whereAnd = " Where ";
if (rdbtn_seodi.Checked == true)
sort_a = "ASC";
else if (rdbtn_nozol.Checked == true)
sort_a = "DESC";
else
sort_a = "ASC";
if (rdbtn_namkeshti.Checked == true)
sort_n = "n_keshti";
else if (rdbtn_tarikh.Checked == true)
sort_n = "tarikh";
else if (rdbtn_imo.Checked == true)
sort_n = "sh_keshti";
else if (rdbtn_mahmole.Checked == true)
sort_n = "mahmole";
else
sort_n = "tarikh";

sort = " ORDER BY " + sort_n + " " + sort_a +";"; /*مرتب سازی صعودی یا نزولی*/

if (dlljos.SelectedValue != "0")
{
Q += whereAnd;
QJamJarime += whereAnd;
QJamEkhtlf += whereAnd;
Q += " status = " + dlljos.SelectedValue;
QJamJarime += " status = " + dlljos.SelectedValue;
QJamEkhtlf += " status = " + dlljos.SelectedValue;
whereAnd = " AND ";
}
/*جستجوی نمایندگان کشتیرانی*/
if (rdbtn_namayande.Checked == true)
{
Q += whereAnd;
QJamJarime += whereAnd;
QJamEkhtlf += whereAnd;
Q += "id_namy_kesh = " + ddlnamykesh.SelectedItem.Value;
QJamJarime += "id_namy_kesh = " + ddlnamykesh.SelectedItem.Value;
QJamEkhtlf += "id_namy_kesh = " + ddlnamykesh.SelectedItem.Value;
whereAnd = " AND ";
}
/*جستجوی بر اساس نام کشتی*/
if (txt_na_kesh.Text != "")
{
Q += whereAnd;
QJamJarime += whereAnd;
QJamEkhtlf += whereAnd;
Q += "n_keshti like N'" + txt_na_kesh.Text + "%' ";
QJamJarime += "n_keshti like N'" + txt_na_kesh.Text + "%' ";
QJamEkhtlf += "n_keshti like N'" + txt_na_kesh.Text + "%' ";
whereAnd = " AND ";
}
/*جستجوی بر اساس محموله*/
if (rdbtn_kala.Checked == true)
{
Q += whereAnd;
QJamJarime += whereAnd;
QJamEkhtlf += whereAnd;
Q += "id_mahmole = " + ddl_mahmole.SelectedItem.Value;
QJamJarime += "id_mahmole = " + ddl_mahmole.SelectedItem.Value;
QJamEkhtlf += "id_mahmole = " + ddl_mahmole.SelectedItem.Value;
whereAnd = " AND ";
}
/*جستجوی بر اساس بارنامه اداری*/
if (txt_barnam_edari.Text != "")
{
Q += whereAnd;
QJamJarime += whereAnd;
QJamEkhtlf += whereAnd;
Q += "barname_e = " + txt_barnam_edari.Text;
QJamJarime += "barname_e = " + txt_barnam_edari.Text;
QJamEkhtlf += "barname_e = " + txt_barnam_edari.Text;
whereAnd = " AND ";
}
/*جستجو براساس شماره IMO*/
if (txtshkeshti.Text != "")
{
Q += whereAnd;
QJamJarime += whereAnd;
QJamEkhtlf += whereAnd;
Q += "sh_keshti = " + txtshkeshti.Text;
QJamJarime += "sh_keshti = " + txtshkeshti.Text;
QJamEkhtlf += "sh_keshti = " + txtshkeshti.Text;
whereAnd = " AND ";
}

if (txttarikhaz.Text != "" && txttarikhta.Text != "")
{
Q += whereAnd;
QJamJarime += whereAnd;
QJamEkhtlf += whereAnd;
Q += " tarikh Between '" + txttarikhaz.Text + "' AND '"+ txttarikhta.Text +"'";
QJamJarime += " tarikh Between '" + txttarikhaz.Text + "' AND '" + txttarikhta.Text + "'";
QJamEkhtlf += " tarikh Between '" + txttarikhaz.Text + "' AND '" + txttarikhta.Text + "'";
whereAnd = " AND ";
}

Q += sort;
QJamJarime += " );";
QJamEkhtlf += " );";

//نمایش جدول کشتی
if (scon.State == ConnectionState.Closed)
scon.Open();
SqlDataAdapter sda = new SqlDataAdapter("Select_Advence_Search", scon);
sda.SelectCommand.CommandType = CommandType.StoredProcedure;
sda.SelectCommand.Parameters.AddWithValue("@Q", Q);
sda.SelectCommand.Parameters.AddWithValue("@QJamJarime", QJamJarime);
sda.SelectCommand.Parameters.AddWithValue("@QJamEkhtlf", QJamEkhtlf);
sda.SelectCommand.Parameters.Add("@jamjarim_out", SqlDbType.Float);
sda.SelectCommand.Parameters.Add("@jamekht_out", SqlDbType.Float);
//sda.SelectCommand.Parameters.Add("@msg", SqlDbType.NVarChar, 10000);
sda.SelectCommand.Parameters["@jamjarim_out"].Direction = ParameterDirection.Output;
sda.SelectCommand.Parameters["@jamekht_out"].Direction = ParameterDirection.Output;
//sda.SelectCommand.Parameters["@msg"].Direction = ParameterDirection.Output;
sda.SelectCommand.ExecuteNonQuery();
DataTable dt = new DataTable();
sda.Fill(dt);
Repeater1.DataSource = dt;
Repeater1.DataBind();
((Label)Repeater1.Controls[Repeater1.Controls.Count - 1].Controls[0].FindControl("lbljamjarim")).Text = sda.SelectCommand.Parameters["@jamjarim_out"].Value.ToString() + "ریال";
((Label)Repeater1.Controls[Repeater1.Controls.Count - 1].Controls[0].FindControl("lbljamekht")).Text = sda.SelectCommand.Parameters["@jamekht_out"].Value.ToString();
}
catch (Exception err)
{
Response.Write("Error :" + err.Message);
}
finally
{
scon.Close();
}



کد sql


ALTER PROCEDURE Select_Advence_Search

(
@Q NVARCHAR(MAX),
@QJamJarime NVARCHAR(MAX),
@QJamEkhtlf NVARCHAR(MAX),
@jamjarim_out Float output,
@jamekht_out Float output
)

AS
BEGIN
EXECUTE sp_executesql @Q;
EXECUTE sp_executesql @QJamJarime;
EXECUTE sp_executesql @QJamEkhtlf;
/*set @jamjarim_out = (Select SUM(jarime) from t_jarime);
set @jamekht_out = (Select SUM(ekhtelaf) from t_jarime);*/
END
RETURN

mjt10063
پنج شنبه 24 مهر 1393, 10:10 صبح
از همه دوستان که کمک کردن
تشکر میکنم
بالاخره مشکل حل شد

با تشکر از این سایت ها
http://support.microsoft.com/kb/262499
http://www.experts-exchange.com/Database/MS-SQL-Server/SQL_Server_2008/Q_28131640.html

اینم کد کامل



ALTER PROCEDURE Select_Advence_Search

(
@Q NVARCHAR(MAX),
@QJamJarime NVARCHAR(MAX),
@QJamEkhtlf NVARCHAR(MAX),
@jamjarim_out float output,
@jamekht_out Float output
)

AS
DECLARE @parmet_jarm nvarchar(MAX);
DECLARE @parmet_ekh nvarchar(MAX);
BEGIN
set @parmet_jarm = '@jamjarim_out float output';
set @parmet_ekh = '@jamekht_out float output';
EXECUTE sp_executesql @Q;
EXECUTE sp_executesql @QJamJarime, @parmet_jarm ,@jamjarim_out output;
EXECUTE sp_executesql @QJamEkhtlf, @parmet_ekh ,@jamekht_out output;
END
RETURN