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

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

قام بنشر

اعزائي

اقدم لكم كيفية حساب الفرق بين تاريخين مع الوقت وبالايام والساعات والدقائق !!

الطريقة بالاستعلام qr1

SELECT tbl_time.id, tbl_time.Sdate, tbl_time.Stime, tbl_time.Edate, tbl_time.Etime, CStr((DateDiff("n",([Sdate] & Chr(32) & [Stime]),([Edate] & Chr(32) & [Etime]))\60)\24) & " days;" & CStr((DateDiff("n",([Sdate] & Chr(32) & [Stime]),([Edate] & Chr(32) & [Etime]))/60) Mod 24) & " hours and " & CStr(DateDiff("n",([Sdate] & Chr(32) & [Stime]),([Edate] & Chr(32) & [Etime])) Mod 60) & " minutes" AS Ramhan
FROM tbl_time;

ولكم خالص تحياتي

حساب الوقت.rar

  • Like 1
قام بنشر

السلام عليكم أخي رمهان

 

فكرة جميلة في ضم "الجمل بما حمل" في سطر واحد :smile: 

 

والعقل المدبر للعملية كلها هو هذا السطر:

CStr((DateDiff("n",([Sdate] & Chr(32) & [Stime]),([Edate] & Chr(32) & [Etime]))\60)\24) & " days;" & CStr((DateDiff("n",([Sdate] & Chr(32) & [Stime]),([Edate] & Chr(32) & [Etime]))/60) Mod 24) & " hours and " & CStr(DateDiff("n",([Sdate] & Chr(32) & [Stime]),([Edate] & Chr(32) & [Etime])) Mod 60) & " minutes" AS Ramhan

ولكن من الصعب معرفة ما يدور في هذا السطر الواحد ، ومن الاصعب (ان لم يكن مستحيلا) اجراء تعديل عليه ،

لذلك ، فانا في معظم الاحيان استعين بالوحدة النمطية ، واضع فيها الكود (نفس الكود اعلاه) ، ولكنه مقسم الى اسطر متعددة (وانا على يقين بأنك بدأت هكذا ، ثم جمعته في سطر واحد) ، حتى يسهل علي عمل اي تغيير او اضافات لاحقا :smile:

 

وفي حال الكود اعلاه ، فان الوحدة النمطية ستكون:

Function Calc_Diff(Sd As Date, Ed As Date, St As Date, Et As Date)

    'Sd = Start date
    'Ed = End date
    'St = Start time
    'Et = End time
    's_Date_time = Start date and time
    'e_Date_time = End date and time
    'r_Days = Remaining Days
    'r_Hours = Remaining Hours
    'r_Minutes = Remaining Minutes
    
    
    Dim s_Date_time, e_Date_time
    Dim r_Days, r_Hours, r_Minutes
    
    s_Date_time = Sd & Chr(32) & St
    e_Date_time = Ed & Chr(32) & Et
    
    r_Days = DateDiff("n", s_Date_time, e_Date_time)
    r_Hours = DateDiff("n", s_Date_time, e_Date_time)
    r_Minutes = DateDiff("n", s_Date_time, e_Date_time)
    
    r_Days = (r_Days \ 60) \ 24
    r_Hours = (r_Hours / 60) Mod 24
    r_Minutes = r_Minutes Mod 60
    
    Calc_Diff = CStr(r_Days) & " days;" & _
                CStr(r_Hours) & " hours and " & _
                CStr(r_Minutes) & " minutes"
    
End Function

ونستدعيها من الاستعلام او من اي حقل في النموذج او التقرير هكذا:

 Calc_Diff([Sdate],[Edate],[Stime],[Etime])

جعفر

قام بنشر

نحن هنا في المنتدى الكريم لا نتعلم الأكسس فحسب

بل نتعلم منكم أساتذتنا الأجلاء الكرم والعطاء في العلم غير كاتمين لعلمكم الذي وهبه الله عز وجل لكم ودائما تشاركونا مستجداتكم وذوقكم الرفيع.. كلكم بلا استثناء

فجزاكم الله خيرا.. جزاكم الله جنته في الفردوس الأعلى بعد عمر طويل :smile:

  • Like 1
قام بنشر

حيا الله الأخ خيماوي كووول : شرفتنا وفاجأتنا بوجودك معنا هنا !

الأخ جعفر : يبدو ان الطريقة اعجبتك ! وتريد ان تحفظها بمكتبتك وبطريقتك الخاصة !! :tongue2:

الأخ عبدالرحمن : مرورك ودعواتكم هي الصيد الثمين !!

 

تحياتي

انشئ حساب جديد او قم بتسجيل دخولك لتتمكن من اضافه تعليق جديد

يجب ان تكون عضوا لدينا لتتمكن من التعليق

انشئ حساب جديد

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

سجل حساب جديد

تسجيل دخول

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

سجل دخولك الان
×
×
  • اضف...

Important Information