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

تقسيم سجلات الجدول الي مجموعات متساوية العدد


وائل طه

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

أهلا بك أخي ..

تستطيع عمل ذلك من خلال إنشاء عدة استعلامات،  ومن لوحة الخصائص Top Values  تكتب النسبة أو عدد السجلات المطلوب عرضها ..
ثم تنشيء استعلام آخر تكتب فيه نسبة السجلات ومن المعايير تستخدم دالة ()Not In لإخباره بأن يظهر السجلات غير الموجودة في الاسعلام الأول .. وهكذا

( ملاحظة ظريفة 🙂 : عدم إرفاق السائل لملف للتطبيق عليه ، يعني أنه يكتفي بالشرح النظري ولا يحتاج للتطبيق العملي ) 

image.png.1b8724610c1b5640a1059110d968f55b.png

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

15 ساعات مضت, وائل طه said:

لدي جدول اريد تقسيم سجلاته الي مجموعات بشروط وان تكون المجموعة الواحدة ١٠٠ سجل واستخراج اكبر واصغر قيمة لكل مجموعه

 

4 ساعات مضت, Moosak said:

ستطيع عمل ذلك من خلال إنشاء عدة استعلامات

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

في البداية نحتاج الى نموذج فارغ ونضع فية ثلاث حقول نصية وزري امر ونموذج فرعي لعرض السجلات مصدر سجلات النموذج الفرعي الجدول ولايهمنا كثير لكوننا سوف نتحكم بالمصدر عن طريق الكود

مربع النص الاول اسميته tx2 وقيمته الافتراضية 1والثاني tx3 وقيمته الافتراضية 100 والثالث tx10 تسمية الحقول امر راجع لك المهم تسمية الحقل تكون نفسها في الكود

الحقل النصي tx10 قيمته تساوي

="SELECT tbl_1.id, tbl_1.id_item
FROM tbl_1
WHERE (((tbl_1.id) Between " & [tx2] & " And " & [tx3] & "));"



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

الان زر الامر الاول اسميناه التالي ووضعنا فيه الكود

If Me.tx2 = 1900 Or Me.tx3 = 2000 Then: Exit Sub
Me.tx2 = Me.tx2 + 100
Me.tx3 = Me.tx3 + 100
Me.sub_frm.Form.RecordSource = [tx10]
Me.sub_frm.Requery

وزر الامر الثاني اسميناه السابق ووضعنا فيه الكود

If Me.tx2 = 1 Or Me.tx3 = 100 Then: Exit Sub
Me.tx2 = Me.tx2 - 100
Me.tx3 = Me.tx3 - 100
Me.sub_frm.Form.RecordSource = [tx10]
Me.sub_frm.Requery

والنتيجة يعرض لنا عند النقر على التالي 100 سجل ثم عند النقر  الـ 100 التاليه وهكذا ومثله ايضا في زر الامر السابق

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

حاولت ان اكتب الاكواد بطريقة بسيطة لسهولة ايصال المعلومة ولم اضع مثال لكوني اهتم فقط بالجانب النظري

تحياني

 

لقطة الشاشة 2022-06-11 131720.png

لقطة الشاشة 2022-06-11 131808.png

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

شكرا لك أخي مبرمج سابق مبدع بالفطرة ..🙂

أرى أنك أعتمدت على فرضية أن الحقل Id موجود ومرتب تصاعديا بدون وجود نواقص (حقول محذوفة) ..

ماذا لو أن حقل ال Id مكتوب هكذا xml0620220856 ؟

كيف نستطيع الحصول على ال 100 سجل الأولى ؟ ثم المائة التالية ؟

ولو كان لدينا 3 قوائم ListBox مثلا في نفس النموذج نريد فيها تقسيم السجلات إلى 3 أقسام متساوية .. كيف نفعل ذلك ؟؟

 

طبعا الهدف من السؤال هو تحريك الدماغ .. والاستفادة من خبراتكم .. وإثارة روح التحدي .. 👍🏼😁

 

 

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

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

أرى أنك أعتمدت على فرضية أن الحقل Id موجود ومرتب تصاعديا بدون وجود نواقص (حقول محذوفة) ..

ماذا لو أن حقل ال Id مكتوب هكذا xml0620220856 ؟

الطريقة الاسهل بدون تحريك دماغ ( هذا على افتراض وجوده) 😄

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

 

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

12 دقائق مضت, مبرمج سابق said:

الطريقة الاسهل بدون تحريك دماغ ( هذا على افتراض وجوده) 😄

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

 

يا اخي صرت احب موضوعاتك لانها تتحدث من مبدأ التفكير خارج الصندوق ولا تخلو من الطرفة ... زادك الله علما وشكرلك ... 

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

3 ساعات مضت, ابو البشر said:

يا اخي صرت احب موضوعاتك لانها تتحدث من مبدأ التفكير خارج الصندوق ولا تخلو من الطرفة ... زادك الله علما وشكرلك ... 

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

3 ساعات مضت, مبرمج سابق said:

نجعل المصدر استعلام ونظيف له حقل ترقيم تلقائي

من المؤكد ان الموقع يزخر بالامثلة للترقيم في الاستعلام

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

الطريقة الاولى اذا كان لدينا في الجدول حقل ترقيم ولكن توجد ارقام محذوفة

Expr1: DCount("[id]";"tbl_1";"[id]<=" & [id])

الطريقة الثانية اذا كان الجدول لا يحتوي اي حقل ترقيم وانما حقول نصية فقط ⬇️

Expr2: (Select Count(1) FROM [tbl_1] A
WHERE A.item <=[tbl_1].[item])
                              
item حقل نصي   

هنا ☝️من الافضل استخدام تسمية توضيحية حتى لا تظهر لنا رسالة بطلب قيمة معلمة .

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

والى لقاء في موضوع اخر باذن الله

تحياتي

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

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