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

فرز أول رقم بدون تكرار لوضعه في جدول آخر


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

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

الإخوة الكرام .. في الملف المرفق حقل (MUSNAD) في جدول (TAB) هو حقل رقمي مرتبط بجدول (Tab_Msaneed)

والمطلوب طريقة لفرز أول رقم بدون مكرراته لوضع رقم (MNO) الخاص به في حقل (MNO) في جدول (Tab_Msaneed)

بحيث يدل على رقم أول حديث يبدأ به هذا المسند

وهل يمكن أن يتغير هذا الرقم تلقائيا إذا تغير ترتيب الأحاديث بسبب الحذف والإضافة والنقل أم لا بد من تحديث هذا الحقل بين الحين والآخر ؟

Musnad.rar

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

  • أفضل إجابة

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

 

1. مرحلة التحليل:

بما ان العلاقة بين الجدولين
image.png.c1c1dbbbbf82cb16bb16ba5d49a2d1ee.png

.

اذن خلينا نشوف القيم كما هي بين الجدولين:

image.png.3874018517f3b47c0292252ac04b045b.png

.

اذن هذه هي قيم MNO التي نريدها من مجاميع الحقل MUSNAD ،

اي ان مجاميع الحقل MUSNAD ويقابلها اقل قيمة للحقل MNO

image.png.64a588d38ed235d14015656e07b0bb09.png

.

2. مرحلة التطبيق:

في الجدول TAB ، يجب تجميع الحقل MUSNAD ، واخذ اقل قيمة من الحقل MNO لكل MUSNAD

image.png.e24b4f772ce9bcfbca169cd75d866f8f.png

.

وهذه هي النتيجة ، وللتأكد (تطابق البيانات كما في الصورة اعلاه) :

image.png.6eb600ff41e9375c0d019c15e36b16a6.png

.

نريد جملة SQL الاستعلام (نفس الاستعلام ، ولكننا نريد الحقل MNO فقط)

image.png.1781cab4596e879f15e592ae71edb1b6.png

.

نضع جملة SQL الاستعلام السابق كمعيار للحقل (هذه يسمى استعلام فرعي) :

image.png.4c99e4eda87bb8e0ba024ac3703020ab.png

.

 

 

15 ساعات مضت, nssj said:

هل يمكن أن يتغير هذا الرقم تلقائيا إذا تغير ترتيب الأحاديث بسبب الحذف والإضافة والنقل

هذا يصير فقط اذا كان فيه علاقة بين الحقلين :

بسبب وجود علاقة بين الجدولين TAB و Tab_Msaneed ، فنستطيع اضافة حقل آخر في العلاقة ، ولكن الاكسس لا يقبل بسبب عدم وجود فهرسة للحقل MNO في الجدول Tab_Msaneed

image.png.25777066ce1ca8774b960609d3cb7708.png

 

الطريقة الاخرى لعمل هذه العلاقة:

1. نضيف الجدول TAB مرة اخرى في العلاقات ، فقام الاكسس بتسميته TAB_1 ،

2. نسحب الحل MNO من الجدول TAB_1 الى الحقل MNO في الجدول Tab_Msaneed (او العكس) ، فتظهر لنا هذه النافذة ،

نختار الاختيارات الثلاث:

Enforce : يتأكد من ان القيم صحيحة في الجدولين ، ولا يسمح بعمل قيمة في جدول غير موجودة في الجدول الآخر (الحقل الرأس) ،

Update : عند تبديل القيمة في الحقل الرأس ، تلقائيا تتغير القيمة في الحقل الآخر (سواء كان سجل او مجموعة سجلات) ،

Delete : عند حذف لقيمة في الحقل الرأس ، يتم حذف القيمة في الحقل الآخر  (سواء كان سجل او مجموعة سجلات) .
image.png.206d1a7a0b4eb973df5bbdec32ac3910.png

.

image.png.9519b1f6227c98167845c78650c9d76c.png

 

جعفر

1418.Musnad.accdb.zip

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

عفوا ، كان لازم اكتب هذه الجملة في مشاركتي السابقة ، ونسيت 😁

انتبه للعلاقة الجديدة التي عملناها ، فقد تؤثر على اشياء اخرى في برنامجك ،

وتذكّر ، ان تجربتي كانت لهذه الجزئية لبرنامجك ، بعيدا عن بقية البرنامج 🙂

 

جعفر

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

كل الشكر والتقدير لك أخي الكريم جعفر

لكن معلش طول بالك وما تزعل مني .. نسيت معلومة مهمة ومؤثرة في النتائج .. كان لازم أتذكرها 🙄

وهي أن المطلوب إحضار أول قيمة لـ (MNO) على أساس أن الترتيب على حسب (TNO) وليس على (MNO)

مهمة (TNO) هي ترتيب الأحاديث وهو رقم يتغير حسب الإضافة والحذف والنقل، أما (MNO) فهو رقم ثابت ينتقل مع الحديث حيثما ذهب

للتوضيح أضفت سجل في أول مسند أبي بن كعب (7) ورقم (MNO) لهذا السجل (2000) ورقم (TNO) هو [14]

005.jpg.84a5ddb621c10d1c7ea328bb3a7f590e.jpg

فالمطلوب إحضار رقم (MNO   : 2000) لأنو هو الأول في الترتيب وليس (MNO  : 4)

طبعا حاولت أعمل حالي فهمان وأصلح غلطتي لحالي بدون ماأزعجك .. عشان هيك تأخرت في الرد .. وبعد كل التجارب : مازبطت معي 😐

