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

تحديث فوري لبيانات كريستال ريبورت!

مغلق
بدأه المهندس2004 في 9 أبريل 2004 · 1 رد · 1,628 مشاهدة · في تصميم وبرمجة التقارير
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

الإخوة الأفاضل/

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

قمت بعمل مشروع على VB.NET 2003.

هنالك جزء من البرنامج يجري بعض الحسابات ومن ثمّ يقوم بتخزينها في قاعدة بيانات أكسس ولنقل أن اسمها: GeneralAnalysis.mdb

يستخدم البرنامج تقريراً مصمماً على Crystal Reports ولنقل أنّ اسمه GeneralAnalysis.rpt

يتمّ استدعاء generalAnalysis.rpt كـ ReportSource من خلال CrystalReportViewe1r

إلى الآن وكلّ شيء يعمل على ما يُرام...

المشكلة:

لا يتمّ تحديث قاعدة البيانات بنتائج الحسابات الجديدة، وبالتالي فعند استدعاء التقرير لا تظهر ضمن البيانات الموجودة!!!

ملاحظة: قمت باستخدام نفس الكود الخاصّ بتحديث قاعدة اليانات بشكل منفصل في مشروع آخر، وكلّ شيء يعمل على ما يرام.

السؤال:

هل هنالك طريقة يمكن بها تمرير البيانات إلى التقرير (في كريستال ريبورت) دون الحاجة إلى تخزينها في قاعدة بيانات ومن ثمّ استدعاؤها؟

وإذا كان الجواب: لا

فكيف يمكن حلّ المشكلة؟

ارجو التكرُّم بالمساعدة ولكم جزيل الشكر، وعسى أن يكون ذلك في ميزان حسناتكم يوم لا ينفع مال ولا بنون إلاّ من أتى الله بقلب سليم.

#2

السلام عليكم جميعاً،،،

مع أنّ لي عتاب على الأخوة على عدم الردّ على الموضوع ولو بنصيحة أو اقتراح، إلاّ أنّني وتعميماً للفائدة أبيت إلاّ أن أنشر الحلّ الذي توصّلت إليه بعد بحث طويل...

أرجو أن يكون ذا فائدة...

'لاحظ أنّك بحاجة لإضافة مرجع
' Reference
' من نوع CRAXDDRT20
' أو المعروف بـ
' Crystal reports .NET ActiveX Designer Design 
'and Runtime Library 
'ويمككنك عمل ذلك من خلال إضافة مرجع جديد والإنتقال إلى 
'COM  
Dim myreport As New CRAXDDRT20.Report
Dim myApplication = New CRAXDDRT20.Application
Dim x As Short

'تحديد المسار الذي يوجد به التقرير
crReportDocumentPath = "d:\...\generalanalysis.rpt"
myreport = myApplication.OpenReport(crReportDocumentPath)

' تعطيل طلب القيم
myreport.EnableParameterPrompting = False


' إنشاء معامل قيمي جديد وإسناد قيمة إليه
'لاحظ أن عدد مرّات تكرار الحلقة يعتمد على عدد القيم التي تودّ تمريرها
'وذلك من خلال التحكّم يقيمة المعامل
For x = 1 To 3
    crParameterDiscreteValue = New ParameterDiscreteValue
    Select Case x
Case 1
    crParameterDiscreteValue.Value = MyFirstValue
Case 2
    crParameterDiscreteValue.Value = MySecondValue
Case 3
    crParameterDiscreteValue.Value = MyThirdvalue
    End Select

' إنشاء حقل معامل وتحديد إسمه
'لاحظ أنّ إسم المعمل هنا يجب أن يتطابق
' مع إسم حقل معامل قمت بإنشائه في التقرير سابقاً
    crParameterField = New ParameterField
    Select Case x
Case 1
    crParameterField.ParameterFieldName = "crFirstValue"
Case 2
    crParameterField.ParameterFieldName = "crSecondValue"
Case 3
    crParameterField.ParameterFieldName = "crThirdValue"
    End Select

'التأكُّد من أنّ هناك قيمة يُمكن تمريرها 
'لاحظ أنّ بإمامك تغيير القيمة 777 بأي قيمة أخرى تستطيع من خلالها
'اكتشاف عدم تمرير القيمة الصحيحة
    If crParameterDiscreteValue.Value Is Nothing Then
crParameterDiscreteValue.Value = 777
    End If

' إضافة قيمة حقل المعامل    crParameterField.CurrentValues.Add(crParameterDiscreteValue)

'مسح القيمة الحاليّة لمعامل التمرير
    crParameterDiscreteValue = Nothing

' إنشاء مجموعة معاملات قيمية جديدة وإضافة قيمة المعمل الحالي إليها
'لاحظ أن عمليّة الإنشاء للمجوعة تتم مرّة واحدة فقط!
    If x = 1 Then
crParameterFields = New ParameterFields
    End If
    crParameterFields.Add(crParameterField)

'مسح القيمة الحاليّة لحقل المعمل
    crParameterField = Nothing
Next

'ربط مجموعة المعاملات مع مستعرض التقارير
CrystalReportViewer1.ParameterFieldInfo = crParameterFields

'ربط مستعرض التقارير مع التقرير المراد عرضه
'لاحظ: يجب إجراء هذه الخطوة بعد الإنتهاء من عمليّات الإسناد والتمرير
CrystalReportViewer1.ReportSource = crReportDocumentPath

تم تعديل هذه المشاركة بواسطة المهندس2004 في 11 أبريل 2004 في 14:55

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

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