إذا استخدمت ReportViewer محليًا بدون تثبيت على الجهاز، يجب أن تضمّن جميع الملفات التابعة. هذه الملفات على الأقل:
Microsoft.ReportViewer.WinForms.dll
Microsoft.ReportViewer.Common.dll
Microsoft.ReportViewer.ProcessingObjectModel.dll
Microsoft.ReportViewer.DataVisualization.dll (إذا كنت تستخدم رسوم بيانية)
Microsoft.SqlServer.Types.dll (للدوال الخاصة ببيانات SQL مثل Geometry/Geography)
اجعل كل ملف من خصائص الملف داخل Visual Studio.:
2. تأكد من وجود ملف التقرير (RDLC) في المكان الصحيح
إذا كنت تستخدم تقارير من نوع RDLC، فتأكد أن الملف موجود داخل المشروع ومساره صحيح.
إذا كنت تستخدم الكود مثل:
PHP كود :
reportViewer1.LocalReport.ReportPath = "Reports\\MyReport.rdlc";
فتأكد أن:
الملف MyReport.rdlc موجود داخل مجلد Reports
خاصية Copy to Output Directory = Copy if newer
3. تأكد من توافق البيانات مع التقرير
إذا كان التقرير يعتمد على DataSet معين أو DataSource مخصص، تأكد مما يلي:
الاسم الداخلي للـ DataSet في الكود مطابق تمامًا للاسم داخل ملف RDLC
مثال:
PHP كود :
3. تأكد من توافق البيانات مع التقرير
إذا كان التقرير يعتمد على DataSet معين أو DataSource مخصص، تأكد مما يلي:
الاسم الداخلي للـ DataSet في الكود مطابق تمامًا للاسم داخل ملف RDLC
مثال:
تأكد أن "MyDataSet" يطابق الاسم الموجود في RDLC (داخل خصائص DataSet Name).
4. سجل الخطأ التفصيلي
أضف try-catch حول الكود الخاص بالتقرير لتظهر لك الرسالة الحقيقية:
PHP كود :
try
{
reportViewer1.LocalReport.ReportPath = "Reports\\MyReport.rdlc";
ReportDataSource rds = new ReportDataSource("MyDataSet", myData);
reportViewer1.LocalReport.DataSources.Clear();
reportViewer1.LocalReport.DataSources.Add(rds);
reportViewer1.RefreshReport();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), "خطأ", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
5. تثبيت Microsoft CLR Types إن لم تفعل
حتى لو كنت تستخدم الحل الثاني، في بعض الحالات ما زال ReportViewer يحتاج إلى:
Microsoft System CLR Types for SQL Server 2012
اختر النسخة المناسبة لنظامك (x86 أو x64).
إذا كنت تريد أن أساعدك بدقة، أرسل لي:
السطر الذي تستخدم فيه reportViewer
أو صورة من الخطأ الكامل
أو اسم RDLC واسم الـ DataSet