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

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

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

السلام عليكم

عندى 

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

New Microsoft Access Database.rar

 

Untitled.jpg.7907cf72083e21d7f3a3527ba1ca4a4b.jpg

تم تعديل بواسطه اسلام سيد
قام بنشر

عليكم السلام 

12 ساعات مضت, اسلام سيد said:

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

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

لحساب فرق الوقت فالوقت غير كافي للحساب وانما نحتاج الى التاريخ ايضا

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

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

 

وهذه محاولة ارجو ان تكون موفقة

وعذرا للاطالة

DifHourMin.rar

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

السلام علكم

جهودكم مشكورة ، لكن حتى الان لم اصل الى المراد

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

IIf([بدايه الانصراف]>[الانصراف];IIf(Right([الانصراف];1)="ص";24-(([بدايه الانصراف]-[الانصراف])*24);(([بدايه الانصراف]-[الانصراف])*24));IIf(Right([الانصراف];1)="ص";"";([الانصراف]-[بدايه الانصراف])*24))

اريد فقط وضع شرط اضافى لو الانصراف اقل من بدايه الانصراف يعنى مثلا 

الموظف انصرف 2م بدلا من 5 م يطلع زيرو  لان هنا تاخير مش اضافى

وتجميع لكل الحالات الوارده فى المثال

لو الانصراف اكبر من بدايه الانصراف = يطرح الانصراف من بدايه الانصراف فقط لاغير

مع مراعاه الوقت بعد منتصف الليل

780513081_.jpg.d0634555e2f218255f14f892d351c89f.jpg

 

حل ممتاز شيفان ريكانى للطرح بين الوقتين.rar

تم تعديل بواسطه اسلام سيد
قام بنشر

يمكنك استعمال هذه المعادلة مع تغيير تنسيق الحقل إلى hh:mm

الاضافى: IIf([الانصراف]>[بدايه الانصراف],[الانصراف]-[بدايه الانصراف],IIf([بدايه الانصراف]-[الانصراف]<0.5,0,24-[بدايه الانصراف]+[الانصراف]))

إن شاء اللّه هي المطلوب 

حيث تراعي إذا كان الانصراف قبل أو بعد بداية الانصراف 

حتى بعد منتصف الليل 

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

الاضافى: hour(IIf([الانصراف]>[بدايه الانصراف],[الانصراف]-[بدايه الانصراف],IIf([بدايه الانصراف]-[الانصراف]<0.5,0,24-[بدايه الانصراف]+[الانصراف])))

بالتوفيق 

قام بنشر

لا أعتقد أن هذا هو المطلوب @د.كاف يار

لأن النتيجة المطلوبة على. ترتيب السجلات هي

5

0

0

8

4

والحمد لله تم تحققها في معادلتي

  • Thanks 1
قام بنشر

اتوقع كذا صح

 IIf(DateDiff("h";CDate([بدايه الانصراف]);CDate([الانصراف]))<=0;0;DateDiff("h";CDate([بدايه الانصراف]);CDate([الانصراف])))

image.png.5026008b668fcf54c3e3a8307622ec73.png

حسب هنا

2 ساعات مضت, اسلام سيد said:

الموظف انصرف 2م بدلا من 5 م يطلع زيرو  لان هنا تاخير مش اضافى

 

 

46 دقائق مضت, أ / محمد صالح said:

لا أعتقد أن هذا هو المطلوب @د.كاف يار

 

فإذا كان فرق الانصراف الاساسي عن الانصراف الفعلي اقل من صفر فتكون النتيجة صفر

New Microsoft Access Database.accdb

قام بنشر

فعلا مهم جدا موضوع منتصف الليل

باختصار

انا اريد طرح وقت الانصراف الفعلى من بدايه الانصراف

ولو الوقتين متساوين = صفر

ولو الانصراف الفعلى اكبر من الانصراف ( وقت الانصراف ) هنا اضافى يطرح الكبير من الصغير مع مراعاة منتصف الليل

لو الانصراف الفعلى اقل من بدايه الانصراف المحدد هنا يظهر صفر لانه ليس باضافى

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

 

قام بنشر
في ٩‏/٩‏/٢٠٢١ at 12:56, د.كاف يار said:

اتوقع كذا صح

الحل هذا فوق الممتاز ، لكن لى طلب واحد كى استطيع استخدامه
وهو الساعه 01:00:00AM ده بعد منتصف الليل يعنى الموظف ظل فى العمل بعد وقت الانصراف اللى هو 05:00:00PM 
ففى هذة الحاله له اضافى 8 ساعات 

ارجو تعديلها لكى استطيع الاستفده منه بعد اذنك @د.كاف يار

 

قام بنشر

الأستاذ الفاضل @اسلام سيد

لماذا التطويل في الموضوع؟ 

أليست المعادلة السابقة مني هي المطلوب تماما ¿¿

وفقنا الله جميعا لكل ما يحبه ويرضاه 

 

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

تفضل هذا الحل

بالإمكان تغيير وقت الإنصراف من خلال الكود

نهاية الدوام الساعة 8 صباحا و بعدها سيتم حساب يوم جديد

