21-04-25, 07:30 PM
إذا استخدمت 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، فتأكد أن الملف موجود داخل المشروع ومساره صحيح.
إذا كنت تستخدم الكود مثل:
فتأكد أن:
الملف MyReport.rdlc موجود داخل مجلد Reports
خاصية Copy to Output Directory = Copy if newer
3. تأكد من توافق البيانات مع التقرير
إذا كان التقرير يعتمد على DataSet معين أو DataSource مخصص، تأكد مما يلي:
الاسم الداخلي للـ DataSet في الكود مطابق تمامًا للاسم داخل ملف RDLC
مثال:
تأكد أن "MyDataSet" يطابق الاسم الموجود في RDLC (داخل خصائص DataSet Name).
4. سجل الخطأ التفصيلي
أضف try-catch حول الكود الخاص بالتقرير لتظهر لك الرسالة الحقيقية:
5. تثبيت Microsoft CLR Types إن لم تفعل
حتى لو كنت تستخدم الحل الثاني، في بعض الحالات ما زال ReportViewer يحتاج إلى:
Microsoft System CLR Types for SQL Server 2012
اختر النسخة المناسبة لنظامك (x86 أو x64).
إذا كنت تريد أن أساعدك بدقة، أرسل لي:
السطر الذي تستخدم فيه reportViewer
أو صورة من الخطأ الكامل
أو اسم RDLC واسم الـ DataSet
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.:
PHP كود :
Copy Local = True
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
مثال:
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
