بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته ،
بفضل الله تم ايجاد حل لمشكلة تحديث التقارير من داخل الكريستال ريبورت. واليكم التوصيف والحل
وصف الموضوع:
أ - الادوات المستخدمة: VB6 محدث الى SP6 بالاضافة الى كريستال ريبورت 10
ب - وصف المشكلة : تكمن المشكلة في انك اذا قمت بتحديث بيانات قاعدة بيانات من داخل الفجوال بيسك ومن ثم قمت بالدخول الى قسم الكريستال ريبورت للطباعة فانك ستجد البيانات القديمة وهي البيانات لحظة تشغيل برنامج الفجوال بيسك اول مرة وبالتالي فلو اجريت عمليات تحديث بيانات لقاعدة البيانات من داخل الفجوال ومن ثم دخلت لطباعة البيانات فانك لن تشاهد البيانات المحدثة بل البيانات الاولى عندما اشتغل الفجوال بيسك اول مرة. وهذا رابط تطرح فيه المشكلة ويمكن الاطلاع على المشكلة من خلال مشاركات اعضاء في هذا المنتدى تحديث لتقارير الكريستال ريبورت
الحل الاول: وهو حل سهل ويعرفه الكثير ولكنه يدويا وهو ان تجعل خاصية (كونترول) الكريستال الى EnableRefreshButton الى TRUE وبالتالي يظهر رمز REFRESH وهو رمز صورة صغيرة لونها اصفر يشبه اشارة تحذير من صاعق كهرباء وتبدو هكذا

عند الضغط عليها يتم تحديث البيانات.
الحل الثاني: ويعرفه الكثير ايضا وهو ان تخرج من البرنامج ثم تدخل مرة اخرى فتتحدث البيانات ولكنه حل غير منطقي
الحل الثالث : وهو الاهم لانه يحدث بشكل تلقائي وهو ان تضيف مُؤقت (تايمر) للفورم الذي يحوي التقرير وليكن اسمه TIMER1 تضع داخل حدث التايمر بالشكل التالي:
Timer1.Enabled = False frmReport.CRViewer1.Refresh
,وتضع اعدادات التايمر داخل الحدث CRViewer1_GotFocus بافتراض ان اسم كنترول الكريستال CRViewer1 وان اسم الفورم الذي يحوي التقرير هو frmReport
Timer1.Interval = 3000 Timer1.Enabled = True
ال 3000 تمثل 3 ثواني يمكن تقليل الوقت او زيادته بحسب التجربة.
انتهى والحمد لله



