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

تمرير قيمة إلى تقارير مايكروسوفت RDLC

بدأه فيجولي في 8 أكتوبر 2011 · 5 رد · 1,712 مشاهدة · في تصميم وبرمجة التقارير
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

سأدخل في السؤال مباشرة :

في الماضي عند استخدام data report كان باستطاعتي تصميم تقرير يدويا وتمرير قيم إلى Textbox في هذا التقرير يدويا بدون ربط التقرير بقاعدة البيانات ، كل ما علي فعله هو تحميل قيم قاعدة البيانات في مصفوفة وإرسالها إلى التقرير وعرض التقرير ، أما الآن فلم أجد طريقة لإرسال القيم إلى التقرير إلا بربط التقرير نفسه بقاعدة البيانات ، حتى المصادر الأجنبية شحيحة في هذا الموضوع كون التوجه إلى الكريستال أكثر على الرغم من كثرة أخطاءه ومشاكله ...

وباعتقادي أن هناك طريقة لذلك ، كون التقرير كحاوية باستطاعته استقبال العناصر والأدوات الخ .

فلو فرضنا أن هناك جدول في قاعدة البيانات يحتوي على حقل اسمه ID ، ويقوم المستخدم في البرنامج بإدخال الـ ID فيقوم البرنامج بإحضار البيانات ووضعها في داتا سيت وتمريرها إلى التقرير وعرضه ، هل هناك سبيل إلى ذلك ؟؟

شاكر مقدر لكم ...

#2

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

طبعا يمكن تمرير بيانات ليست من قاعدة البيانات كمايلي :

right click on project -Add - new Item -DataSet

ثم بالــDataset نقرة يمينية Add - DataTable

و نضع فيه الأعمدة التي نريدها ..

عند تصميم التقرير اظهر النافذة Datasource من قائمة Data ثم Show Data sources

يمكنك سحب العناصر إلى التقرير ..

و لتكرار عنصر ما (Details) نأخذ Table من صندوق الأدوات ..و نسحب الحقل المطلوب تكراره إلى قسم الـ details و في الــ Table

...

ثم يكون الكود :

reportViewer1.LocalReport.ReportPath = @"D:\my_documents\Visual Studio 2008\Projects\ArabTeam\ArabTeam\Report1.rdlc";
        	DataSet1 ds = new DataSet1();
        	for (int i = 0; i < 100; i++)
        	{
            	DataRow r = ds.Tables[0].NewRow();
            	r["col1"] = "AA  " + i.ToString()+"  DD";
            	r["col2"] = "FFFFFF";
            	ds.Tables[0].Rows.Add(r);
        	}

        	ReportDataSource rDS1 = new ReportDataSource("DataSet1_DataTable1", ds.Tables[0]);
        	reportViewer1.LocalReport.DataSources.Add(rDS1);
        	reportViewer1.SetDisplayMode(DisplayMode.PrintLayout);
        	reportViewer1.ProcessingMode = ProcessingMode.Local;
        	reportViewer1.ZoomMode = ZoomMode.PageWidth;
        	reportViewer1.RefreshReport();

لاحظ اسم مصدر البيانات DataSet1_DataTable1 و يمكن تغيره من قائمة Report ثم Data Source

ملاحظة :

لا تظهر القائمة إلا إذا كنت في وضع تصميم التقرير ...

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#3

شكرا أخي الحبيب على تجاوبك السريع بارك الله فيك ...

في الواقع أنا أستخدم هذه الطريقة حاليا ، ولكن هل يمكن إنشاء dataset برمجيا من دون إضافته كأداة للمشروع ، وربطه بالتقرير ؟ حيث أن ذلك يتيح لي آفاق برمجية أوسع ..

بارك الله فيك أخي ونفع بك

تم تعديل هذه المشاركة بواسطة فيجولي في 9 أكتوبر 2011 في 13:32

#4

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

اقتباس
ولكن هل يمكن إنشاء dataset برمجيا من دون إضافته كأداة للمشروع

نعم أخي .. يمكن ذلك كمايلي :

قم بإنشاء Class و فيه بعض الــ Properties . ثم build project

ثم على data source نأخذ Add ثم نوعه Object ثم نحدد الــ Class الذي عملناه .. و نكمل كأننا نتعامل مع DataSet عادية ..

و عند تمرير البيانات نمرر له البيانات كمصفوفة ..

Employee emp1 = new Employee(){ID=1 , Name = "e1"};
 Employee emp2 = new Employee(){ID=2 , Name = "e2"};
 Employee emp3 = new Employee(){ID=3 , Name = "e3"}; 
ReportDataSource rDS1 = new ReportDataSource("Source1",new Employee[] {emp1 , emp2 , emp3});

تم تعديل هذه المشاركة بواسطة houssam11350_11350 في 9 أكتوبر 2011 في 19:52

1

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#5

أحسنت أخي الحبيب بارك الله فيك ....

الطريقة ناجحة 100% ، ولم أفكر بالكلاس مطلقا ...

بارك الله فيك ونفع بعلمك أخي الغالي

شكرا جزيلا

#6

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

اقتباس
بارك الله فيك ونفع بعلمك أخي الغالي

بارك الله بك .و يسر لك أمورك

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

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