ولأني كنت غرقان في التجارب ما قرأت مشاركتك الأخيرة إلا لما جهزت هذا الرد .. على كل إذا تجاوزنا مشكلة الترتيب على (TNO) ففي عندي حكي بخصوص الموضوع الثاني .. برضو شغلة ما كنت منتبه إلها  🙄😐

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

اريدك تعمل ملف اكسل فيه بعض النتائج الصحيحة (على الاقل 4 - 5) ، للحقول الثلاثة ، ومن البيانات الموجودة في مرفقك الاصل (وبدون عمل اضافات عليه) ،

حتى اقدر افهم الموضوع كاملا 🙂

 

جعفر

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

في ٢٥‏/١١‏/٢٠٢١ at 19:22, jjafferr said:

حتى اقدر افهم الموضوع كاملا 🙂

فعلا أخي الكريم .. هذا بيت القصيد: إني أقدر أشرح ما هو المطلوب وأوضح الصورة بدقة ، بس مش دايما بتزبط معي للأسف 😐

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

أخي الكريم .. جدول (Tab_Msaneed) فيه ترتيب المسانيد الموجودة في الملف الرئيسي (TAB) لأن الأحاديث مرتبة على المسانيد، والجدولين مرتبطين بالمفتاح الرئيسي (MNO) ورقم كل مسند موجود في حقل (MUSNAD) في الملف الرئيسي .. وهذا طبعا بعد مساعدتك المشكورة في الموضوع السابق (نسخ أول سطر يبدأ بقيمة معينة ووضعها في حقل في جدول آخر)

المطلوب الآن هو معرفة أول حديث يبدأ به كل مسند في الجدول الرئيسي ووضع رقم (MNO) الخاص به في حقل خاص في جدول (Tab_Msaneed) .. وهذا ما تم بفضل الاستعلام الذي تفضلت به

لكن فاتني أن أنبه أن ترتيب الأحاديث في الجدول الرئيسي هو حسب (TNO) وليس حسب (MNO) ، لأن الترتيب يتغير كثيرا حسب الإضافة والحذف والنقل، والمفتاح الرئيسي لا يقبل التعديل، فالمطلوب إحضار رقم أول حديث بناء على هذا الترتيب

* ولم يظهر خلل في الملف المرفق لأنه ملف مختصر تتوافق فيه أرقام الحقلين (MNO) (TNO)

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

يظهر هذا في الملف المرفق الجديد في موضعين:

1- مسند (3: مسند أبان المحاربي) فرقم (MNO)  لأول حديث فيه حسب الترتيب المعتمد هو (30001) بينما سيكون رقمه إذا كان الترتيب على أساس (MNO) هو (3)  وهي النتيجة التي أخرجها الاستعلام لأنه اعتبر أن الترتيب على أساس (MNO)

2- وكذلك في أول مسند (7: أبي بن كعب)  أول حديث فيه حسب الترتيب المعتمد هو (30007)  بينما الاستعلام جعله (4) لأنه فعلا أول حديث في هذا المسند على أساس أن الترتيب حسب (MNO)

006.jpg.fc93c9dc94719945cb55bb2e9f2cb1a8.jpg 

* وهنا قلت لحالي: طيب ليش الغلبة ووجع الراس .. خليني أعتمد على رقم (TNO) وبلاش من (MNO)

وبالاعتماد على شرحك الواضح للخطوات عدلت على الاستعلام بحيث يكون الاعتماد على   (TNO) ، وهكذا أدرج رقم (TNO) لأول حديث في كل مسند في حقل (First_TNo) في جدول (Tab_Msaneed)

ولكن ظهر أن هذا الأمر غير عملي .. وأن الأفضل إدراج رقم (MNO) للحديث لأن رقم (TNO)  يتغير باستمرار، ولم تنجح محاولة إنشاء علاقة مع خاصية (تتالي التحديث) بالاعتماد عليه لأنه من غير المناسب جعله مفتاحا رئيسيا

فالمطلوب إدراج رقم (MNO) بدل (TNO) وهذا ما لم أستطع فعله في نفس الاستعلام

* وللتوضيح أكثر: في الملف المرفق في جدول (Tab_Msaneed) ثلاثة حقول:

- (MNO) وتظهر فيه النتيجة بالاعتماد على الاستعلام الذي تفضلت به (Query2)

- (First_TNo) وتظهر فيه النتيجة بالاعتماد على الاستعلام المعدل (QueryTno)

- (First_MNO) وفيه النتائج المطلوب الوصول لها: رقم (MNO) لأول حديث في كل مسند على أساس أن الترتيب حسب (TNO)

007.jpg.dfaa412c51658a57709467bad1f6fc0f.jpg 

وتمكنت من الوصول لهذه النتيجة من خلال استعلام تحديث منفصل (QueryMno) يعتمد على نتيجة الاستعلام المعدل السابق (QueryTno)

والمطلوب إن أمكن الوصول لهذه النتيجة باستعلام أو كود واحد

لأنه سيتم استخدامه دوريا لتحديث البيانات كلما أدت عمليات الإضافة والنقل إلى تغيير الحديث الذي يكون في بداية المسانيد، أو إضافة مسند جديد في جدول المسانيد

1418.Musnad2.accdb

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

الحمد لله .. بعد عدة تجارب تم الوصول للمطلوب باستعلام واحد

 012.jpg.2e935e19001512df80c8fbb12c4966ea.jpg

وهذه التجارب الناجحة -وإن كانت قليلة- تشعرني إنو في أمل :jump:

جزاك الله خيراً أخي الكريم وأحسن إليك

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

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