# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > ابزارهای گزارش سازی > حرفه ای: آموزش ريپورتينگ سرويس (SSRS) (Sql Service Report Server) در محيط دات نت

## myaffa

نحوه شروع كار با SSRS تا به كار گيري آن در پروژه دات نت
نحوه نصب
نحوه ايجاد گزارش
CreateReaport In SSRS
نحوه ايجاد پارامتر
Create Parameter inSSRS
نحوه ارسال پارامتر از پروژه به گزارش
Passing Parameter in SSRS in ASPX
...

گام اول: نصب صحيح Sql Server
                            توی مرحله ای که لیست وِیژگیها را می آورد شما باید تیک گزینه Reporting Service را بزنید. با انتخاب این گزینه این سرویس روی سیستم شما اجرا می شود. 
بعد از نصب نیز می توانید از Reporting Services Configuration Manager تنظمیات مورد نظر خود را اعمال کنید                          عکس های ضمیمه

----------


## myaffa

گام دوم ايجاد پروژه: براي استفاده از SSRS دوراه وجود دارد:

استفاده از Business Intelligence Development Studioاستفاده از نرم افزار Report Builder 3.0 (پيشتنهاد ميشود)به علت عدم دسترسي برخي دوستان به نرم افزار Report Builder 3.0 استفاده از گزينه اول را در اينجا شرح ميدهم

از منوي Start, گزينه Programs, گزينه Microsoft SQL Server 2008 R2, و سپس اجراي برنامه Business Intelligence Development Studio]1.jpgپس از اجراي VS 2008 از منوي File , گزينه New, بر روي Project كليك نماييد2.jpgحال در پنجره باز شده در قسمت Project Types, گزينه Business Intelligence Projects را انتخاب و در قسمت Templates, گزينه Report Server Project را انتخاب كنيد و پروژه را ايجاد كنيد.1.jpg

----------


## myaffa

گام سوم ايجاد يك كانكشن:

پروژه مورد نظر را در ايجاد كنيددر تب Solution Explorer بر روي گزينه Reports كليك سمت راست كرده گزينه Add New Report را انتخاب نماييد.1.jpg1.jpgايجاد كانكشن 1.jpg1.jpg1.jpgادامه در پاسخ بعدي

----------


## myaffa

ادامه آموزش2.jpg1.jpgايجاد گزارش مورد نظر1.jpgادامه ماجرا به عهده خودتون چون خيلي ساده هستش ولي نتيجه كار گزارشي شبيه به اين ميشه:1.jpg

----------


## myaffa

مدتي نيستم وقتي برگردم انشاله كامل ساختن يك گزارش و استفاده اون در پروژه دات نت خودتونو براتون ميذارم

----------


## myaffa

خوب تا اينجا ياد گرفتيم كه چطور يك كانكشن و يك ديتا ست ايجاد كنيم
ميتونيد ديتا سورس(كانكشن) و ديتا ست(جدول يا ويو مورد نظر) هركدوم رو جدا جدا ايجاد كنيد 
پس از ساخت گزارش مورد نظرتون حالا نوبت ميرسه به استفاده از گزارش در پروژه دات نت خودتون
پس به ادامه مطالب توجه كنيد

----------


## myaffa

گام چهارم : اضافه كردن يك گزارش SSRS به پروژه دات نت خودمون

براي اين كار ابتدا بايد از تب ToolBox و از قسمت Reporting گزينه ابزار Report Viewer رو به صفحتون اضافه كنيد

----------


## myaffa

گام چهارم : اضافه كردن يك گزارش SSRS به پروژه دات نت خودمون

