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

أرجو المساعدة في حساب الفرق بين ساعة بدء العمل وساعة انتهاء العمل في الشفت الليلي


Samer Alani

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

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

المشكلة أنه إدا كان بدء العمل الساعة 22:00 ونهاية العمل الساعة 6:00 يعطيني وقت أكبر من المنقضي

بحثت في الحلول وجدت أنه يجب أن نكتب دالة VB في حقل الوقت المنقضي وهي دالة IF بعد التحديث تقول:

(إذا كان الوقت المنقضي أكبر من صفر لا تقم بأي إجراء أو إذا كان صفر أو أصغر من صفر فأضف رقم 24 إلى النتيجة)

هل يمكن المساعدة بكتابة هذه الدالة

شكرا لكم سلفا

samer.accdb

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

3 ساعات مضت, Samer Alani said:

المشكلة أنه إدا كان بدء العمل الساعة 22:00 ونهاية العمل الساعة 6:00 يعطيني وقت أكبر من المنقضي

اخي العزيز ..حسبما اعلم ان هذا التوقيت تستخدمه الجيوش 

فحينما تقول الساعة 22 ..معناها الساعة 10 مساء ..وحينما تقول الساعة 6 معناها السادسة صباحا ...الفرق بينهما سيكون بالسالب يعني -16

كأنه يعيد بالتوقيت من الاعلى الى الاسفل 

اعمل هذه الدالة في استعلام :

 IIf([بدء الدوام]>[انتهاء الدوام];-([انتهاء الدوام]-[بدء الدوام])*24;([انتهاء الدوام]-[بدء الدوام])*24)

طبعا الدالة طلعت ملخبطة ..بسبب اللغة العربية 

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

1 ساعه مضت, ابوخليل said:

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

نعم استاذنا الكبير @ابوخليل

يفترض ان يستمع لنصيحتك في مشاركتك الاولى ..كان ماحصل معاه هاي اللخبطة 

مع احترامي الكبير لصاحب المشاركة ...

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

5 دقائق مضت, Eng.Qassim said:

مع احترامي الكبير لصاحب المشاركة ...

حاشا لله .. انا لا اقصد صاحب الموضوع بعينه ،،، وهذه اول زيارة ومشاركة له .. وكان علينا واجب الترحيب 

وانما الكلام للعموم  .. وهم كثر .

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

15 ساعات مضت, ابوخليل said:

تطبيق احترافي لفكرة الحضور والانصراف واحتساب الوقت ..

أشكرك أستاذ أبو خليل على التجاوب وهذا فضل منك

العين ما بتعلى على الحاجب، لست مبرمجا وإنما لدي هواية في هذا المجال، البرنامج ليس ساعات حضور وانصراف وإنما خطة عمل لموظفي حراسة عن شهر قادم، يعني توزيع السكيورتي على نقاط العمل ومتى يبدأ عملهم ومتى ينتهي، ولا ارغب بوضع تاريخ مع الساعات والدقائق، وجدت حلا إذا كان الشفت ليلي يبدأ في نهاية اليوم وينتهي في بداية اليوم الذي يليه أن أضع هذه الدالة في حقل الوقت المنقضي واخترت "محسوب" في الجدول وأعطاني النتيجة التي أريد.
أحببت مشاركة الفكرة معك 

IIf(([انتهاء الدوام]-[بدء الدوام])*24<0;(([انتهاء الدوام]-[بدء الدوام])*24)+24;([انتهاء الدوام]-[بدء الدوام])*24)

واذا كانت الدالة ملخبطة فقد أرفقت الملف

شكرا لكم

samer.accdb

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

5 ساعات مضت, Samer Alani said:

IIf(([انتهاء الدوام]-[بدء الدوام])*24<0;(([انتهاء الدوام]-[بدء الدوام])*24)+24;([انتهاء الدوام]-[بدء الدوام])*24)

 

هكذا تضبط معك (استخدم أداة تنسيق الأكواد image.png.dc6a9f83a2994379b53c501e672935e1.png من المحرر) :

IIf(([انتهاء الدوام]-[بدء الدوام])*24<0;(([انتهاء الدوام]-[بدء الدوام])*24)+24;([انتهاء الدوام]-[بدء الدوام])*24)
  • Thanks 1
رابط هذا التعليق
شارك

3 ساعات مضت, Moosak said:

هكذا تضبط معك (استخدم أداة تنسيق الأكواد image.png.dc6a9f83a2994379b53c501e672935e1.png من المحرر) :

IIf(([انتهاء الدوام]-[بدء الدوام])*24<0;(([انتهاء الدوام]-[بدء الدوام])*24)+24;([انتهاء الدوام]-[بدء الدوام])*24)

نعم هذا هو الكود شكرا لك

تم تعديل بواسطه Samer Alani
رابط هذا التعليق
شارك

يمكنك استخدام دالة myMod بدلا من استخدام دالة IIf لفحص المدخلات.
 

Function myMod(Number As Double, Divisor As Double) As Double
    If Divisor <> 0 Then
        myMod = Number - Divisor * Int(Number / Divisor)
    End If
End Function



Sub Test()
    Dim Time1 As Date
    Dim Time2 As Date

    Time1 = TimeSerial(23, 0, 0)
    Time2 = TimeSerial(7, 0, 0)
    
    Debug.Print myMod((Time2 - Time1) * 24, 24)
End Sub

 

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

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information