الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيفية تحميل أكتر من report.rdlc من خلال فورمة واحد

مغلق
بدأه samihinnawi في 6 فبراير 2007 · 3 رد · 2,433 مشاهدة · في تصميم وبرمجة التقارير
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم..

موضوعى باختصار، وموجه لأساتذة ال vb.net

لدى vb.2005 وقمت بتصميم عدة ريبورتات - (winforms) من نوع إمتداد .rdlc وطبعا المفروض ان تكون هناك فورمة واحدة لها reportviewer نستطيع من خلاله تحميل ورؤية أى report من هذا النوع - ولكنه ليس من المنطقى عمل فوم منفصل ولها reportviewer كمان لل 100 report اللى عندى فى قاعدة البيانات

حاولت كتير فى توجيه bindingsourse وتحميل ال datasets مع تغيير ال localreport.reportpath ولكن للأسف لم أحصل على النتيجة المطلوبة.. أرجو من لديه الإمكانية لطرح ومناقشة هذا الموضوع لإنه حيوى جدأ فى قواعد البيانات بشكل عام.

دخلت منتديات كتيرة، وتكلموا كتير عن الموضوع ولكن للأسف برضه غير مفهوم - حيث اننى حاولت تطبيق الكودات لكنها لا تعمل.

وشكراً

وهذا مثال على الكود الذى يمكنه تحقيق ذلك، ولكنه للأسف لايعمل

reportViewer.LocalReport.ReportEmbeddedResource = 
			"rptOrders.rdlc";

		ReportDataSource rds = new ReportDataSource();
		rds.Name = "dsOrders_dtOrders";
		rds.Value = dsReport.Tables[0];
		reportViewer.LocalReport.DataSources.Add(rds);

كما انى أود أن أوضح، ان البيئة التى أعمل بها هى vbasic2005 وليست ال c#

وشكراً

#2

هذا الكود الذي أرفقته محولا إلى VB

		ReportViewer1.LocalReport.ReportEmbeddedResource = "Report1.rdlc"

		Dim rds As New ReportDataSource
		rds.Name = "dsOrders_dtOrders"
		rds.Value = dsReport.Tables(0)
		ReportViewer1.LocalReport.DataSources.Add(rds)

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#3

أولا.. أشكرك ياأخ سامر، ولكن المثال الذى أرفقته - كان على سبيل المثال - طبعاً حولته الى ال vb وبرضو لايعمل..

أرفق هنا الكود الحقيقى الذى استعمله فى برنامجى، وهو كالآتى:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Me.MATIDBindingSource.DataSource = Me.DataSet1.MATID

Me.MATIDTableAdapter.Fill(Me.DataSet1.MATID)

Me.ReportViewer1.LocalReport.ReportPath = "matid.rdlc"

Me.ReportViewer1.LocalReport.DataSources.Add(New Microsoft.Reporting.WinForms.ReportDataSource("matid.rdlc", Me.DataSet1.MATID))

Me.ReportViewer1.RefreshReport()

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

Me.MATIDBindingSource.DataSource = Me.DataSet2.RECIPES

Me.RECIPESTableAdapter.Fill(Me.DataSet2.RECIPES)

Me.ReportViewer1.LocalReport.ReportPath = "recipes.rdlc"

Me.ReportViewer1.LocalReport.DataSources.Add(New Microsoft.Reporting.WinForms.ReportDataSource("recipes.rdlc", Me.DataSet2.RECIPES))

Me.ReportViewer1.RefreshReport()

End Sub

أرجو منكم المساعده فى معرفة الحل - حيث لننى أحصل على رسالة الخطأ التالية:

a datasource instance has not been supplied for the data source dataset2_recipes

وايضا مرة أخرى شاكر لكم سرعة الإستجابة

#4

السلام عليكم ورحمة الله وبركاته، وبعد

طبعاً أطرح هذا الكود (الذى هو الحل المضبوط طبعاً) وحيث اننى وصلت إليه بعد جهد متواصل، لذا أحب إضافة هذه المشاركة لإخوانى فى المنتدى لعلها تعود بالفائدة عليهم:

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

Me.ReportViewer1.Reset()

Me.ReportViewer1.LocalReport.ReportPath = "C:\Documents and Settings\Sami\My Documents\Visual Studio 2005\Projects\WindowsApplication1\WindowsApplication1\recipes.rdlc"

Me.ReportViewer1.LocalReport.DataSources.Add(New Microsoft.Reporting.WinForms.ReportDataSource("DataSet1_RECIPES", RECIPESBindingSource))

Me.Text = "Recipes"

Me.RECIPESTableAdapter.Fill(Me.DataSet1.RECIPES)

Me.ReportViewer1.RefreshReport()

End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

Me.ReportViewer1.Reset()

Me.ReportViewer1.LocalReport.ReportPath = "C:\Documents and Settings\Sami\My Documents\Visual Studio 2005\Projects\WindowsApplication1\WindowsApplication1\OPID.rdlc"

Me.ReportViewer1.LocalReport.DataSources.Add(New Microsoft.Reporting.WinForms.ReportDataSource("DataSet1_OPID", OPIDBindingSource))

Me.Text = "production vouchers"

Me.OPIDTableAdapter.Fill(Me.DataSet1.OPID)

Me.ReportViewer1.RefreshReport()

End Sub

هنا نلاحظ أن كل report قد تم تعيين bindingsource له وأيضا الdataset_datatable الخاصة به، مع ملاحظة ضرورة وضع الكود report.reset() حيث ان هذه التعليمة تقوم بتفريغ ال dataviewer قبل تحميل ال report التالى... وهكذا - بواسطة هذا الكود يمكنك تحميل اى عدد من ال reports من خلال فورمة واحدة و dataviewer واحد بشكل جميل جدا وسريع

اتمنى ان تعم الفائدة لكم جميعاً وشكراً..

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…