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

حساب عدد الاسابيع و عدد الاشهر من خلال وحدة نمطية


إذهب إلى أفضل إجابة Solved by أبو عبدالله الحلوانى,

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

السلام عليكم ورحمة الله وبركاته 
أريد فى هذا الالاستعلام 
1 -   اضافة عمود الاسبوع يحسب عدد الاسابيع من تاريخ 1-1-1990 حتى 6-9-2016
2 - اضافة عمود شهر يحسب عدد الاشهر  من تاريخ 7-9-2016 حتى 30-9-2020

3 - 2 - اضافة عمود شهر 2 يحسب عدد الاشهر  أكبر من يوم 30-9-2020

من خلال date1 و date2

عن طريق وحدة نمطية

وجزاكم الله خيراً

 

ضريبة (1).mdb

تم تعديل بواسطه محمد احمد لطفى
رابط هذا التعليق
شارك

2 ساعات مضت, محمد احمد لطفى said:

1 -   اضافة عمود الاسبوع يحسب عدد الاسابيع من تاريخ 1-1-1990 حتى 6-9-2016

DateDiff("ww";[txtDate1];[txtDate2])

لكن افضل ان تكون

DateDiff("d";[txtDate1];[txtDate2])/7

لا فى الدالة الاولى اذا كان الفتره بين التاريخين 

هم 4 اسابيع ويومين كمثل فانه يحسبه 5 اسابيع

2 ساعات مضت, محمد احمد لطفى said:

2 - اضافة عمود شهر يحسب عدد الاشهر  من تاريخ 7-9-2016 حتى 30-9-2020

 

DateDiff("m";[txtDate1];[txtDate2])

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

6 دقائق مضت, عمر ضاحى said:

DateDiff("ww";[txtDate1];[txtDate2])

لكن افضل ان تكون

DateDiff("d";[txtDate1];[txtDate2])/7

لا فى الدالة الاولى اذا كان الفتره بين التاريخين 

هم 4 اسابيع ويومين كمثل فانه يحسبه 5 اسابيع

DateDiff("m";[txtDate1];[txtDate2])

 

ضريبة (1).mdb

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

شكراً أستاذى @عمر ضاحى

أولا اريد الحل عن طريق وحدة نمطية 
ثانيا  لكى تصل الفكرة

 

 

لو date1 = 1-1-2016 

و date2 = 24/4/2022

1 -   اضافة عمود الاسبوع يحسب عدد الاسابيع من تاريخ 1-1-1990 حتى 6-9-2016

سوف يحسب من 1-1-2016 حتى 6-9-2016

1 - عمود الاسبوع = 36 أسبوع

2 - اضافة عمود شهر يحسب عدد الاشهر  من تاريخ 7-9-2016 حتى 30-9-2020

سوف يحسب من 7-9-2016 حتى 30-9-2020

2-عمود الشهر = 49 شهر 

3 -  اضافة عمود شهر 2 يحسب عدد الاشهر  أكبر من يوم 30-9-2020

سوف يحسب من 1-10-2020 حتى 24-4-2022
3 - عمود شهر 2 = 18 شهر

 

تم تعديل بواسطه محمد احمد لطفى
رابط هذا التعليق
شارك

4 دقائق مضت, محمد احمد لطفى said:

شكراً أستاذى @عمر ضاحى

أولا اريد الحل عن طريق وحدة نمطية 
ثانيا  لكى تصل الفكرة

 

 

لو date1 = 1-1-2016 

و date2 = 24/4/2022

1 -   اضافة عمود الاسبوع يحسب عدد الاسابيع من تاريخ 1-1-1990 حتى 6-9-2016

1 - عمود الاسبوع = 36 أسبوع

2 - اضافة عمود شهر يحسب عدد الاشهر  من تاريخ 7-9-2016 حتى 30-9-2020

2-عمود الشهر = 49 شهر 

3 -  اضافة عمود شهر 2 يحسب عدد الاشهر  أكبر من يوم 30-9-2020
3 - عمود شهر 2 = 18 شهر

 

هو حضرتك جايب الارقام دي من فين ؟

لان حسب مثالك 

دي النتائج 

RS5ZWAv.png

 

5 دقائق مضت, محمد احمد لطفى said:

أولا اريد الحل عن طريق وحدة نمطية 

للاسف انا ضعيف فى هذا الباب