براي اين كار ابتدا بايد از تب ToolBox و از قسمت Reporting گزينه ابزار Report Viewer رو به صفحتون اضافه كنيدUntitled-1.jpgحال اگر به همين صورت پروژه خودتونو اجرا كنيد ارور زير رو مشاهده خوهيد كرد*Exception Details:* Microsoft.Reporting.WebForms.ScriptManagerNotFound  Exception: The Report Viewer Web Control requires a System.Web.UI.ScriptManager on the web form.Untitled-1.jpgبراي رفع اين مشكل شما بايد يك ScriptManager به صفحتون اضافه كنيدUntitled-1.jpgحالا بايد ريپورت ويوورتونو به گزارشتون وصل كنيد براي اين كار شما بايد ريپورت ويورو روي سرور بارگزاري كرده باشيد بعد اينكه اين كارو كرديد با قطعه كد زير ميتونيد به گزارش مورد نظرتون وصل بشيد
RsViewer.ProcessingMode = Microsoft.Reporting.WebForms.ProcessingMode.Remote;
RsViewer.ShowCredentialPrompts = false;
RsViewer.ServerReport.ReportServerUrl = newUri(http://ServerAddress/ReportServer);
RsViewer.ServerReport.ReportPath = "/Path/FileName";
RsViewer.ProcessingMode = ProcessingMode.Remote;
RsViewer.ServerReport.Refresh();

----------


## myaffa

اتصال به يك گزارش SSRS



> [/LIST]
> RsViewer.ProcessingMode = Microsoft.Reporting.WebForms.ProcessingMode.Remote;
> RsViewer.ShowCredentialPrompts = false;
> RsViewer.ServerReport.ReportServerUrl = newUri("http://ServerAddress/ReportServer");
> RsViewer.ServerReport.ReportPath = "/Path/FileName";
> RsViewer.ProcessingMode = ProcessingMode.Remote;
> RsViewer.ServerReport.Refresh();


در نوشتن اين كد بايد دقت داشته باشيد كه ممكن است با پيغام خطاي Unautherization مواجه شويد
اين پيام به علت لاگين نشدن به سرور است
براي رفع اين پيغام تكه كد بالا را بايد به شكل زير تغيير دهيد


ReportViewer RsViewer = newReportViewer();
RsViewer.ProcessingMode = Microsoft.Reporting.WebForms.ProcessingMode.Remote;
RsViewer.ShowCredentialPrompts = false;
RsViewer.ServerReport.ReportServerCredentials = newReportCredentials("UserName", "Password", "Domain");
RsViewer.ServerReport.ReportServerUrl = newUri("http://ServerAddress/ReportServer");
RsViewer.ServerReport.ReportPath = "/Path/FileName";
RsViewer.ProcessingMode = ProcessingMode.Remote;
RsViewer.ServerReport.Refresh();

----------


## myaffa

> اتصال به يك گزارش SSRS
> 
> ReportViewer RsViewer = newReportViewer();
> RsViewer.ProcessingMode = Microsoft.Reporting.WebForms.ProcessingMode.Remote;
> RsViewer.ShowCredentialPrompts = false;
> RsViewer.ServerReport.ReportServerCredentials = newReportCredentials("UserName", "Password", "Domain");
> RsViewer.ServerReport.ReportServerUrl = newUri("http://ServerAddress/ReportServer");
> RsViewer.ServerReport.ReportPath = "/Path/FileName";
> RsViewer.ProcessingMode = ProcessingMode.Remote;
> RsViewer.ServerReport.Refresh();


در اين كد من از كلاس زير استفاده كرده ام
البته اين رو هم بايد بگم كه اين كلاسو خودم ننوشتم واز سايتهاي خارجي ديگه دانلود كردم


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
///<summary>
/// Summary description for ReportCredentials
///</summary>
publicclassReportCredentials : Microsoft.Reporting.WebForms.IReportServerCredentials
{
string _userName, _password, _domain;
public ReportCredentials(string userName, string password, string domain)
{
_userName = userName;
_password = password;
_domain = domain;
}
public System.Security.Principal.WindowsIdentity ImpersonationUser
{
get
{
returnnull;
}
}
public System.Net.ICredentials NetworkCredentials
{
get
{
returnnew System.Net.NetworkCredential(_userName, _password, _domain);
}
}
publicbool GetFormsCredentials(out System.Net.Cookie authCoki, outstring userName, outstring password, outstring authority)
{
userName = _userName;
password = _password;
authority = _domain;
authCoki = new System.Net.Cookie(".ASPXAUTH", ".ASPXAUTH", "/", _domain);
returntrue;
}
}

----------


## myaffa

پنهان كردن پنجره ارسال پارامتر در SSRS از ديد كاربر

براي خلاص شدن از اين پنجره مزاحم ميتوانيد از دو خط زير كمك بگيريد


RsViewer.ShowParameterPrompts = false;
RsViewer.ShowPromptAreaButton = false;

----------


## myaffa

ارسال پارامتر به ريپورتينگ سرويس (SSRS) (Sql Service Report Server)
براي اين كار نيز ميتوانيد از قطعه كد زير كمك بگيريد


List<ReportParameter> parameters = newList<ReportParameter>();
parameters.Add(newReportParameter("ParameterName", "YourParameterValue"));
RsViewer.ServerReport.SetParameters(parameters);

----------


## myaffa

كد حاصل شده براي ارتباط با ريپورتينگ سرويس (SSRS) (Sql Service Report Server) به همراه ارسال پارامتر و مخفي كردن پنجره ارسال پارامتر باهم رو در اينجا براتون ميذارم تا در استفاده از اون راحت باشيد

ReportViewer RsViewer = newReportViewer();
RsViewer.ShowParameterPrompts = false;
RsViewer.ShowPromptAreaButton = false;
RsViewer.ProcessingMode = Microsoft.Reporting.WebForms.ProcessingMode.Remote;
RsViewer.ShowCredentialPrompts = false;
RsViewer.ServerReport.ReportServerCredentials = newReportCredentials("UserName", "Password", "Domain");
RsViewer.ServerReport.ReportServerUrl = newUri("http://ServerAddress/ReportServer");
RsViewer.ServerReport.ReportPath = "/Path/FileName";
List<ReportParameter> parameters = newList<ReportParameter>();
parameters.Add(newReportParameter("ParameterName", "YourParameterValue"));
RsViewer.ServerReport.SetParameters(parameters);
RsViewer.ProcessingMode = ProcessingMode.Remote;
RsViewer.ServerReport.Refresh();

----------


## myaffa

*فكر ميكنم به طور كامل تونسته باشيم يك گزارش با استفاده از ريپورتينگ سرويس (SSRS) (Sql Service Report Server)  در محيط دات نت ايجاد كرده باشيم باز هم اگر سوالي بود در خدمتم*

----------


## myaffa

http://daneshjoir.persianblog.ir/

http://daneshjoir.persianblog.ir/

اگه ميخواي چيزاي بيشتري ياد بگيري به اين وبلاگ سري بزن

http://daneshjoir.persianblog.ir/

http://daneshjoir.persianblog.ir/

----------


## WgsFahime

> اتصال به يك گزارش SSRS
> 
> 
> در نوشتن اين كد بايد دقت داشته باشيد كه ممكن است با پيغام خطاي Unautherization مواجه شويد
> اين پيام به علت لاگين نشدن به سرور است
> براي رفع اين پيغام تكه كد بالا را بايد به شكل زير تغيير دهيد
> 
> 
> ReportViewer RsViewer = newReportViewer();
> ...


سلام
لطفا بگویید آدرس ریپورت سرویس را از کجا می توان به دست اورد
برنامه من خطای زیر را میدهد لطفا راهنمایی بفرمایید


The attempt to connect to the report  server failed.  Check your connection information and that the report  server is a compatible version.
The request failed with HTTP status 404: Not Found.

----------


## WgsFahime

> در اين كد من از كلاس زير استفاده كرده ام
> البته اين رو هم بايد بگم كه اين كلاسو خودم ننوشتم واز سايتهاي خارجي ديگه دانلود كردم
> 
> [/CSHARP]


این پسورد و یوزر که باید وار د کنیم پسورد کجاس من اس کیول رو تحت پسورد ویندوز اجرا میکنم

----------


## WgsFahime

با سلام لطفا مرا راهنمایی نمایید


protected void Page_Load(object sender, EventArgs e)
    {
  
        RsVeiwer.ProcessingMode = Microsoft.Reporting.WebForms.ProcessingMode.Remote  ;
        RsVeiwer.ShowCredentialPrompts = false;
        RsVeiwer.ServerReport.ReportServerCredentials = new ReportCredentials("UserName", "Password", "Domain");
        RsVeiwer.ServerReport.ReportServerUrl = new Uri("http://eiserver738/Reports_SQL2008/ReportServer");
        RsVeiwer.ServerReport.ReportPath = "/Test/Report1.rdl";
        RsVeiwer.ProcessingMode = ProcessingMode.Remote;
        RsVeiwer.ServerReport.Refresh();
   }





من با کدبالا با خطای پیوست مواجه میشم لطفا راهنمایی نمایید

----------


## nastaran_s

سلام. username و password نام کاربری  و پسورد سیستمی است که که sql server و reporting service نصب است domain هم نام کامپیوتر است . آدرس ریپورت سرور هم می تونید از طریق reporting service configuration manager که از ابزارهای sql server است پیدا کنید.  بعد از اجرای آن و زدن دکمه connect اگر اشتباه  نکنم تبی داره به نام report server url که در پنجره مربوطش لینکی داره که با کپی آدرس لینک مشکلتون حل میشه

----------

