PDA

View Full Version : درخواست راهنمایی درباره خواندن رکوردهای در پروسیجر



hamide_kh
چهارشنبه 18 فروردین 1389, 21:59 عصر
سلام خدمت دوستان
من ازsp زیر برای پیدا کردن تعداد سی دی و دی وی دی در 2 دیتابیس استفاده می کنم


ALTER proc [dbo].[SpCountSumAmade]
@Admin_Amade int
as
select count(*)as Countt_Cd from Tbl_Cd where (Cd_Admin_Amade=@Admin_Amade)
select count(*)as Countt_Dvd from Tbl_Dvd where (Dvd_Admin_Amade=@Admin_Amade)

حال چطور می تونم به دو فیلد Countt_Cd و Countt_Dvd دسترسی داشته باشم،البته از کد زیر استفاده می کنم


SqlConnection conn = new SqlConnection(constr);
SqlCommand cmd = new SqlCommand("SpCountSumAmade", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@Admin_Amade", SqlDbType.Int).Value = Session["Admin_Pk"].ToString();
conn.Open();
SqlDataReader sdr = cmd.ExecuteReader();
if (sdr.Read())
{
lblTedadCd.Text = sdr["Countt_Cd"].ToString();
lblTedadDvd.Text = sdr["Countt_Dvd"].ToString();
}

اما وقتی به این خط می رسه

lblTedadDvd.Text = sdr["Countt_Dvd"].ToString();
می گه که null هست،اگه ممکنه راهنماییم کنید

raziee
چهارشنبه 18 فروردین 1389, 23:26 عصر
select count(*)as Countt_Cd from Tbl_Cd where (Cd_Admin_Amade=@Admin_Amade)
select count(*)as Countt_Dvd from Tbl_Dvd where (Dvd_Admin_Amade=@Admin_Amade)

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

البته خیلی مطمئن نیستم

Keramatifar
چهارشنبه 18 فروردین 1389, 23:42 عصر
دوست عزیز
شما اول SP ای که نوشتی رو توی SQL اجرا کن ببین مقداری بر می گردونه یا نه ...

naser2009
پنج شنبه 19 فروردین 1389, 01:06 صبح
سلام دوسته من از دو تا متغیر نوع output استفاده کن در stored procedure
تا مقدارها رو واسه شما برگردونن
در ضمن اگه دو تا دیتابیس استفاده میکنی و میخوایی سوئیچ کنی رو اون یکی از عبارته
use به علاوه اسم database استفاده کن
بعد داخل برنامه هم برای گرفتنشون
از این استفاده کن
cmd.parameters.add().direction=parameterdirection. output
اول مشخص کن که این پارامتر از چه نوعی هست بعد از اجرا Query هم با خصوصیت value به اونا دسترسی داری

hamide_kh
پنج شنبه 19 فروردین 1389, 21:04 عصر
سلام

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

البته خیلی مطمئن نیستم
بله من که قطعا دو تا select دارم

دوست عزیز
شما اول SP ای که نوشتی رو توی SQL اجرا کن ببین مقداری بر می گردونه یا نه ...
بله در sql server 2005 اجرا می کنم در دو قسمت اونا را بهم نشون میده


سلام دوسته من از دو تا متغیر نوع output استفاده کن در stored procedure
تا مقدارها رو واسه شما برگردونن
در ضمن اگه دو تا دیتابیس استفاده میکنی و میخوایی سوئیچ کنی رو اون یکی از عبارته
use به علاوه اسم database استفاده کن
بعد داخل برنامه هم برای گرفتنشون
از این استفاده کن
cmd.parameters.add().direction=parameterdirection. output
اول مشخص کن که این پارامتر از چه نوعی هست بعد از اجرا Query هم با خصوصیت value به اونا دسترسی داری

سلام من از یک دیتابیس استفاده می کنم،
شرمنده من نمی دونم چطور اون selectهام را در متغیر output بریزم اگه ممکنه راهنماییم کنید


tt=select count(*)as Countt_Cd from Tbl_Cd where (Cd_Admin_Amade=@Admin_Amade)

مثلا باید اینطور بنویسم(البته این دستور که Error میده)
تشکر

ehsan2007
پنج شنبه 19 فروردین 1389, 21:52 عصر
پیشنهاد میکنم اینجوری خروجی بگیری


DECLARE @Count int;
DECLARE @Count2 int;
SET @Count = (select count(*)as Countt_Cd from Tbl_Cd where (Cd_Admin_Amade=@Admin_Amade))
SET @Count2 = (select count(*)as Countt_Dvd from Tbl_Dvd where (Dvd_Admin_Amade=@Admin_Amade))
select convert(nvarchar(9),@Count) + '|' + convert(nvarchar(9),@Count2) As CO

حالا کافیه وقتی فیلدو خوندی اینجوری بریزیش توی آرایه


string[] List2 =
DR["CO"]
.ToString().Split("|".ToCharArray());

در آخرم با اندیس 0 و 1 ازش استفاده کنی
موفق باشی

naser2009
پنج شنبه 19 فروردین 1389, 21:52 عصر
select @tt=count(*)as Countt_Cd from Tbl_Cd where (Cd_Admin_Amade=@Admin_Amade)

به اين صورت @tt يك متغير از نوع output هست.