# مباحث متفرقه برنامه نویسی > گزارش سازی با Crystal Report > آموزش: نمونه کار کریستال ریپورت در C#‎‎

## s@nb@l

برای گزارش گیری از داده ها، از نرم افزار های مختلفی میشه استفاده کرد اما از اونجایی Crystal Report نسخه ابتدایی اون به همرا Visual Studio  به صورت رایگان عرضه میشه بسیاری دوستان از اون برای گزارش گیری استفاده می کنند . برای گزارش گیری ابتدا یک پروژه ایجاد کرده و یک فرم به پروژه به نام FormReport اضافه کنید در این فرم از قسمت ابزار گزینه CrystalReportViewer را به فرم اضافه کنید . از منوی Project -> Add New Item  یک فایل Crystal Report را به پروژه اضافه کنید و در این قسمت با دوبار کلیک بر روی فایل تازه ایجاد شده ، صفحه Designer  باز شده و به طراحی گزارش بپردازید ( توضیح این بخش مفصل بوده و از بحث این مقاله خارجه با کمی حوصله حتما می تونید که یک گزارش خوب طراحی کنید ) ،‌پس از طراحی گزارش آن را ذخیره کرده و به پروژه بر گردید . در فرم اصلی برنامه یک عدد Button  و یک عدد DataGridView  قرار بدین و کدهای زیر را در فرم اصلی وارد کنید . ابتدا یک متغییر عمومی به صورت زیر تعریف کنید (‌این روش و روشهایی دیگری که در این آموزش استفاده می شود پیشنهادی است و شما می توانید از روشهای دیگر نیز استفاده کنید) private DataTable dataTableEmp = new DataTable();                                    
در رویداد Load فرم نیز کد زیر را قرار دهید  ( لازم به توضیح نیست که باید ابتدا کانکشن را ایجاد کنید ) dataTableEmp.Clear();
sqlConnection2.Open();
sqlDataAdapter1.Fill(dataTableEmp);
sqlConnection2.Close();
dataGridViewDB.DataSource = dataTableEmp;
و در نهایت نیز در Button  مربوطه کد زیر را قرار دهید  FormReport f = new FormReport();
f.dataTableEmp = dataTableEmp;
f.ShowDialog();
من برای ارسال داده از یک متغییر عمومی به صورت Public  در فرم دوم استفاده کرده ام ،‌شما می توانید از هر روشی که راحت تر هستید استفاده کنید . در فرم دروم یعنی FormReport ابتدا یک متغییر عمومی به صورت زیر تعریف کرده public DataTable dataTableEmp;
و در نهایت کدهای زیر را در رویداد Load  فرم دوم قرار دهید  CrystalReport1 c = new CrystalReport1();
c.SetDataSource(dataTableEmp);
crystalReportViewer1.ReportSource = c;
فایل زیر یه نمونه از کریستال ریپورت با اكسس  است.

----------


## csharpprogramer88

سلام 
برنامه شمارا دانلود کردم گزارشگیری شما شامل همه سطرهای جدول می شود حال اگر بخواهیم باکلیک بر روی یکی از سطرهای گرید ویو (کدشهر 11 ) را برای گزارش ببریم و بتوانیم پرینت بگیریم چیکار باید بکنیم  دوست گرامی من با کریستال کار نکردم لطف کنید دقیق تر و با مثال توضیح بدید

----------


## s@nb@l

سلام
دستور SELECT مربوط به SQL رو با توجه به كليك روي خانه تغيير بدين و ادامه كار رو مانند برنامه فوق است.
موفق باشين.

----------


## 12345tina

راه ساده تر هست؟

----------


## s@nb@l

> راه ساده تر هست؟


سلام

سادهترينه

موفق باشيد

----------


## mmd2009

با سلام

اگر می خواهید یک ردیف از گرید رو به گزارش ببرید یک راهش ارسال پارامتر هستش

----------


## AsgharMehtar

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

----------


## samiradormohammadi

میشه لطفا ازسال پارامتر ها را توضیح بدین؟ من پارامتر ها رو تو  report  ایجاد کردم ولی کدی که مقدار میدنو بلد نیستم . لطفا راهنماییم کنید

----------


## s@nb@l

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


سلام

موقع ايجاد گزارش، گزارشو را به   Query كه مدنظرتون هست  و قبلا ايجادش كردين، وصل كنيد سپس توي برنامه هم از دستور select استفاده كنيد 

موفق باشين

----------


## s@nb@l

> میشه لطفا ازسال پارامتر ها را توضیح بدین؟ من پارامتر ها رو تو  report  ایجاد کردم ولی کدی که مقدار میدنو بلد نیستم . لطفا راهنماییم کنید


سلام
براي مثال كد زير رو در لود صفحه گزارش قرا مي ديم  ID يه پارامتر كهبا idkart  مقداردهي شده 

Dim objCRGozareshKart As New CRSodoreKart()
        CrystalReportViewer1.ReportSource = objCRGozareshKart
        objCRGozareshKart.SetParameterValue("ID", idKart)

موفق باشيد

----------


## mmd2009

> میشه لطفا ازسال پارامتر ها را توضیح بدین؟ من پارامتر ها رو تو  report  ایجاد کردم ولی کدی که مقدار میدنو بلد نیستم . لطفا راهنماییم کنید


یک نمونه قبلا نوشته بودم برای ارسال پارامتر ولی بانکش نیستش

ولی کدهارو ببینی متوجه میشی

----------


## s@nb@l

> میشه لطفا ازسال پارامتر ها را توضیح بدین؟ من پارامتر ها رو تو  report  ایجاد کردم ولی کدی که مقدار میدنو بلد نیستم . لطفا راهنماییم کنید


سلام

CRProxy objCRProxy = new CRProxy();
      objCRProxy.SetDataSource(objDataTable);
      cRVProxy.ReportSource = objCRProxy;

              objCRProxy.SetParameterValue("id", "1234");


            cRVProxy.Show();

موفق باشید

----------


## sara213

در بخش ابزارهای گزارش گیری در قسمت"چه طور میتونم گزارشی بر اساس دستورات sqlبسازم"جواب این سوال هست

----------

