وب سایت مهندس شامحمدی

اولین و تخصصی ترین وب سایت تخصصی آموزش کد های هسته ای

استفاده از جداول پدر و فرزند در گزارش – ۲

1394-02-25
بازدید: 1136

برای ایجاد گزارش بر روی نام پروژه در Solution Explorer راست کلیک کرده و از منوی Add گزینه ی Add Item… را انتخاب نمایید : parent-child-table-crystalreport(5) در پنجره ی نمایش داده شده ، از سربرگ Reporting گزینه ی Crystal Reports را انتخاب نمایید و بعد از تعیین نام برای آن بر روی دکمه ی Add کلیک کنید : parent-child-table-crystalreport(12) در مرحله ی بعد پنجره ی زیر نمایش داده می شود ، گزینه ی As a blank report را انتخاب کنید و سپس بر روی دکمه ی کلیک کنید : parent-child-table-crystalreport(13) در محیط طراحی گزارش و در پنجره ی Field Explorer بر روی گزینه ی Database Fields راست کلیک کرده و از منوی ظاهر شده گزینه ی Database Expert را انتخاب نمایید : parent-child-table-crystalreport(14) به شکل زیر Dataset را به گزارش معرفی نمایید : parent-child-table-crystalreport(15) بعد از انجام مراحله ی بالا Datatable موجود در Dataset با موفقیت به قسمت Database Fields اضافه می شود : parent-child-table-crystalreport(16) برای نمایش داده ها باید فیلد های Datatable را به قسمت Details گزارش Drag & Drop کنیم : parent-child-table-crystalreport(17) کار معرفی Dataset به گزارش و طراحی آن به اتمام رسید در مرحله ی بعد باید داده ها را از بانک واکشی کرده و در Dataset قرار دهیم ، سپس با استفاده از کنترل Crystal Report Viewer گزارش را به کاربر نشان دهیم . در پنجره ی Toolbox یک کنترل Crystal Report Viewer بر روی فرم قرار دهید . بر روی فرم برنامه دابل کلیک کرده و فضای نام های زیر را به کلاس فرم اضافه کنید : using System.Data; using System.Data.SqlClient; سپس متد ی به شکل زیر در کلاس فرم بنویسید : private DataTable ReturnDatasource() { string connectionstring = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; string selectQuery = "SELECT tablePersonels.Id,tablePersonels.FirstName, tablePersonels.LastName," + "CarName, CarColor FROM tablePersonels " + "JOIN tableCars ON tablePersonels.Id = tableCars.personelId;"; SqlConnection SqlConnection1 = new SqlConnection(connectionstring); SqlCommand SqlCommand1 = new SqlCommand(selectQuery, SqlConnection1); SqlDataAdapter SqlDataAdapter1 = new SqlDataAdapter(SqlCommand1); try { CrystalReportDataset resultDataset = new CrystalReportDataset(); SqlDataAdapter1.Fill(resultDataset.Tables["MergePersonelsAndCars"]); return resultDataset.Tables[0]; } catch (Exception ex) { MessageBox.Show(ex.Message); return null; } finally { SqlCommand1.Connection.Close(); } } رشته اتصال برنامه را در فایل App.Config برنامه به شکل زیر تعریف کرده ایم : شما باید رشته اتصال را با توجه به مکان و نوع بانک اطلاعاتی خود تغییر دهید . بعد از تعریف رشته اتصال باید با استفاده از کلاس ConfigurationManager که در فضای نام System.Configuration وجود دارد ، از آن استفاده کنید . به طور خلاصه متد بالا یک کوئری را بر روی بانک اطلاعاتی اجرا می کند و نتایج آن را در Dataset ای که در مراحل قبلی ساخته ایم قرار می دهد کوئری متد به شکل زیر می باشد : string selectQuery = "SELECT tablePersonels.Id,tablePersonels.FirstName, tablePersonels.LastName," + "CarName, CarColor FROM tablePersonels " این پرس و جو یک دستور JOIN است که داده های دو جدول tablePersonels و tableCars را به همدیگر متصل می کند و نتایج آن را برگشت می دهد . در مر حله ی آخر در رویداد Load فرم کد زیر را بنویسید : Report1 report = new Report1(); report.SetDataSource(this.ReturnDatasource()); this.crystalReportViewer1.ReportSource = report; برای نمایش یک گزارش باید از کلاس آن یک شی ایجاد کنیم. نام کلاس معمولا با نام فایل گزارش یکسان است . در مرحله ی بعد باید با استفاده از متد SetDatasource منبع داده آن را مشخص کنیم . منبع داده این مثال همان متد ReturnDatasource می باشد . در مرحله ی آخر باید با استفاده از خصوصیت ReportSource کنترل Crystal Report Viewer گزارش را نشان دهیم . برنامه را اجرا کنید و نتیجه را مشاهده کنید : parent-child-table-crystalreport(18)

تبلیغات
گروه تلگرامی ویژه رفع اشکال کد های هسته ای و نرم افزار ها

این گروه صرفا برای بحث در باره کد ها و نرم افزارهای هسته ای می باشد لذا از بحث های نامرتبط خود داری فرمایید و با معرفی گروه به دوستان خود در مفید بودن بیشتر گروه همیار ما باشید.


کانال تلگرامی ویژه اطلاع رسانی کارگاه های آموزشی

در این کانال اطلاعیه های مربوط به کارگاه های آموزشی و دوره های آنلاین و حضوری منتشر می شود


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

در این کانال آخرین اخبار منتشر شده در سایت نشر داده می شود


گروه تلگرامی آخرین آموزش های منتشر شده در سایت

در این کانال آخرین اخبار منتشر شده در سایت نشر داده می شود


کانال آپارت ما

این کانال متعلق به وب سایت مهندس شامحمدی می باشد. تنها قسمتی از ویدئو های آموزشی در اینجا نشان داده است.


کانال نماشا ما

این کانال متعلق به وب سایت مهندس شامحمدی می باشد. تنها قسمتی از ویدئو های آموزشی در اینجا نشان داده است.

نظرات کاربران

افزودن نظر