PDA

View Full Version : سوال: بدست آوردن مقدار برگشتی storedprocedure



Program.net
پنج شنبه 29 اردیبهشت 1390, 19:04 عصر
سلام

من ازین کد واسه بدست آوردن درصد استفاده می کنم


select

Distinct

(

SELECT 100*COUNT(*) AS kol

FROM

tbl_VisitDetail AS vd LEFT OUTER JOIN

tbl_Visit
AS v ON vd.Visit_Id = v.Visit_Id

WHERE

(v.Part_Id =@PartId) AND (vd.Zaef=1))/

case

when (SELECT COUNT(*) AS kol

FROM

tbl_VisitDetail AS vd LEFT OUTER JOIN

tbl_Visit
AS v ON vd.Visit_Id = v.Visit_Id

WHERE

(v.Part_Id =@PartId))=0 then 1


when (SELECT COUNT(*) AS kol

FROM

tbl_VisitDetail AS vd LEFT OUTER JOIN

tbl_Visit
AS v ON vd.Visit_Id = v.Visit_Id

WHERE

(v.Part_Id = @PartId))<>0 then (SELECT COUNT(*) AS kol

FROM

tbl_VisitDetail AS vd LEFT OUTER JOIN

tbl_Visit
AS v ON vd.Visit_Id = v.Visit_Id

WHERE

(v.Part_Id = @PartId)) end



و میخوام مقداری رو که دست میاره رو تویه یک متغیر بریزم اینجوری:



string zaef = dc.SP_Perc_Z(System.Convert.ToInt32(cbplace.Select edValue)).ReturnValue.ToString();


ولی این کد مقدار 0 یا null رو توی متغیر میریزه . چجوری مقدار بدست اومده ازین storedprocedure رو بدست بیارم در ضمن وقتی به دیتا گرید بایندش میکنم مقدار درست رو نشون میده ولی تویه متغیر نه ؟!؟!؟!؟!؟!؟

Program.net
پنج شنبه 29 اردیبهشت 1390, 20:01 عصر
کسی نظری نداره؟

morteza271
پنج شنبه 29 اردیبهشت 1390, 20:48 عصر
شما کد زیر رو کجا نوشتین که نتیجه اشتباه میده:

string zaef = dc.SP_Perc_Z(System.Convert.ToInt32(cbplace.Select edValue)).ReturnValue.ToStr ing();

Program.net
پنج شنبه 29 اردیبهشت 1390, 21:01 عصر
توی رویداد کلیک button نوشتم وقتی که combox select شده .
storprocedur من درصد رو محاصبه میکنه که یک عدد هست ولی نمیتونم تویه یک متغیر نشونش بدم

morteza271
پنج شنبه 29 اردیبهشت 1390, 21:12 عصر
میشه کد کاملتون رو بذارید؟
من متوجه نمیشم چطوری SP رو اجرا کردین!!
من همیشه از این روش استفاده میکنم :

SqlConnection con = new SqlConnection(Properties.Settings.Default.MahakFea tureConnectionString);
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "SaveNewTest";
SqlDataAdapter da = new SqlDataAdapter(cmd);
cmd.Parameters.AddWithValue("@FinalVersion", txtFinalVersion.Text);
cmd.Parameters.AddWithValue("@TestType", cboTestType.Text);
cmd.Parameters.AddWithValue("@TesterCode", cboTester.SelectedValue).DbType = DbType.Currency;
cmd.Parameters.AddWithValue("@ResolverCode", cboResolver.SelectedValue).DbType = DbType.Currency;
cmd.Parameters.AddWithValue("@BeginDate", date);
cmd.Parameters.AddWithValue("@EndDate", "");
cmd.Parameters.AddWithValue("@Explain", txtExplain.Text);
DataTable dt = new DataTable();
da.Fill(dt);

lblTestID.Text = dt.Rows[0][0].ToString();

Program.net
پنج شنبه 29 اردیبهشت 1390, 21:19 عصر
string zaef = dc.SP_Perc_Z(System.Convert.ToInt32(cbplace.Select edValue)).ReturnValue.ToString();

من از linq استفاده کردم
اینجوری sp رئ صدا زدم : dc.SP_Perc_Z(int ..);
SP_Perc_Z استور پروسیجر هست dc هم dataclassdatacontex

morteza271
پنج شنبه 29 اردیبهشت 1390, 21:44 عصر
شرمنده من اصلا از linq چیزی نمیدونم!!نمیتونم کمکتون کنم!!!
راستش من خیلی دوست دارم linq یاد بگیرم شما pdf به فارسی ندارین که بتونم خوب ازش استفاده کنم.
اگه دارید لطف کنید برام میل کنید:
mr_toroski@yahoo.com
ممنون

Program.net
پنج شنبه 29 اردیبهشت 1390, 21:52 عصر
در هر صورت ممنونم ولی سوال من اطلا به linq ربطی نداره :ناراحت:

من فقط می خوام بدونم چطوری نتجه storprodecure رو تویه متغیر بریزم تو مثال شما به جای:
cmd.CommandType = CommandType.StoredProcedure;
بنویسم مثلا :
int x=dc.storeprocedure

حالا اینو ولش کن یه سوال دیکه چجوری storeprocedure با مقدار برگشتی تعریف کنم و توی کد C# ازش استفاده کنم؟

morteza271
پنج شنبه 29 اردیبهشت 1390, 22:58 عصر
خوب توی استور پروسیجورتون کوئری که مینویسید اگه select باشه خروجی داره دیگه.
و راحت میتونید خروجی رو بریزید توی یه Datatable و آنها رو نمایش بدین.
بابت فایل آموزشی linq هم ممنونم.لطف کردین.

Program.net
جمعه 30 اردیبهشت 1390, 09:56 صبح
کسی میتونه به من کمک کنه چجوری نتیجه storeprocedure رو تو متغییر بریزم؟

Program.net
شنبه 31 اردیبهشت 1390, 12:12 عصر
لطفا اگه کسی نظری داره کمک کنه من اینترنتو زیرو رو کردم هیچی نبود :گریه:

javad_r_85
شنبه 31 اردیبهشت 1390, 12:30 عصر
public object ExecuteScaler(CommandType commandType, string commandText, params SqlParameter[] commandParameters)
{

cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandType = commandType;
cmd.CommandText = commandText;
cmd.Parameters.AddRange(commandParameters);


Connect();

object retVal = cmd.ExecuteScalar();

Desconnect();

return retVal;


}





Int retVal = Convert.ToInt32(ExecuteScaler(System.Data.CommandT ype.StoredProcedure, "GetUserCountByUsernamePass", new SqlParameter[] {
new SqlParameter("@user_username ",userName),
new SqlParameter("@user_password ",pass));






Store Procedure is :




create Procedure [dbo].[GetUserCountByUsernamePass]
@user_username nvarchar(150),
@user_password nvarchar(150)

as
SELECT Count(*) FROM users WHERE User_UserName=@user_username and User_Password=@user_password;