ممكن نسأل اهل العلم فى هذا الجانب 

مثل استاذى الكريم @ابو جودي @Moosak

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

أنا حاسب كل فترة لوحدها لأن المثال حاسب الاسابيع و الاشهر  كل على حده من بداية التاريخ لنهاية التاريخ وده خطأ

مفروض الحساب الاسبوع 36 اسبوع الشهر 49 شهر شهر 2 ( 18 شهر )
 

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

7 دقائق مضت, محمد احمد لطفى said:

أنا حاسب كل فترة لوحدها لأن المثال حاسب الاسابيع و الاشهر  كل على حده من بداية التاريخ لنهاية التاريخ وده خطأ

مفروض الحساب الاسبوع 36 اسبوع الشهر 49 شهر شهر 2 ( 18 شهر )
 

بعتذر لحضرتك

انا مش قادر افهم ما تريد

هل تريد ان يتم الحساب كانه مثلا كحساب الاعمار ؟

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

اذا كان ما تريد هو حساب العمر بين تاريخين 

اليك هذا النتيجه 

(مرفق معها مديول "داله حسابيه ")

Function fAge(dteStart As Variant, dteEnd As Variant) As Variant
'*******************************************
'Purpose:   Accurately return the difference
'           between two dates, expressed as
'           years.months.days
'Coded by:  raskew (from MS Access forum)
'Inputs:    From debug (immediate) window
'           1) ? fAge(#12/1/1950#, #8/31/2006#) 'Calculate btw 2 specific dates
'           2) ? fAge(#12/30/2005#, Date()) ' Calculate as of today's date
'*******************************************
Dim intHold   As Integer
Dim dayhold   As Integer  'correctly return number of whole months difference
 'the (Day(dteEnd) < Day(dteStart)) is a Boolean statement
 'that returns -1 if true, 0 if false
 intHold = DateDiff("m", dteStart, dteEnd) + (Day(dteEnd) < Day(dteStart))  'correctly return number of days difference
 If Day(dteEnd) < Day(dteStart) Then
 dayhold = DateDiff("d", dteStart, DateSerial(Year(dteStart), Month(dteStart) + 1, 0)) + Day(dteEnd)
 Else
 dayhold = Day(dteEnd) - Day(dteStart)
 End If
 fAge = LTrim(Str(intHold \ 12)) & " years " & LTrim(Str(intHold Mod 12)) & " months " & LTrim(Str(dayhold)) & " days"
 End Function

 

ضريبة (1).mdb

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

شكراً أستاذى هذا ليس لحساب العمر

الحساب على 3 شرايح 

 

الشريحة الاولى الفترة  ما بين تاريخ 1-1-1990 حتى 6-9-2016 يتم الحساب بينها بالاسبوع فى عمود الاسبوع
الشريحة الثانية ما بين من تاريخ 7-9-2016 حتى 30-9-2020 يتم الحساب بينها بالشهر فى عمود الشهر
الشريحة الثالثة مابين 1-10-2020 حتى تاريخ date2
-------------------------------------------------------------------------------------------------------------------------------------------------

لو date1 = 1-1-2016 

و date2 = 24/4/2022

1 -   اضافة عمود الاسبوع يحسب عدد الاسابيع من تاريخ 1-1-1990 حتى 6-9-2016

سوف يحسب من 1-1-2016 حتى 6-9-2016

1 - عمود الاسبوع = 36 أسبوع

2 - اضافة عمود شهر يحسب عدد الاشهر  من تاريخ 7-9-2016 حتى 30-9-2020

سوف يحسب من 7-9-2016 حتى 30-9-2020

2-عمود الشهر = 49 شهر 

3 -  اضافة عمود شهر 2 يحسب عدد الاشهر  أكبر من يوم 30-9-2020

سوف يحسب من 1-10-2020 حتى 24-4-2022
3 - عمود شهر 2 = 18 شهر

----------------------------------------------------------------------------------------------------------------------------------

لو date1 = 15-5-2015 

و date2 = 15-2-2016

1 -   اضافة عمود الاسبوع يحسب عدد الاسابيع من تاريخ 1-1-1990 حتى 6-9-2016

سوف يحسب من 15-5-2015 حتى 15-2-2016

1 - عمود الاسبوع = 40 أسبوع

