ویژوال 30 شارپ

سورس کدهای جالب سی شارپ فقط با یک نگاه

ویژوال 30 شارپ

سورس کدهای جالب سی شارپ فقط با یک نگاه

یک کریستال ریپورت - چند جدول

سلام دوستان خوبم حالتون چطوره؟ خوبید؟ امیدوارم همیشه خندان و شاداب باشید.
در این پست قصد دارم به سوال یکی از دوستان که پرسیده بودند :
من یه برنامه مینویسم که پویا کار میکنه، من در طی اجرای برنامه میخوام فیلدهای یه جدول رو به کریستال ریپورت بفرستم ( ممکنه جدول هم طی اجرا فرق کنه )
من میخوام با داشتن نام جدول و فیلدهای مورد نطر، گزارشی رو بر این اساس با کریستال ریپورت به کاربر نمایش بدم، چطور میتونم این کار رو بکنم؟ میدونم دردسره ولی خواهش میکنم اگه میتونی کمکم کن
اگه سوالتون رو خوب فهمیده باشم می خواهید از یک فایل کریستال ریپورت برای چند جدول با فیلدهای متفاوت استفاده کنید. خیلی هم مشکل نیست فقط کافیه دیتا تیبلی رو که براش می فرستید رو دستکاری کنید.

این هم لینک کد کاملش :

کد :

http://s1.picofile.com/file/7214034080/CristalReport.rar.html


خدا یار و نگهدار

طریقه استفاده از Crystal Report

برای گزارش گیری از داده ها، از نرم افزار های مختلفی میشه استفاده کرد اما از اونجایی 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;