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

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

قام بنشر

السلام عليكم

اخواني واحبتي

في الجدول tblCtrlDetails

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

الوقت الحالي محصور بين وقتين (بداية ونهاية )

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

الأيام  :  أيام الأسبوع  : الأحد /الاثنين / الثلاثاء / الأربعاء / الخميس

         نهاية الأسبوع  : الخميس / الجمعة / السبت

لاحظ ان يوم الخميس مشترك

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

لك مطلق الحرية في تغيير اوقات الفترات ... والأيام

واعتقد من اجل التجربة يجب العبث بوقت جهاز الحاسوب

Database1.accdb

قام بنشر

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

هل هذا ما تريد الوصول إليه ؟ 

image.png.81256e34e5e279b60821983787eb61ab.png

قدمت وقت الفترة الأولى لكي يظهر معي السجل .. 🙂 

حاس أن الموضوع فيه تعقيد أكثر مما أتصور 😅🖐️

Database1.accdb

قام بنشر

 نعم .. تماما .. كما في الصورة

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

 

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

 

حاس أن الموضوع فيه تعقيد أكثر مما أتصور 😅🖐️

 

المهم  مع تطبيق الفترة الزمنية  ايضا مطابقة الأيام حسب الصلاحية

من صلاحيته ايام الاسبوع لايظهر في الجمعة والسبت

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

قام بنشر (معدل)

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

حسب فهمي البسيط للفكرة ، اسمحولي أن أشارك بهذه الفكرة البسيطة ، حيث في الاستعلام Query2 الفكرة الأولى والتي اعتقد انها لا تعتمد على ان يوم الخميس مشترك ، وفي الاستعلام النهائي Query3 اعتقد انه هو المطلوب ( ما لم أكن قد فهمت الفكرة بشكل متسرع كالعادة 🤣 )

 

SELECT c.usrID, d.work_name AS [نوع العمل], f.fatra_name AS الفترة, f.first_time AS [وقت البداية], f.last_time AS [وقت النهاية], TimeValue(Now()) AS [الوقت الحالي], Format(Date(),"dddd",1) AS [اليوم الحالي]
FROM (tblFatrat AS f INNER JOIN tblCtrlDetails AS c ON f.fatraid = c.fatraType) INNER JOIN tblDaysWork AS d ON c.workType = d.workID
WHERE (((f.first_time)<=TimeValue(Now())) AND ((f.last_time)>=TimeValue(Now())) AND ((c.workType)=1) AND ((Weekday(Date())) Between 1 And 5)) OR (((f.last_time)<[f].[first_time]) AND ((TimeValue(Now()))>=[f].[first_time] Or (TimeValue(Now()))<=[f].[last_time]) AND ((c.workType)=1) AND ((Weekday(Date())) Between 1 And 5)) OR (((f.first_time)<=TimeValue(Now())) AND ((f.last_time)>=TimeValue(Now())) AND ((c.workType)=2) AND ((Weekday(Date())) In (5,6,7))) OR (((f.last_time)<[f].[first_time]) AND ((TimeValue(Now()))>=[f].[first_time] Or (TimeValue(Now()))<=[f].[last_time]) AND ((c.workType)=2) AND ((Weekday(Date())) In (5,6,7)));

image.png.401f8314226ea586d1732f53ac86d0c7.png

 

Database2.accdb

 

 

 

تم تعديل بواسطه Foksh
قام بنشر
36 دقائق مضت, Foksh said:

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

حسب فهمي البسيط للفكرة ، اسمحولي أشارك بهذا الاستعلام :-

اهلا اخي @Foksh

وااااااو  الأمر معقد بالنسبة لي  باستخدام استعلامات وسيطة ومعايير  كثيرة

اتمنى يكون الحل أسهل مباشر ومحكم .. على احتمال تغير الفترات بالزيادة او النقص

الوقت او الفترة وتم التعامل معها بشكل مباشر بسيط في مثال الأخ موسى

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

قام بنشر

وجدت حلا 

عملت دالة بل اثنتين .. لأن يوم الخميس مشترك

هذه لوسط الاسبوع جميع الأيام ..... ولآخر الاسبوع فقط الجمعة والسبت
Public Function funDayInweek()
Dim i As Integer
If Weekday(Date) >= 1 And Weekday(Date) <= 5 Then
i = 1
funDayInweek = i
ElseIf Weekday(Date) >= 6 And Weekday(Date) <= 7 Then
i = 2
End If
funDayInweek = i
End Function
  
                                               
  ثم عملت الثانية وخصصتها لنهاية الاسبوع يوم الخميس فقط
 
