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

استخراج مدة الخدمة من التاريخ يعطي نتائج بالسالب


إذهب إلى أفضل إجابة Solved by Shivan Rekany,

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

الان, عبد اللطيف سلوم said:

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

استخدمنا هذه الفانكشن

Function masdatediffh(olddate, Optional newdate) As String
Dim d As Integer, m As Integer, y As Integer, nd As Integer, nm As Integer, ny As Integer
If IsNull(newdate) Then newdate = Date
If IsNull(olddate) Or olddate > newdate Then masdatediffh = "": Exit Function
nd = Left(newdate, 2): d = Left(olddate, 2)
nm = Mid(newdate, 4, 2): m = Mid(olddate, 4, 2)
ny = Right(newdate, 4): y = Right(olddate, 4)
If nd < d Then nm = nm - 1: nd = nd + 30
If nm < m Then ny = ny - 1: nm = nm + 12
masdatediffh = Format(nd - d, "00") & "-" & Format(nm - m, "00") & "-" & Format(ny - y, "00")
End Function

الفانكشن بيعطينا عدد سنوات و الاشهر والايام بين تاريخين

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

Feriq: masdatediffh([تاريخ التعيين];Date())

لان حضرتك تريد سنة في مربع و اشهر في المربع و اليوم في المربع قمنا باخفاء المربع نصي اللي اسمه Feriq في النموذج

وفي مربع الثلاث للسنة والاشهر والايام استخدمنا دالة Mid لان فانکشن يعطينا النتيجة رقمين للايام و شارحة ورقمين للاشهر و شارحة ورقمين للسنة هكذا مثلا 

13-03-20

في دالة Mid يجب ان نعرف تسلسل الرقم هنا 

رقم 1 تسلسله هو 1

ورقم 3 تسلسله 2

وشارحة - الاول تسلسله 3

ورقم 0 مع الاشهر تسلسله 4

ورقم 3 تسلسله 5

وشارحة - الثانية تسلسله 6

ورقم 2 تسلسله 7

ورقم 0 الاخير تسلسله 8

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

=Mid([Feriq];7;2)

رقم 7 اي يعني اختر من تستسل 7 وهو رقم 2 ويكون رقمين فقط اي يعني رقم 2 و صفر اي يعني20

وفي المربع الاشهر هذا 

=Mid([Feriq];4;2)

رقم 4 يعني اختر من تسلسل 4 وهو رقم 0 ويكون رقمين اي يكون 0 و 3 اي يعني 03

وفي المربع الايام هذا

=Mid([Feriq];1;2)

رقم 1 يهني اختر من تسلسل 1 اي يعني 1 ويكون رقمين اي يعني 13

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

masdatediffh([تاريخ التعيين];Date()) 

تحياتي

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

6 ساعات مضت, Shivan Rekany said:

استخدمنا هذه الفانكشن


Function masdatediffh(olddate, Optional newdate) As String
Dim d As Integer, m As Integer, y As Integer, nd As Integer, nm As Integer, ny As Integer
If IsNull(newdate) Then newdate = Date
If IsNull(olddate) Or olddate > newdate Then masdatediffh = "": Exit Function
nd = Left(newdate, 2): d = Left(olddate, 2)
nm = Mid(newdate, 4, 2): m = Mid(olddate, 4, 2)
ny = Right(newdate, 4): y = Right(olddate, 4)
If nd < d Then nm = nm - 1: nd = nd + 30
If nm < m Then ny = ny - 1: nm = nm + 12
masdatediffh = Format(nd - d, "00") & "-" & Format(nm - m, "00") & "-" & Format(ny - y, "00")
End Function

الفانكشن بيعطينا عدد سنوات و الاشهر والايام بين تاريخين

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


Feriq: masdatediffh([تاريخ التعيين];Date())

لان حضرتك تريد سنة في مربع و اشهر في المربع و اليوم في المربع قمنا باخفاء المربع نصي اللي اسمه Feriq في النموذج

وفي مربع الثلاث للسنة والاشهر والايام استخدمنا دالة Mid لان فانکشن يعطينا النتيجة رقمين للايام و شارحة ورقمين للاشهر و شارحة ورقمين للسنة هكذا مثلا 


13-03-20

في دالة Mid يجب ان نعرف تسلسل الرقم هنا 

رقم 1 تسلسله هو 1

ورقم 3 تسلسله 2

وشارحة - الاول تسلسله 3

ورقم 0 مع الاشهر تسلسله 4

ورقم 3 تسلسله 5

وشارحة - الثانية تسلسله 6

ورقم 2 تسلسله 7

ورقم 0 الاخير تسلسله 8

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


=Mid([Feriq];7;2)

رقم 7 اي يعني اختر من تستسل 7 وهو رقم 2 ويكون رقمين فقط اي يعني رقم 2 و صفر اي يعني20

وفي المربع الاشهر هذا 


=Mid([Feriq];4;2)

رقم 4 يعني اختر من تسلسل 4 وهو رقم 0 ويكون رقمين اي يكون 0 و 3 اي يعني 03

وفي المربع الايام هذا


=Mid([Feriq];1;2)

رقم 1 يهني اختر من تسلسل 1 اي يعني 1 ويكون رقمين اي يعني 13

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


masdatediffh([تاريخ التعيين];Date()) 

تحياتي

كل المحبة والاحترام

نشكرك على هذا الشرح الرائع

حيث سيستفيد منه العديد من الأعضاء 

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

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