2 - اضافة عمود شهر يحسب عدد الاشهر  من تاريخ 7-9-2016 حتى 30-9-2020

 

2-عمود الشهر = 0 شهر 

3 -  اضافة عمود شهر 2 يحسب عدد الاشهر  أكبر من يوم 30-9-2020


3 - عمود شهر 2 = 0 شهر

 

-------------------------------------------------------------------------------------------------------------------------------------------------

لو date1 = 1-1-2017 

و date2 = 24/4/2022

1 -   اضافة عمود الاسبوع يحسب عدد الاسابيع من تاريخ 1-1-1990 حتى 6-9-2016

 

1 - عمود الاسبوع = 0 أسبوع

2 - اضافة عمود شهر يحسب عدد الاشهر  من تاريخ 1-1-2017 حتى 30-9-2020

سوف يحسب من 1-1-2017 حتى 30-9-2020

2-عمود الشهر = 44 شهر 

3 -  اضافة عمود شهر 2 يحسب عدد الاشهر  أكبر من يوم 30-9-2020

سوف يحسب من 1-10-2020 حتى 24-4-2022
3 - عمود شهر 2 = 18 شهر

 

 

 

 

تم تعديل بواسطه محمد احمد لطفى
رابط هذا التعليق
شارك

السلام عليكم ورحمه الله وبركاته

@محمد احمد لطفى

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

17 ساعات مضت, محمد احمد لطفى said:

الحساب على 3 شرايح 

 

الشريحة الاولى الفترة  ما بين تاريخ 1-1-1990 حتى 6-9-2016 يتم الحساب بينها بالاسبوع فى عمود الاسبوع
الشريحة الثانية ما بين من تاريخ 7-9-2016 حتى 30-9-2020 يتم الحساب بينها بالشهر فى عمود الشهر
الشريحة الثالثة مابين 1-10-2020 حتى تاريخ date2
-------------------------------------------------------------------------------------------------------------------------------------------------

لو date1 = 1-1-2016 

و date2 = 24/4/2022

1 -   اضافة عمود الاسبوع يحسب عدد الاسابيع من تاريخ 1-1-1990 حتى 6-9-2016

سوف يحسب من 1-1-2016 حتى 6-9-2016

1 - عمود الاسبوع = 36 أسبوع

2 - اضافة عمود شهر يحسب عدد الاشهر  من تاريخ 7-9-2016 حتى 30-9-2020

سوف يحسب من 7-9-2016 حتى 30-9-2020

2-عمود الشهر = 49 شهر 

3 -  اضافة عمود شهر 2 يحسب عدد الاشهر  أكبر من يوم 30-9-2020

سوف يحسب من 1-10-2020 حتى 24-4-2022
3 - عمود شهر 2 = 18 شهر

1 = 35

2 = 50

3 = 19

فايهما اصح

ساقوم بمراجعه الرابط الذى وضعته وحل استاذنا العزيز أبو ابراهيم الغامدى جزاه الله خيرا لعلى اصل للصحيح

بالتوفيق

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

منذ ساعه, محمد احمد لطفى said:

شكراً أستاذى @احمد الفلاحجي

الشكر لله ثم لاخواننا واساتذتنا جزاهم الله عنا كل خير

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

برجاء مراجعه النتائج التى ارفقتها لك بالمشاؤكه السابقه مع نتائجك واخبرنى ايهما اصح

وان شاء الله يشاركنا اخواننا واساتذتنا جزاهم الله عنا كل خير

بالتوفيق

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

اتفضل اخى @محمد احمد لطفى حاجه على قدى واكمل باقى الوحده

وان شاء الله اخوانا واساتذتنا يقدموا ما لديهم

image.png.08936465cd6154e8136c4ddb0cd7a862.png

image.png.b23b3a7230112096ebd682be89c7577e.png