Public Function funDayInweek5()
If Weekday(Date) = 5 Then
funDayInweek5 = 2
Else
funDayInweek5 = Null
End If
End Function

يوجد في المثال نسخة طبق الأصل من الدالتين .. استبدلت فيها دالة استخراج اليوم  بمتغير  .. من اجل الفحص والتأكد من النتيجة

Database3.rar

قام بنشر

جميل جداً جداً ..

بسيط وسهل القراءة . ولكن ممكن تعليق صغير أستاذي ومعلمي الفاضل ؟؟

الدالة funDayInweek5 ، سوف ترجع القيمة 2 فقط إذا كان اليوم هو الخميس (5) بدون أي تحقق من الوقت !! 

وهذا يعني انه في الاستعلام ، الشرط 

OR (((tblCtrlDetails.workType)=funDayInweek5()))

 سيعيد جميع السجلات التي يكون فيها workType = 2 = يوم الخميس ، بغض النظر عن الوقت .

 

أليس هذا صحيحاً ؟؟

قام بنشر (معدل)

تمام ,, ولكن فيما يخص الدمج أمره على ما أعتقد سيكون دون الاعتماد على مصفوفات على سبيل المثال ، لأنه وللأسف لا يمكن استخدام المصفوفات مباشرة في المعيار داخل الاستعلام .

لذا ، هذا اقتراح بسيط :-

 

Public Function IsValidWorkType(workTypeValue As Integer) As Boolean
    Dim dayNum As Integer: dayNum = Weekday(Date)
    
    Select Case dayNum
        Case 1 To 4
            IsValidWorkType = (workTypeValue = 1)
        Case 5
            IsValidWorkType = (workTypeValue = 1 Or workTypeValue = 2)
        Case 6, 7
            IsValidWorkType = (workTypeValue = 2)
        Case Else
            IsValidWorkType = False
    End Select
End Function

 

وسيكون الاستعلام بعد مقترحي السابق :-

SELECT tblCtrlDetails.usrID, tblCtrlDetails.workType, tblCtrlDetails.fatraType, tblFatrat.first_time, tblFatrat.last_time, TimeValue(Now()) AS [Current_Time]
FROM tblFatrat INNER JOIN tblCtrlDetails ON tblFatrat.fatraID = tblCtrlDetails.fatraType
WHERE (((tblFatrat.first_time)<=tblFatrat.last_time) And ((TimeValue(Now())) Between tblFatrat.first_time And tblFatrat.last_time) And ((IsValidWorkType([workType]))<>False)) Or (((tblFatrat.first_time)>tblFatrat.last_time) And ((TimeValue(Now()))>=tblFatrat.first_time Or (TimeValue(Now()))<=tblFatrat.last_time) And ((IsValidWorkType([workType]))<>False));

 

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

هل اعتمد الحل ؟ .. ام لك رأي آخر افضل ؟

العفو معلمي الفاضل ، هذا يعود لحاجتك من الناتج العائد إن كان يخدم مطلبك أم لا ...

وأتمنى أن لا أكون قد ابتعدت عن مسار المطلوب 😅😅

فلي عادة أن أنحرف بالتفكير يميناً ويسارا  :biggrin: 

تم تعديل بواسطه Foksh
  • Like 2
قام بنشر
في 17‏/6‏/2025 at 10:48, ابوخليل said:

في الجدول tblCtrlDetails

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

الوقت الحالي محصور بين وقتين (بداية ونهاية )

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

الأيام  :  أيام الأسبوع  : الأحد /الاثنين / الثلاثاء / الأربعاء / الخميس

         نهاية الأسبوع  : الخميس / الجمعة / السبت

لاحظ ان يوم الخميس مشترك

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

لك مطلق الحرية في تغيير اوقات الفترات ... والأيام

واعتقد من اجل التجربة يجب العبث بوقت جهاز الحاسوب

تفضل جرب استاذي الفاضل كل الاحتمالات ...................... واعملنا بالنتيجة
 

Database1 (36).accdb

  • Like 1
قام بنشر
2 دقائق مضت, ابوخليل said:

تطيب المجالس بمشاركتك عقول الرجال

اين المرفق ؟ ام تريد طلابك يتعبوا كما تعبت :smile:

لا عاش من يتعبك :wub: 

اعتذر منك على هذا القصور 

 

Database3.zip

قام بنشر
51 دقائق مضت, Foksh said:

