السلام عليكم ورحمة الله وبركاته ...
قمت بطرح سؤال في السابق على هذا الرابط :
لنعد قليلا إلى تقارير مايكروسوفت القديمة ....
كانت التقارير أشبه م يكون بالفورم ، نقوم بإرسال القيم التي نريدها إلى الفورم مباشرة دون الحاجة إلى ربط التقرير بـ Datasource معين ....
التقارير الجديدة : لابد من إنشاء داتا سيت dataset وربط التقرير بهذا الداتا سيت ، سئمت من هذه الطريقة المتعبة ...
لنتخيل أن هناك جدول اسمه EmployeeInfos يحتوي على التالي : Name , Gender, ID , Salary , Depart ,
وما أريد أن يظهر التقرير لي البيانات وفق الاستعلام الذي أرغب به ، فمثلا لو أردت الاستعلام وفق الجنس إما ذكر أو أنثى أو الكل وفق الاستعلام الذي أكتبه في الـ DataSet الذي أنشأته من خلال Add Query ثم استعلام اختيار Select ثم كتابة الاستعلام التالي :
SELECT * FROM EmployeeInfos WHERE Gender = ?
وقمت بتصميم فورم وأضفت فيه ReportViewer وحددت الداتا سيت السابق ، وأضفت ComboBox1 وفيه (ذكر ، أنثى ، الكل ) ، ثم أضفت السب التالي :
Public Sub AnyThing()
Dim adapter As New DataSet1TableAdapters.EmployeeInfosTableAdapter()
Dim table As New DataSet1.EmployeeInfosDataTable
adapter.FillBy(table, ComboBox1.Text)
Dim myNewdatasource As ReportDataSource = New ReportDataSource("DataSet1", CType(table, DataTable))
Me.ReportViewer1.LocalReport.DataSources.Clear()
Me.ReportViewer1.LocalReport.DataSources.Add(myNewdatasource)
Me.ReportViewer1.LocalReport.Refresh()
Me.ReportViewer1.RefreshReport()
End Subوفي حدث SelectedIndexChanged للكومبو بوكس أقوم باستدعاء السب ، في الواقع هذا التقرير يعمل مع ( بنين - بنات ) ولكن مع ( الكل ) لا يعمل ، شئ منطقي لأنه لا توجد قيمه اسمها ( الكل ) في حقل Gender ، سيقول قائل : قم بإنشاء استعلام جديد في الـ DataTable الخاص بالجدول بدون شرط وقم باستدعائه ، وأقول حل جيد ، ولكن ليس هذا ما أريده ، أريد أن أتعامل مع التقرير بالكود من الصفر إلى الياء من تحميل التقرير الـ RDLC في الـ ReportViewer إلى إسناد DataSource و DataSet إلخ ، من الصفر إلى الياء ، كما كان العمل على التقارير السابقة .
قمت بعمل كل شئ ، إلا أن التقارير للأسف لا يمكن تصميمها بدون إضافة Dataset لها ، وهذا ما لا أريده ...
هل من حل جزاكم الله خير ؟؟؟ وأعتذر على الإطالة .....
