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

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

قام بنشر

عليكم السلام 

  في 7‏/9‏/2021 at 21:21, اسلام سيد said:

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

Expand  

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

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

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

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

 

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

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

DifHourMin.rarFetching info...

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

السلام علكم

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

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

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

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

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

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

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

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

780513081_.jpg.d0634555e2f218255f14f892d351c89f.jpg

 

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

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

يمكنك استعمال هذه المعادلة مع تغيير تنسيق الحقل إلى 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

حسب هنا

  في 9‏/9‏/2021 at 08:14, اسلام سيد said:

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

 

Expand  

 

  في 9‏/9‏/2021 at 10:09, أ / محمد صالح said:

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

 

Expand  

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

New Microsoft Access Database.accdbFetching info...

قام بنشر

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

باختصار

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

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

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

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

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

 

قام بنشر
  في 9‏/9‏/2021 at 10:56, د.كاف يار said:

اتوقع كذا صح

Expand  

الحل هذا فوق الممتاز ، لكن لى طلب واحد كى استطيع استخدامه
وهو الساعه 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.accdbFetching info...

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

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

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

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

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

بالتوفيق 

  • 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ص تظهر فى الانصراف المبكر والصح يكون صفرا

حل ممتاز أ - محمد صالح.rarFetching info...

 

انصراف مبكر: 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