اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

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

قام بنشر

السلام عليكم

في المرفق :

جدول أسماء وأمام كل اسم مربعات اختيار  تمثل ايام الأسبوع   chekVuc1= يوم الأحد  chekVuc2= يوم الاثنين .. وهكذا حتى chekVuc7= يوم السبت

عندما نأشر عليها فنحن نحدد العطلة الاسبوعية لهذا الاسم .. فاحتمال تكون عطلته يوم الاحد فقط  وممكن تكون الاربعاء والخميس أو الجمعة والسبت

أو اكثر من يومين

...................

نريد دالة في الاستعلام المرفق و في حقل day_id  الذي يمثل رقم اليوم في الاسبوع

بناء على اختيار الاسم من النموذج يتم اخفاء يوم أو ايام العطلة في الاستعلام

Database1.rar

  • ابوخليل changed the title to المطلوب دالة كمعيار في الاستعلام تحمل قيمتين أو اكثر لتصفية أيام الأسبوع
قام بنشر
SELECT tblNames.UserId, tblNames.s_name, tblDays.day_id, tblDays.dayNm
FROM tblDays, tblNames
WHERE tblNames.UserId = [Forms]![Form1]![Combo0]
    AND (
        (tblDays.day_id = 1 AND NOT tblNames.chekVuc1) OR
        (tblDays.day_id = 2 AND NOT tblNames.chekVuc2) OR
        (tblDays.day_id = 3 AND NOT tblNames.chekVuc3) OR
        (tblDays.day_id = 4 AND NOT tblNames.chekVuc4) OR
        (tblDays.day_id = 5 AND NOT tblNames.chekVuc5) OR
        (tblDays.day_id = 6 AND NOT tblNames.chekVuc6) OR
        (tblDays.day_id = 7 AND NOT tblNames.chekVuc7)
    );


اعتذر عندى مشكلة بالانترنت
لا استطيع رفع مرفقات

استاذى الجليل ومعلمى القدير و والدى الحبيب :fff:

لا اعرف هل الافكار فى هذا الموضوع مشابهه ام تساعد فى تحقيق اى من اهدافكم الحالية او المستقبلية ام لا ولكن احسست بوجه شبه من بعيد او من قريب بينهم 

 

  • Like 1
  • Thanks 1
قام بنشر

الف شكر لكم احبتي

الحلول كلها تعطي نتيجة صحيحة ،، وحل الأخ موسى الطف وأخف

 

منذ ساعه, ابو جودي said:

لا اعرف هل الافكار فى هذا الموضوع مشابهه ام تساعد فى تحقيق اى من اهدافكم الحالية او المستقبلية ام لا ولكن احسست بوجه شبه من بعيد او من قريب بينهم 

نعم اطلعت عليه الآن  يوجد وجه شبه .. ولكن الحلول هنا افضل في التعامل مع النتيجة

اكرر شكري وامتناني ،،

  • Like 1
  • Thanks 1
قام بنشر

السلام عليكم

1 ساعه مضت, ابوخليل said:

وحل الأخ موسى الطف وأخف

طبعا وبادئ ذى بدئ اخى موسي فوق راسي وردى التالى ليس تقليلا او شئ من هذا القبيل اطلاقا ولكن فقط هذه وجهة نظرى قد اكون محطئ فيها وقد أصيب


احل اخى موسي يبدو الطف فى الشكل الظاهرى ولكن ليس بالضرورة أخف

تعتمد طريقة اخى موسى على انشاء سلسلة نصية و معالجة النص باستخدام (InStr وIIf) مما قد يكون بطئ نسبيا مع مرور الوقت وبالأخص مع وجود بيانات كبيرة

بينما تعتمد طريقتى المتواضعة على استخدام شروط منطقية صريحة (AND - OR - NOT) والتى بدورها سوف تكون اسرع مع محرك الاستعلام  لان التحقق يتم على القيم مباشرة دون تكوين سلاسل أو بحث نصي

 

قاعدة ذهبيه مع الاستعلامات :
دائما الأولوية للمنطق المباشر أفضل من الاعتماد على الحيل النصية 

قام بنشر
18 دقائق مضت, ابو جودي said:

تعتمد طريقة اخى موسى على انشاء سلسلة نصية و معالجة النص باستخدام (InStr وIIf) مما قد يكون بطئ نسبيا مع مرور الوقت وبالأخص مع وجود بيانات كبيرة

 

حبيبنا @ابو جودي اقرأ تعليق الأستاذ جعفر هنا 🙂 : 

في 12‏/7‏/2025 at 11:31, jjafferr said:

ملاحظة هامة:

اذا كان حجم الشاشة يعرض 30 سجل (مثلا) ، واذا كان عندنا استعلام به 100 او 10000 سجل (اي رقم اكبر من حجم العرض 30) ، وبغض النظر عن المحتويات والقيم  والاوامر والمعادلات في الاستعلام ،

فالاكسس يقوم بحساب السجلات المعروضة على الشاشة فقط ، وفي حالتنا فالاكسس يحسب نتائج 30 سجل فقط ،

