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

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

قام بنشر

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

المشكلة أنه إدا كان بدء العمل الساعة 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

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