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

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

قام بنشر

اعزائي

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

الطريقة بالاستعلام 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:

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

 

تحياتي

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.

×
×
  • اضف...

Important Information