مرحباً اخى %Eman%
حتى توضح الصورة لك جيداً
يجب عليك ان تعلم ان البرنامج الخاص بك وقاعدة بيانات هما 2 وليس 1
بمعنى ان البرنامج لا يمكنه تحديد ولا معرفة حالة قاعدة البيانات والمدة المستغرقة بها
ولكن كل ما يفعله البرنامج هو الانتظار حتى يقوم الثاني وهو قاعدة البيانات من الانتهاء لجلب البيانات الخاصة به
وسبب عدم نجاح عمل الـ progress bar هو ان الـ progress bar يتعامل مع الامر وقتى داخل البرنامج الاول
وحيث ان البرنامج الاول وهو البرنامج الخاص بك يقوم بالانتظار فهنا وظيفة الـ progress bar غير مجدية ولا تفعل شئ
لتبسيط الامر وتوضح الامر اكثر تخيل ان الـ progress bar
هو عبارة عن الجهاز الهضمي لجسدك
وتخيل ان البرنامج الخاص بك وقاعدة البيانات عبارة عن
البرنامج هو جسدك وقاعدة البيانات هو جسد شخص اخر
السؤال هنا تتخيل ان الجهاز الهضمي الخاص بك يمكنك ان يشعر بجسد الشخص الاخر ؟؟؟؟
الاجابة اكيد لا بطبيعة الحال
هنا انت بتتعامل مع الـ progress bar انك تريده ان يتعامل مع جسد اخر خارج نطاقه
طيب امته الـ progress bar يمكنه التعامل مع قاعدة البيانات
الحالة الوحيده عندما يكون قاعدة البيانات بداخل البرنامج وليس خارجه
مثل الـ Dataset وما شبه من تعامل مع قواعد البيانات التى تدرج بداخل السورس
طيب تعال نعرف اكتر الاكواد التى تكتب كل سطر بها عبارة عن ماذا
كل سطر من الاكواد التى تكتب هى عبارة عن اشارة مرور كما هى توجد بالطرق العامة
بمجرد الوصول الى سطر سيتوقف البرنامج حتى يتم اعطاء الاشارة الخضراء لينتقل الى الاشارة التالية
فتعال نقوم ان الاشارة الاولى عبارة عن الاتصال بقاعدة البيانات والاشارة الثانية هو كود تشغير التايمر لتحليل مدة تحميل الداتا
انت هنا فى خطاء فادح لو كنت بتتعامل بهذا الشكل
لان بطبيعة الحال عند الوقوف عن الاشارة لتحميل الداتا من قاعدة البيانات
انت هنا فى انتظار الاشارة تكون اخضر ولحدوث هذا يعنى ان تكون الداتا باكملها تم تحميلها
فهنا عند التنقل للاشارة الثانية وهو تحليل مدة تحميل الداتا ستجدها انها اخضر فعلياً بدون اى انتظار تحميل
لان سبق والداتا تم تحميله كاملاً
طيب الصح هنا ايه
الصح يجب عليك ان تضع كود التايمر اولاً لتحليل مدة تحميل الداتا
من ثم وضع كود تحميل الداتا بعدها هنا هتكون انت فعلت التالى
طلبت تشغير التايمر اللى يحتوى على كود تحميل الداتا هنا انت بتستغرق جزء من الثانية
وبمجرد تنفيذ كود بداخل التايمر مثلاً بعد ثانية من تشغيله
يتكون انت فعلياً فى الاشارة التالية خاصة كود تحميل الداتا وهنا سيكون التحليل يعمل بنفس الوقت لتحميل الداتا
طيب لحد هنا جميل يبقي فقط كيفية استشعار الـ progress bar بالجسد الثاني وهو قاعدة البيانات
فتتوقف المشكلة هنا كما شرحت بالاعلى بان الـ progress bar ما هو الا الجهاز الهضمي ولا يمكنه ان يشعر بالجسد الاخر
الا اذا جعلت قاعدة البيانات بداخل البرنامج اى بداخل الجسد نفسه
طيب الحل الوحيد لتمويه وعمل الـ progress bar ليعمل اثناء تحميل البيانات من قاعدة البيانات
الحل الوحيد هنا هو ان يكون تحميل البيانات داخل ادوات عن طريق For أو While بمعنى اصح ان يكون تحميل الداتا يمر بمرحلة الـ Loop
ويكون الامر عبارة عن كلما عمل اضافة بيان الى اداء وليكن datagridview أو مثلاً list ... الخ
يكون عملية الـ progress bar يقوم بتزايد 1 وحيث ان القيمة الادنى لـ progress bar هو 0
و العظمي هو اجمالى قيمة الداتا التى تم تحميلها من قاعدة البيانات ويتم عمل لها Loop لادراجها فى الفورم
لتوضح الفكرة والصورة اكثر انظر للرابط التالى
اتمنى الشرح يكون موضح كل ما اريدك ان تكون على علم به
وان لا يكون به اى متاهة فى شرح الامر كاملاً
تحياتى لك
وتمنياتى لك التوفيق