تمام ,, ولكن فيما يخص الدمج أمره على ما أعتقد سيكون دون الاعتماد على مصفوفات على سبيل المثال ، لأنه وللأسف لا يمكن استخدام المصفوفات مباشرة في المعيار داخل الاستعلام .

لذا ، هذا اقتراح بسيط :-

 

 

الدالة جميلة وسوف اعتمدها ..

لاحظت تكرار المعايير  Or في الاستعلام  خاصة معيار دالة الأيام .. ومع اني حذفت التكرار فالدالة تعمل جيدا  .. شكرا جزيلا

بالنسبة لمعيار الوقت سأبقى على عمل الاخ موسى أرى أنه اقوى في تحديد البداية والنهاية

 

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

تفضل جرب استاذي الفاضل كل الاحتمالات ...................... واعملنا بالنتيجة

 

اهلا اخي محمد

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

وقد جربت ولم تظهر السجلات حسب المطلوب .. رغم اني تحققت من البيانات في الجدول

اشكرك على التفاعل والمشاركة

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

احبتي ازعم اني حصلت على المطلوب فجزاكم الله خيرا 

 

قام بنشر
6 ساعات مضت, ابوخليل said:

المهم  مع تطبيق الفترة الزمنية  ايضا مطابقة الأيام حسب الصلاحية

من صلاحيته ايام الاسبوع لايظهر في الجمعة والسبت

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

بأبسط الامكانيات عملت لك حقلين في الأستعلام من نوع (True / False ) الأول يتحقق من دخول الفترة الزمنية نطاق التنفيذ .. والثاني يتحقق من أن الأيام دخلت نطاق التنفيذ ..

وبالتالي صار سهل جدا فلترة السجلات بناءا عليهما :
image.png.92c6b1101b9886cd89c8d438f1ae8b58.png

وهكذا تضع الشروط بكل سهولة 🙂 :
image.png.4f165b9e2eb8b485db7a6b5619aa8e00.png

 

Database1 (1).accdb

  • Like 2
قام بنشر
5 دقائق مضت, ابوخليل said:

اهلا اخي محمد

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

وقد جربت ولم تظهر السجلات حسب المطلوب .. رغم اني تحققت من البيانات في الجدول

اشكرك على التفاعل والمشاركة

الدالة هي التي تستخدم ايام الاسبوع ولاتظهر في الاستعلام مطلقا

 

1.jpg

  • Like 1
قام بنشر
7 دقائق مضت, Moosak said:

بأبسط الامكانيات عملت لك حقلين في الأستعلام من نوع (True / False ) الأول يتحقق من دخول الفترة الزمنية نطاق التنفيذ .. والثاني يتحقق من أن الأيام دخلت نطاق التنفيذ ..

جميل جداً ، ومشاركة ذكية أيضاً .. مع العلم وإنه وإن كان قد لا يستوجب أخذ هذه النقطة بالحسبان ، وهي عدم دعم الفترات التي تمتد بعد منتصف الليل (من 10 مساءً إلى 2 صباحاً مثلاً) على سبيل المثال طبعاً وليس للحصر .....

وطبعاً الإفتراض دوماً أن first_time < last_time لا يخدم النقطة السابقة ( وكما أشرت قد تكون غير ضرورية من الأساس 😅 )

 

طبعاً لا ينقص تعليقي من فكرة الأستاذ موسى شيئاً  :wub: .

قام بنشر
3 دقائق مضت, Foksh said:

وهي عدم دعم الفترات التي تمتد بعد منتصف الليل (من 10 مساءً إلى 2 صباحاً مثلاً)

لكل مقام مقال 😎👌

  • Haha 1
قام بنشر
21 دقائق مضت, Moosak said:

بأبسط الامكانيات عملت لك حقلين في الأستعلام من نوع (True / False ) الأول يتحقق من دخول الفترة الزمنية نطاق التنفيذ .. والثاني يتحقق من أن الأيام دخلت نطاق التنفيذ ..

وبالتالي صار سهل جدا فلترة السجلات بناءا عليهما :

 

سهل نعم .. وهذا ما يسمى بالسهل الممتنع

تكاثرت الظباء على خراش ... فما يدري خراش ما يصيد

خراش اليوم ليس في حيرة من أمره سيصيد ما خف وزنه وزاد ثمنه

الحمد لله أولا وآخرا .. إثراء المواضيع بحلول وأفكار متنوعة يصب في صالح الباحث طالب العلم

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

  • Like 3

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