ورود

View Full Version : Multiple datatable in Rdlc



farzaneh.sh
چهارشنبه 14 بهمن 1388, 22:19 عصر
با سلام خدمت دوستان..وخسته نباشید..
من با Reportviewer کار میکنم و می خواهم که در یک فایل Rdlc بیش از یک Datatable به آن اضافه کنم..یعنی یک فایل Rdlc دارم و می خواهم گزارشم چند تا ستون داشته باشه که هر کدام از ستون ها را از یک datatable بگیرد و پر کند.....

ممنونم از دوستان کمکم کنند..به شدت گیر کردم...................

Sharif Lotfi
چهارشنبه 14 بهمن 1388, 23:59 عصر
دوست عزيز . پنجره Data Sources را باز كنيد (كنار پنجره Solution Explorer در قسمت سمت راست محيط كارتان)
همانطور كه از نام آن پيداست اين پنجره براي ديدن Data Source هاي شما (Dataset ها و Data Table ها) بكار ميرود . شما كافي است فرم گزارش خودتان (rdlc) را پيش رو داشته باشيد و از ديتا تيبل هاي موجود در ديتاسورستان آنها را روي فرم گزارش Drag&Drop كنيد .
چنانچه پنجره Data Sources خالي نمايش داده مي شود بايستي به نحوي DataSet خود را به اين بخش معرفي كنيد .
اگر DataSet خود را با xml تشكيل داده ايد . مي توانيد در داخل كد خود زماني كه كار ساخت Dataset و Data Table هاتان تمام شد از كدي مشابه كد زير يكبار استفاده كنيد :

'ds.WriteXmlSchema("C:\myDataSet.xsd")
با اجراي برنامه خود تا اين خط فايل myDataSet.xsd در مسيري كه عنوان كرده ايد ساخته مي شود . اين فايل شامل كل Dataset و Data Table هاتان مي باشد.
حال مي توانيد كد فوق را حذف كنيد .
به پنجره Solution Explorer رفته و روي نام پروژه خود راست كليك كنيد . گزينه Add/Existing itemرا انتخاب و فايل ساخته شده myDataSet.xsd را انتخاب كنيد. اين فايل به ليست فايلهاي شما در پروژه تان افزوده مي شود . حال پنجره Data Sources را نگاه كنيد (Dataset ها و Data Table ها) ساخته شده اند . حالا مي توانيد هر كدام از ستونها و يا مقادير دلخواهتان را كشيده و در فرم گزارشتان بيندازيد. توجه داشته باشيد هر بار كه تغييري در Data Sources خود ايجاد كرديد اين فايل را از ليست فايلهاي پروژه حذف كنيد و مراحل فوق را تكرار كنيد .
موفق باشيد .
شريف لطفي
SharifLotfi@yahoo.com

farzaneh.sh
پنج شنبه 15 بهمن 1388, 16:26 عصر
با سلام و تشکر..من همان کاری که شما گفته بودید را انجام دادم...ولی در پنجره data source فقط یک table اضافه شده , من هیچ دسترسی به ستونهای این table ندارم..یعنی در واقع فقط یک table را می شناسد... و هیچ کدام از ستونهای این جدول را نمی بینیم......
ممنونم از کمک شما ....ولی هنوز به جواب نرسیده ام.....

Sharif Lotfi
پنج شنبه 15 بهمن 1388, 16:34 عصر
از ساخته شدن تيبل خود با فيلدهاي تعريف شده مطمئن هستيد ؟

farzaneh.sh
پنج شنبه 15 بهمن 1388, 17:30 عصر
با سلام دوباره..و ممنونم از توجه شما...من چند dataset از طریق storedprocedure پر میکنم...بعداین dataset ها را باهم merg میکنم....سپس یک فایل xml میسازم..تا اینجا همه چیز درست انجام میشه و فایل xml را میبینم...سپس یک dataset.xsd از این xml میسازم که ساخته هم میشود...و بعد هم Add Existing Item میکنم...و سپس یک فایل Report.rdlc از طریق add/New Item به پروژه اضافه می کنم...هنگام مشاهده DataSource ها و اضافه کردن فیلد های دلخواه فقط یک Table را مشاهده می کنم...و ستونی برای این table نمی بینم......:عصبانی++:

Sharif Lotfi
پنج شنبه 15 بهمن 1388, 18:33 عصر
چند نكته :
اول اينكه از كدي كه نوشتم براي ساخت فايل xsd استفاده كنيد يعني :

