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

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

قام بنشر

السلام عليكم

الصورة أمامكم هي الجدول الوحيد في المرفق

اريد التأشير على مربع الخيار (تجديد) كما يلي :

يظهر في الصورة معرفات وتواريخ

في سجلات المعرف 1  تواريخ ثلاثة اريد الابقاء على سجل واحد فقط بدون تأشير وهو التاريخ الأكبر  ( ويتم التأشير امام السجلين الآخرين )

ومثله في سجلات المعرف 2  والمعرف 6

اما المعرفات 3 ، 4 ، 5  فتبقى كما هي بدون تأشير لأنها سجلات وحيدة

احبتي .. افضل التحديث عبر استعلام .. ولا بأس بغيره

 image.jpeg.76adf7051f81e33f1434c94fd46008d8.jpeg

testData.accdb

  • تمت الإجابة
قام بنشر

وعليكم السلام ورحمة الله تعالى وبركاته
اتفضل يا والدى الحبيب و استاذى الجليل و معلمى القدير استاذ @ابوخليل :fff:

 

39 دقائق مضت, ابوخليل said:

افضل التحديث عبر استعلام


الاستعلام الاول فقط ومنفردا سوف يلبى رغبتك تماما :  ينفذ طلبك تماما


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

مثلا
- شغل الاستعلام الثالث اولا للتأشير على الجميع
-ثم الاستعلام الثانى لحذف اى تأشير عن السجل الذي يحمل أحدث تاريخ لكل usrID

النتيجة :

image.png.893da313e5d0e4d6d6f523bec2c8a8e1.png

 


 

 

testData -2.accdb

  • Thanks 1
قام بنشر
32 دقائق مضت, ابو جودي said:


الاستعلام الاول:  ينفذ طلبك تماما

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

 

تسلم الأنامل .. عاداتك تتحفنا بزيادات واحتياطات .. ما هو انت بذاتك تحفة

الاستعلام الأول هو المطلوب والثاني شامل وكامل

بارك الله فيك وزادك علما ورفعة .

  • Thanks 1
قام بنشر
في 22‏/7‏/2025 at 23:59, ابوخليل said:

تسلم الأنامل .. عاداتك تتحفنا بزيادات واحتياطات .. ما هو انت بذاتك تحفة

الاستعلام الأول هو المطلوب والثاني شامل وكامل

بارك الله فيك وزادك علما ورفعة .

الله يسلم حضرتك

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

جزاكم الله خيـــــــــــرا على دعواتكم الطيبة :fff:

قام بنشر

السلام عليكم : ما شاء الله كم نتعلم من هذا الحوار الراقي بين استاذة المنتدي 

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

UPDATE tblEshtrakatTsdeed AS t1 SET t1.jad = True
WHERE EXISTS (
    SELECT 1
    FROM tblEshtrakatTsdeed AS t2
    WHERE t2.usrID = t1.usrID
      AND t2.lstDate > t1.lstDate
);

و جزاكم الله خيرا 

قام بنشر
11 ساعات مضت, mohammed farhat said:

السلام عليكم

وعليكم السلام ورحمة الله وبركاته

وبخصوص شرح جملة الاستعلام

الموضوع بيعتمد على مقارنة بين سجلات الجدول نفسه باستخدام دالة EXISTS واستعلام فرعي

الاستعلام يقوم بتحديث جدول tblEshtrakatTsdeed وبالتحديد الحقل jad بحيث يتم تعيين قيمته إلى True للسجلات التي تستوفي شرط معينه

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

خلينى أفصل مكونات الاستعلام علشان نبسط الدنيا شوية

جزء التحديث UPDATE

UPDATE tblEshtrakatTsdeed AS t1 SET t1.jad = True

تم استخدام AS t1 لإعطاء الجدول اسم مستعار :t1
لتسهيل الإشارة إليه داخل الاستعلام خاصة عند مقارنة سجلات الجدول نفسه
و يتم تعيين قيمة العمود jad إلى True للسجلات التي تحقق الشرط 

شرط التحديث
 

WHERE EXISTS (
    SELECT 1
    FROM tblEshtrakatTsdeed AS t2
    WHERE t2.usrID = t1.usrID
      AND t2.lstDate > t1.lstDate
)

هذا الشرط يحدد السجلات في الجدول tblEshtrakatTsdeed (المحدد باسم t1) سيتم تحديثها بناء على وجود سجلات أخرى في نفس الجدول المحدد باسم :t2  والتى تحقق شروط معينة

دالة EXISTS: تتحقق مما إذا كان هناك سجل واحد على الأقل في الاستعلام الفرعي يحقق الشرط ليتم تحديث السجل في t1

 

الاستعلام الفرعي:

SELECT 1
FROM tblEshtrakatTsdeed AS t2
WHERE t2.usrID = t1.usrID
  AND t2.lstDate > t1.lstDate

SELECT 1: في استعلامات بها دالة EXISTS

بدلا من استرجاع بيانات فعلية يتم إرجاع قيمة ثابتة (1) لأننا نهتم فقط بوجود السجل وليس بمحتواه 

FROM tblEshtrakatTsdeed AS t2: نفس الجدول tblEshtrakatTsdeed ولكن باسم مستعار مختلف:t2 وذلك حتى نستطيع تمييزه عن t1

الشرط:

t2.usrID = t1.usrID: يتطابق معرف المستخدم (usrID) بين السجل في t1 والسجل في t2 هذا يعني أننا نبحث عن سجلات لنفس المستخدم

t2.lstDate > t1.lstDate: يتحقق مما إذا كان تاريخ السجل في t2 (الموجود في العمود lstDate) أحدث (أكبر) من تاريخ السجل في t1

قام بنشر

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

 

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