وعليه ، اذا كان هذا الاستعلام هو مصدر بيانات لنموذج او تقرير ، فلن يكون هناك تأخير وبطئ في العرض (طبعا سيكون هناك بطئ بسيط ، ولكن ليس كما هو الاعتقاد السائد بأن البطئ سيلاحظه المستخدم) ،

فالمصطلح المتداول في البطئ ، هو اذا اردت جلب بيانات الاستعلام كاملا دفعة واحدة ، مثل اذا اردت ان تبحث عن قيمة معينة فيه ، او تصدير جميع البيانات دفعة واحدة الى ملف اكسل او pdf ، بينما لا يوجد بطئ عند الطباعة لان الطباعة تتطلب بيانات صفحة واحدة فقط وهي الصفحة التي يتم طباعتها حاليا (بمعنى آخر ، حتى لو اردت طباعة 1000 صفحة ، فانت تطبعها صفحة صفحة) .

مع ملاحظة تفادي استعمال فرز/تصفية للحقول التي بها معادلات والحقول التي تستعمل الامر Dlookup والحقول التي تنادي دوال خارجية ، لأنه هنا الاستعلام يجب ان يقوم بحساب قيم جميع السجلات ، ثم يقوم بعملية الفرز/التصفية.

 

لهذا السبب ، فمناداة دالة خارجية (فيها معادلات فقط) لا تعمل بطئ عند استعمالها ، حسب ملاحظاتي اعلاه 🙂

 

وحسب ما يظهر أن الاستعلام هنا لا يتعدى السبع سجلات ، وهي بعدد أيام الأسبوع. :rol:

  • Thanks 1
قام بنشر

الاكسس يقوم بحساب السجلات المعروضة على الشاشة فقط عندما يكون ذلك داخل نموذج وليس داخل استعلام 

هذا حسب فهمى المتواضع قد اكون مخطئ.

5 دقائق مضت, Moosak said:

وحسب ما يظهر أن الاستعلام هنا لا يتعدى السبع سجلات ، وهي بعدد أيام الأسبوع

ربما هذا الظاهر فقط الان :yes:

 

ولكن انا دائما مع الاستعلامات اعمل وفق هذه القاعدة الذهبية
دائما الأولوية للمنطق المباشر أفضل من الاعتماد على الحيل النصية 

 

 

عند فتح استعلام مباشرة (Query View أو من الكود) Access يقوم بتحميل كل السجلات دفعة واحدة وليس فقط الظاهرة على الشاشة

يعني:

سواء كان عندك 100 أو 1000,000 سجل

وسواء كان حجم الشاشة يعرض 30 فقط او حتى 10

بمجرد فتح الاستعلام مباشرة (من نافذة Access أو من الكود) يقوم Access

  • بتنفيذ الاستعلام بالكامل من البداية إلى النهاية
  • ويحسب ويقوم بمعالجة البيانات فى كل الأعمدة بما فيها الدوال مثل DLookup أو أي دوال خارجية
  • ثم يظهر أول 30 سجل فقط او اول 10 سجلات حسب حجم الشاشة لكن المعالجة تمت لكل السجلات بالفعل
قام بنشر

وتوضيحا فقط وحسب فهمى لقول استاذى الجليل ومعلمى القدير و والدى الحبيب الاستاذ جعفر
 

- الاكسس يعالج فقط السجلات المعروضة على الشاشة (مثلا 30)؟
صحيح فقط في حالة النماذج (Forms)
وغير صحيح في حالة فتح الاستعلام مباشرة أو في التقارير أو التصدير الاكسس ينفذ الاستعلام بالكامل ويحسب النتائج لكل السجلات


- إذا كان الاستعلام مصدرا لنموذج فلن يكون هناك بطء ملحوظ؟
صحيح إذا لم تستخدم دوال خارجية في حقول يتم عليها فرز/تصفية

لو كان هناك:
فرز أو تصفية على حقل فيه دالة DLookup أو دالة VBA خارجية أو تحميل بيانات من جدول كبير بدون فهرسة مناسبة


- الطباعة لا تسبب بطء لأنها تطبع صفحة صفحة؟
غير دقيق: الاكسس يقوم بتجهيز التقرير بالكامل قبل عرض أول صفحة أي دوال خارجية أو معادلات تحسب على كل السجلات قبل العرض والطباعة


- لا يوجد بطء عند استخدام دوال خارجية إذا لم تكن هناك عمليات فرز أو تصفية؟
صحيح تماما في حالة:
استخدام الاستعلام كمصدر نموذج أو عرض النتائج فقط دون فرز/تصفية على الحقول التي تنادي دوال خارجية
لكن عند فتح الاستعلام مباشرة أو فرز/تصفية الحقول المحسوبة الاكسس يجبر على حساب القيم لكل السجلات

 

ردودى السابقة لتحليل فهمى لمشاركة الاستاذ جعفر حسب فهمى ومعلوماتى الشخصية وان كان فهمى خاطى أنتظر التصحيح من اساتذتى العظماء 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

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

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

Important Information