ds.WriteXmlSchema("C:\myDataSet.xsd")
اشتباها از ds.WriteXml بجاي ds.WriteXmlSchema استفاده نكنيد .
در صورتيكه اين كار را به درستي انجام داده ايد :
با قرار دادن یک Break Point بعد از کدهای ساخت dataset خودتان و اجرای برنامه تا آن خط . روی نام dataset تان در کد نوشته شده راست کلیک کرده و با انتخاب گزینه Add watch محتویات آنرا از جمله تعداد datatable هاتان را مشاهده کنید . احتمال می دهم ساخت datatable های شما بطور کامل انجام نشده باشد .
در صورت نیاز می توانید در هنگام راست کلیک با انتخاب گزینه QuickWatch داده های دیگر خود را انتخاب و در بخش Expression تایپ کرده (این قسمت مانند هنگام کد نویسی پویا بوده و با Ctrl+Space امکان کامل کردن متغیرها و متدها را به شما می دهد) نتیجه را تا این لحظه مشاهده کنید از جمله داده هایی مانند dataTable(0).Name و dataTable(1).Name و گزینه هایی مانند dataTable(0).Columns.Count و مانند آن .
کنترل کنید که آنچه در نظرتان بوده ساخته شده و بی عیب می باشد . اگر تااین قسمت مشکلی نبود پیام بگذارید تا بقیه کار را کنترل کنیم .
موفق باشید.
SharifLotfi@yahoo.com

farzaneh.sh
پنج شنبه 15 بهمن 1388, 22:34 عصر
با سلام و ممنون از توجه شما...
همه را چک کردم..و درست بودن.....ولی هنوز به جواب نرسیدم

Sharif Lotfi
جمعه 16 بهمن 1388, 08:54 صبح
دوست عزيز . يك پروژه نمونه (با VS 2008) ضميمه كردم . البته اين نمونه فقط ساخت يك Dataset و يك DataTable هست ولي كليات كار مشخص است . اگر با كمك اين نمونه هم مشكل برنامه شما حل نشد . كدتان را بصورت خصوصي ايميل كنيد تا ببينم و اگر هم مايل بوديد مي توانيد همينجا ضميمه كنيد تا دوستان ديگر هم نظر بدهند .
موفق باشيد .

farzaneh.sh
جمعه 16 بهمن 1388, 10:26 صبح
با سلام....بسیار ممنونم از لطف شما من از روی پروژه ای که شما ساخته اید برنامه در دوباره نوشتم... و خدا زا شکر تا الان مشکل فیلدهای dataSource هام برطرف شده یعنی الان ستون های جدول موجود در دیتا سورس ها را میبینم و به راحتی با آن فایل Rdlc خودم را ساختم...وفقط الان مشکلی که باقی مانده این است که پروژه من وب است ودارم سعی می کنم که در form load بتونم report viewer را مقدار دهی کنم....
به هر حال تا الان که همه چیز درست انجام شده....بسیار از لطف شما سپاسگزارم.....
ممنونم

farzaneh.sh
جمعه 16 بهمن 1388, 11:55 صبح
با سلام دوباره وتشکر دوباره...
تا الان مشکلاتم تقریبا حل شده ولی متاسفانه در صفحه مشاهده گزارش چیزی نمیبینم....
کد اول شامل کد موجود در صفحه apx. است.

<asp:XmlDataSource ID="XmlDataSource1" runat="server"
DataFile="~/Xml_Dir/Sharif_Test.xml"></asp:XmlDataSource>

<rsweb:ReportViewer ID="ReportViewer1" runat="server" Width="100%">
</rsweb:ReportViewer> این هم کد های نوشته شده در formload صفحه مشاهده گزارش:

ReportDataSource rptSource1 = new ReportDataSource();
rptSource1.Name = "NewDataSet_dt_input";
rptSource1.Value = XmlDataSource1 ;
LocalReport lcr = new LocalReport();
lcr.ReportPath = "Hi.rdlc";
lcr.DataSources.Add(rptSource1);

// rptSource1.DataSources.Add(dsSalesOrder);
ReportViewer1.LocalReport.DataSources.Add(rptSourc e1);ممنونم می شم اگه نگاهی به آن بیاندازید و ایراد آن را بگویید...

Sharif Lotfi
جمعه 16 بهمن 1388, 13:28 عصر
با عرض پوزش من با پروژه هاي وب و ASP.Net كار نكرده ام و دوستاني كه بلدند بايد نظر بدهند ولي در انتهاي كدتان در هنگام لود كد زير را نديدم ، باز هم كنترل كنيد :

Me.ReportViewer1.RefreshReport()
ضمنا بهتر است يك BindingSource به فرمتان (فرم گزارش PrintPreview) اضافه مي كرديد و مشابه كدي كه دادم مقدار دهي مي كرديد .
موفق باشيد.

farzaneh.sh
جمعه 16 بهمن 1388, 23:47 عصر
با سلام ...مشکلم در وب با کمک شما حل شد....بسیار ممنونم از توجه شما..امیدوارم همیشه موفق باشید....
باز هم ممنونم..