Function cheekDate(sDate As Date, eDate As Date, x As Integer)
    
    If sDate = #1/1/1990# And eDate = #9/6/2016# And x = 1 Then
        cheekDate = DateDiff("ww", #1/1/2016#, #9/6/2016#)
        
    ElseIf sDate = #9/7/2016# And eDate = #9/30/2020# And x = 2 Then
        cheekDate = DateDiff("m", #9/7/2016#, #9/30/2020#)
        
    ElseIf sDate >= #9/30/2020# And x = 2 Then
        cheekDate = DateDiff("m", #10/1/2020#, Date)
    End If
    
End Function

بالتوفيق

ضريبة _1.mdb

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

منذ ساعه, محمد احمد لطفى said:

يبشاير الخير المطلوب يكونو فى سطر واحد

ربنا يبشرك بكل خير ان شاء الله

اتفضل

وقمت بعمل تعديل بسيط عليها ايضا

Function cheekDate(sDate As Date, eDate As Date, x As Byte)
    
    If sDate >= #1/1/1990# And eDate <= #9/6/2016# And x = 1 Then
        cheekDate = DateDiff("ww", #1/1/2016#, #9/6/2016#)
        
    ElseIf sDate >= #9/7/2016# And eDate <= #9/30/2020# And x = 2 Then
        cheekDate = DateDiff("m", #9/7/2016#, #9/30/2020#)
        
    ElseIf sDate >= #9/30/2020# And x = 3 Then
        cheekDate = DateDiff("m", #10/1/2020#, Date)
    End If
    
End Function

بالتوفيق

ضريبة _2.mdb

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

تقريبا غاوزين السطر 
cheekDate = DateDiff("ww", #1/1/2016#, #9/6/2016#)

ليه علاقة بـ date1   و date2

بدل التاريخين الى مكتوبين

تم تعديل بواسطه محمد احمد لطفى
رابط هذا التعليق
شارك

7 دقائق مضت, محمد احمد لطفى said:

تقريبا غاوزين السطر 
cheekDate = DateDiff("ww", #1/1/2016#, #9/6/2016#)

ليه علاقة بـ date1   و date2

بدل التاريخين الى مكتوبين

طب ازاى بقى اخى محمد  ايه وجه العلاقه انت بتشيك على تاريخ وبتحسب على تاريخ

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

بالتوفيق

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

Untitled4.jpg.89faf3b00f8b59ab293e1501aae39c31.jpg

أول تاريخ 1-1-1990 , تانى تاريخ 6-9-2016  الصح عدد الاسابيع 1392 أسبوع 

الفترة من تاريخ 1-1-1990 حتى 6-9-2016 يحسب الاسابيع الى بين date1 و date2

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

15 دقائق مضت, محمد احمد لطفى said:

Untitled4.jpg.89faf3b00f8b59ab293e1501aae39c31.jpg

أول تاريخ 1-1-1990 , تانى تاريخ 6-9-2016  الصح عدد الاسابيع 1392 أسبوع 

الفترة من تاريخ 1-1-1990 حتى 6-9-2016 يحسب الاسابيع الى بين date1 و date2

اتفضل اخى محمد

Function cheekDate(sDate As Date, eDate As Date, x As Byte)
    
    If sDate >= #1/1/1990# And eDate <= #9/6/2016# And x = 1 Then
        cheekDate = DateDiff("ww", sDate, eDate)
        
    ElseIf sDate >= #9/7/2016# And eDate <= #9/30/2020# And x = 2 Then
        cheekDate = DateDiff("m", sDate, eDate)
        
    ElseIf sDate >= #9/30/2020# And x = 3 Then
        cheekDate = DateDiff("m", sDate, Date)
    End If
    
End Function

بالتوفيق

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

25 دقائق مضت, احمد الفلاحجي said:

طب ازاى بقى اخى محمد  ايه وجه العلاقه انت بتشيك على تاريخ وبتحسب على تاريخ

زي ماتوقعت

هل التاريخ ثابت ام متغير

في اعتقادي تصوير المطلوب على شيت اكسل يسهل من الفهم والحل اخي العزيز

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

منور اخى ومهندسنا العزيز @Eng.Qassim

اخى محمد فى تعديل بسيط للشرط الاخير

Function cheekDate(sDate As Date, eDate As Date, x As Byte)
    
    If sDate >= #1/1/1990# And eDate <= #9/6/2016# And x = 1 Then
        cheekDate = DateDiff("ww", sDate, eDate)
        
    ElseIf sDate >= #9/7/2016# And eDate <= #9/30/2020# And x = 2 Then
        cheekDate = DateDiff("m", sDate, eDate)
        
    ElseIf sDate >= #9/30/2020# And sDate <= Date And x = 3 Then
        cheekDate = DateDiff("m", sDate, eDate)
    End If
    
End Function

 

  • 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