اذهب الي المحتوي
أوفيسنا

هل دالة Dcount تسبب بطى البرنامج


aaabade
إذهب إلى أفضل إجابة Solved by jjafferr,

الردود الموصى بها

لدي برنامج به حقل يقوم بالبحث عن الرقم الوظيفي المتكرر في استعلام ثم يظهر رساله اذا كان هناك تكرار. 

كان البرنامج يعمل بكفاءة ممتازة وبعد ادخال اكثر من 300 سجل لاحظت ان البرنامج بدء في البطئ والواجهه تتجمد عن العمل. 

فهل لهذه الداله علاقة يهذا الموضوع؟؟

واذا كانت هذه الداله سبب المشاكل فلماذا نستخدمها؟؟

رابط هذا التعليق
شارك

46 دقائق مضت, aaabade said:

لدي برنامج به حقل يقوم بالبحث عن الرقم الوظيفي المتكرر في استعلام ثم يظهر رساله اذا كان هناك تكرار. 

كان البرنامج يعمل بكفاءة ممتازة وبعد ادخال اكثر من 300 سجل لاحظت ان البرنامج بدء في البطئ والواجهه تتجمد عن العمل. 

فهل لهذه الداله علاقة يهذا الموضوع؟؟

واذا كانت هذه الداله سبب المشاكل فلماذا نستخدمها؟؟

المشكلة فى طريقة استخدامها وليس فى الدالة نفسها .. مثال اذا استخدمتها فى استعلام Query قد تسبب بطء شديد فيه على حسب عدد السجلات .. مثال اخر اذا استخدمتها فى نموذج Datasheet نفس المشكلة .. طيب الحل ايه ؟ فيه حلول كتير الحل الابسط على مثالك السابق تقوم بوضع الدالة فى حدث قبل التحديث Before Update للحقل المراد اختبار تكرار القيمة فيه ووضع رسالة تحدير فى حالة التكرار .. بالطريقة السابقة هتكون الدالة قامت بدورها دون كتابة نتيجتها فى اى مكان غير الذاكرة فقط .. والله اعلم .. بالتوفيق

  • Thanks 1
رابط هذا التعليق
شارك

  • أفضل إجابة

وعليكم السلام 🙂

 

مثل ما قال اخوي عمرو ، هناك عدة طرق للوصول الى طلبك ، ومن الخطأ وضع DCount واخواتها في استعلام ،

والافضل استعمال الاستعلام للحصول على النتيجة المطلوبة (وليس عن طريق استعلام المجاميع ، لأنه بطيء كذلك) ،

وحتى الدالة Dcount يمكن جعلها تعمل اسرع ، هكذا ، نستعمل * بدل اسم الحقل :

بدل
A = DCount("[Salary]","Table_Name","[ID]=" & myID)


استعمل
A = DCount("*","Table_Name","[ID]=" & myID)

 

جعفر

  • Like 2
  • Thanks 1
رابط هذا التعليق
شارك

منذ ساعه, jjafferr said:

وعليكم السلام 🙂

 

مثل ما قال اخوي عمرو ، هناك عدة طرق للوصول الى طلبك ، ومن الخطأ وضع DCount واخواتها في استعلام ،

والافضل استعمال الاستعلام للحصول على النتيجة المطلوبة (وليس عن طريق استعلام المجاميع ، لأنه بطيء كذلك) ،

وحتى الدالة Dcount يمكن جعلها تعمل اسرع ، هكذا ، نستعمل * بدل اسم الحقل :


بدل
A = DCount("[Salary]","Table_Name","[ID]=" & myID)


استعمل
A = DCount("*","Table_Name","[ID]=" & myID)

 

جعفر

اشكرك استاذ جعفر

رابط هذا التعليق
شارك

في ٢٤‏/٢‏/٢٠٢١ at 19:31, jjafferr said:

وعليكم السلام 🙂

 

مثل ما قال اخوي عمرو ، هناك عدة طرق للوصول الى طلبك ، ومن الخطأ وضع DCount واخواتها في استعلام ،

والافضل استعمال الاستعلام للحصول على النتيجة المطلوبة (وليس عن طريق استعلام المجاميع ، لأنه بطيء كذلك) ،

وحتى الدالة Dcount يمكن جعلها تعمل اسرع ، هكذا ، نستعمل * بدل اسم الحقل :


بدل
A = DCount("[Salary]","Table_Name","[ID]=" & myID)


استعمل
A = DCount("*","Table_Name","[ID]=" & myID)

 

جعفر

قمت باستبدال اسم الحقل بالنجمة و تحسنت استجابه البرنامج بشكل ملحوظ

 

شكرا لك على النصيحة

رابط هذا التعليق
شارك

في ٢٤‏/٢‏/٢٠٢١ at 20:31, jjafferr said:

وحتى الدالة Dcount يمكن جعلها تعمل اسرع ، هكذا ، نستعمل * بدل اسم الحقل :


بدل
A = DCount("[Salary]","Table_Name","[ID]=" & myID)


استعمل
A = DCount("*","Table_Name","[ID]=" & myID)

 

والسبب هو :

  • يقوم الاكسس بعمل فلترة/تصفية للسجلات حسب المعيار ،
  • ثم يقوم بحساب السجلات الخاصة بالحقل المطلوب ،
  • بينما في الواقع انت لا تريد حساب عدد السجلات التي في الجدول لحقل معين ، يهذا المعيار ، إنما انت تريد حساب عدد السجلات 🙂

 

ولجعل الدالة تعمل بطريقة اسرع ، فيجب ان يكون الحقل myID مفهرس (يجب ان تكون جميع الحقول التي تستعملها كمعيار مفهرسة ، سواء معيار في الكود او في استعلام) ، ثم ضغط واصلاح ، ثم جرب السرعة 🙂

 

جعفر

  • Like 1
رابط هذا التعليق
شارك

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information