Public Function Overtime(RealCheckoutTime As Date, CheckoutTime As Date)
Select Case CheckoutTime
 Case #1:00:00 AM# To #8:00:00 AM#
        Overtime = DateDiff("h", DateAdd("d", -1, RealCheckoutTime), CheckoutTime)
 Case Is > RealCheckoutTime
        Overtime = DateDiff("h", RealCheckoutTime, CheckoutTime)
 Case lese
        Overtime = 0
End Select
End Function

image.png.f263ef53e0271c651f51fee272fd18cf.png

New Microsoft Access Database.accdb

تم تعديل بواسطه د.كاف يار
  • Like 2
  • Thanks 1
قام بنشر

بما ان الضرب في 24 يجلب التاريخ مع الوقت وليس الوقت فقط

نجرب استعمال دالة hour

الاضافي: hour(000)

حيث 000 هي المعادلة القديمة 

بالتوفيق 

  • Like 1
قام بنشر
3 ساعات مضت, د.كاف يار said:

تفضل هذا الحل

بالإمكان تغيير وقت الإنصراف من خلال الكود

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

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

  • Like 1
قام بنشر

للاسف تظل الى الان الاجابات بها خلل بالنسبة لى

لانها لا تعطى نتيجه للكسور

يعنى موظف انصرف الساعه 1:00 ص تعطى 8 ساعات اضافى
ولو انصرف 1:30 ص تعطى ايضا 8 ساعات 
رغم الصح انها تعطى 8.5

مثل الداله التاليه 

IIf([بدايه الانصراف]>[الانصراف];IIf(Right([الانصراف];1)="ص";24-(([بدايه الانصراف]-[الانصراف])*24);(([بدايه الانصراف]-[الانصراف])*24));IIf(Right([الانصراف];1)="ص";"";([الانصراف]-[بدايه الانصراف])*24))

الا ان الداله السابقها بها خلل واحد فقط

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

يعنى لو الوقت الرسمى للانصراف 5 م والموظف انصرف فعليا الساعه 4م تعطى 1 والصح تعطى صفرا

اتمنى من الله ان يكشف كربى ويسدد رميكم

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

قام بنشر

استاذ الحبيب @أ / محمد صالح

كرمك طمعنى اكثر واكثر فى الاستفاده من علمك الغزير

لى استفسار اخر مرتبط بنفس الموضوع طرح الوقت ونفس الملف

لذالك استسمح حضرتك ان يظل فى نفس الموضوع الحالى

عملت عمود جديد وسميته انصراف مبكر ... لحصر التاخيرات

لكن عند الانصراف بعد منتصف الليل يظهر لى انصراف مبكر رغم انه انصراف متاخر عن المواعيد الرسميه

image.png.d1349c1588995b79159e5a5b80a9e869.png

 

انظر الانصراف 1:30ص تظهر فى الانصراف المبكر والصح يكون صفرا

حل ممتاز أ - محمد صالح.rar

 

انصراف مبكر: IIf([بدايه الانصراف]>[الانصراف];[بدايه الانصراف]-[الانصراف];0)*24

 

قام بنشر

حينما لا يكون أمامي جهاز كمبيوتر أقترح عليك اقتراحات

ولكن الآن إليك الحل بفضل الله

بتغيير الشرط إلى بداية الانصرف طرح الانصراف اكبر من صفر واقل من نصف

انصراف مبكر: IIf([بدايه الانصراف]-[الانصراف]>0 and [بدايه الانصراف]-[الانصراف]<0.5,[بدايه الانصراف]-[الانصراف],0)*24

بالتوفيق 

  • Thanks 1
قام بنشر

اخر نقطه فى الداله الاخيرة واستحيى والله من حضرتك

وهى انها لا تقبل الكسور اى الدقائق

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

 Hour(IIf([بدايه الانصراف]-[الانصراف]>0 And [بدايه الانصراف]-[الانصراف]<0.5;[بدايه الانصراف]-[الانصراف];0)*24)+Minute(IIf([بدايه الانصراف]-[الانصراف]>0 And [بدايه الانصراف]-[الانصراف]<0.5;[بدايه الانصراف]-[الانصراف];0)*24)/60

 

  • Like 1
  • أفضل إجابة
قام بنشر

عذرا لتأخر الرد ما رأيت المشاركة إلا الآن

وبعد تجارب بسيطة تم تبسيط المعادلتين الاضافي والانصراف المبكر

انصراف مبكر: Round (IIf([بدايه الانصراف]-[الانصراف]>0 and [بدايه الانصراف]-[الانصراف]<0.5,[بدايه الانصراف]-[الانصراف],0)*24,2)

الإضافي: round(IIf([الانصراف]>[بدايه الانصراف],[الانصراف]-[بدايه الانصراف],IIf([بدايه الانصراف]-[الانصراف]<0.5,0,1-([بدايه الانصراف]-[الانصراف])))*24,2)

ويمكن تطبيق المنازل العشرية 2 للحفاظ على. تنسيق الرقم 

بالتوفيق 

  • Like 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