PDA

View Full Version : stored procedure در فرمول با پارامتر



dehghanimeh
جمعه 24 اسفند 1386, 09:31 صبح
با سلام خدمت دوستان
من یه stored procedure دارم که چند تا پارامتر به اون ارسال میکنم و فقط
یک مقداد خروجی عددی به من بر میگردونه


CREATE PROCEDURE Stp_Bateleh @Yer nvarchar (4) ,@Mount nvarchar (2), @Type_ID int ,@rgn_ID int AS

declare @Bateleh int

--//تمام باطله ها
select @Bateleh=sum(Fld_Main_Total) From Tbl_Main
where Fld_Main_Type_ID=@Type_ID and Fld_Main_Des_ID=3 and Fld_Main_Mount=@Mount and Fld_Main_Year=@Yer and Fld_Main_From_Rgn_ID=@Rgn_ID and Fld_Main_To_Rgn_ID=@Rgn_ID



if @Bateleh=null
set @Bateleh=0

return(@Bateleh)
GO

حالا میخوام در کریستال رپورت جلوی رکوردهای که از جدول دیگری بدست میاد
این stored procedure را با مقادیر رکورد جاری مقدار دهی(پارامتر) کنم تا نتیجه را
به عنوان یک فیلد در گزارش ببینم

نتیجه اینکه چطور میتونم یک stored procedure را در یک فرمول به مقادیر رکورد جاری
صدا زده و خروجی را مشاهده کنم

با تشکر

Amir_Safideh
جمعه 24 اسفند 1386, 20:40 عصر
چیزی که من فهمیدم اینه که شما میخواهید به تعداد رکوردهایی که جدول اصلیتون داره این پروسیجر رو فراخوانی کنید و مقدار خروجی رو به عنوان یه فیلد در کنار تمام رکوردهای جدول اصلیت نمایش داده بشه . من تا به حال این کار رو با کریستال ریپورت نکردم و نمیدونم که میشه این کار رو کرد یا نه .
ولی به شما یه پیشنهاد میتونم بدم و اون هم اینه که شما جدول اصلی و این پروسیجر رو توی یک پروسیجر مجزا تعریف کنید . یعنی در نهایت شما یک پروسیجر بنویسی که جدول اصلی و پروسیجری که در بالا نوشتی رو یکجا برات Select کنه . و این پروسیجر رو به تنهایی و فقط یک بار توی گزارش فراخوانی کنی . با این روش هم مشکلت حل میشه و هم لازم نیست به دفعات این پروسیجر رو فراخوانی کنی و افت سرعت داشته باشی .
--------------
موفق باشید .