PDA

View Full Version : دسترسی به مقادیر فیلدهای حاصل از select های یک Sp در #C



unique1984
یک شنبه 27 اردیبهشت 1388, 18:10 عصر
با سلام
چناچه در یک StoreProcedure ، چندین دستور Select و چندین خروجی داشته باشیم و بخواهیم در #C ، به مقدار فیلدهای یکی از این select ها دسترسی داشته باشیم، باید چکار کنیم؟

adinochestva
یک شنبه 27 اردیبهشت 1388, 18:13 عصر
sp تون رو لطف كنيد بزاريد اينجا تا منظورتون واضح باشه

unique1984
یک شنبه 27 اردیبهشت 1388, 23:51 عصر
CREATE PROCEDURE Sp_Sample
@Num INT,
@Cheque_Id INT,
@Cheque_Num INT OUT
AS
BEGIN
SET NOCOUNT ON;
SELECT F_Name,L_Name FROM Tbl1 WHERE Num=@Num
SELECT Cash_Name,Cash_Number FRom Tbl2 wHERE Cash_id=2
SELECT @Cheque_Num=Cheque_Num FROM Tbl3 WHERE Cheque_Id=@Cheque_Id
END
GO
فرض کنید من چنین SP دارم و می خوام از #C به فیلد Cash_Number دسترسی داشته باشم.

pesar irooni
دوشنبه 28 اردیبهشت 1388, 01:00 صبح
مگه از sqlDataAdapter استفاده نمیکنی؟
میتونی مقادیرت رو تو یه DataTable لود کنی یا هر کار دیگه ای با استفاده از پارامترها.

Ai_Kord
دوشنبه 28 اردیبهشت 1388, 03:35 صبح
myDAdptr.fill(MyDset)


هر کدوم از select ها به ترتیب در جدول جداگانه ریخته میشن.برای دسترسی به جدول مربوط به دستور های select میتونید از ترتیب اونها استفاده کنید.





select اول:

myDset.tables[0]
select دوم:

myDset.tables[1]
select سوم:

myDset.tables[2]

a.maleki
دوشنبه 28 اردیبهشت 1388, 19:42 عصر
فکر کنم بهتریو سریع ترین حالتش استفاده از دیتاریدر باشه

meysam_pro
دوشنبه 28 اردیبهشت 1388, 20:46 عصر
رویه ها ، خروجی ضمنی دارن ، یعنی آخرین Select خروجی اون StoreProcedure هست.
توصیه میکنم برای برگشت دادن یک مقدار از Function استفاده کن.

unique1984
چهارشنبه 30 اردیبهشت 1388, 13:23 عصر
با تشکر از دوستان







myDAdptr.fill(MyDset)


هر کدوم از select ها به ترتیب در جدول جداگانه ریخته میشن.برای دسترسی به جدول مربوط به دستور های select میتونید از ترتیب اونها استفاده کنید.





select اول:

myDset.tables[0]
select دوم:

myDset.tables[1]
select سوم:

myDset.tables[2]



من با استفاده از DataSet هم اینکار رو کردم اما نشد و فقط table[0] رو میشناسه!!


رویه ها ، خروجی ضمنی دارن ، یعنی آخرین Select خروجی اون StoreProcedure هست.
توصیه میکنم برای برگشت دادن یک مقدار از Function استفاده کن.
اتفاقا مشکل اینجاست که اولین select بعنوان خروجی sp در نظر گرفته میشه.
من میخوام این مشکل رو با خود sp (و نه function) حل کنم.

adinochestva
دوشنبه 11 خرداد 1388, 14:08 عصر
DataSet ds = new DataSet("myDataSet");
SqlConnection con = new SqlConnection(" connection string");
con.Open();
SqlDataAdapter sda = new SqlDataAdapter("sp name", con);
sda.SelectCommand.CommandType = CommandType.StoredProcedure;
sda.Fill(ds);
MessageBox.Show(ds.Tables.Count.ToString());
con.Close();


با كد بالا به جاي connection string رشته اتصال و sp name نام sp را بزار ببين تو پيغام MessageBox چه عددي نشون ميده اين عدد بايد با تعداد select ها در sp برابر باشه
اگر اينطور بود مي توني با


ds.Tables[nr]

كه بجاي nr شماره select را ( كه از 0 شروع مي شود ) مي گزاريد !