الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

أيام الشهور ميلادي ، هجري ، أم القرى

مغلق
بدأه أبو هادي في 22 أبريل 2003 · 4 رد · 2,374 مشاهدة · في مراجعة المواضيع
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

دالتان لمعرفة أيام الشهور كالتالي :

الدالة الأولى تحتاج إلى تمرير رقم الشهر والسنة ونوع التقويم .

والدالة الأخرى تحتاج إلى تمرير التاريخ ونوع التقويم .

Function GetMonthDays_mmyy(ByVal mm As Byte, ByVal yy As Integer, ByVal Cal As Byte) As Byte

  Const Gregorian = 1

  Const Hijri = 2

  Const UmAlQura = 3

  Dim CurrCal As Byte

  

  On Error Resume Next

  

  GetMonthDays_mmyy = 0

  If Cal < 1 Or Cal > 3 Then Exit Function

  

  CurrCal = Calendar

  

  Select Case Cal

    Case Gregorian

      Calendar = vbCalGreg

      GetMonthDays_mmyy = Day(DateSerial(yy, mm + 1, 0))

    Case Hijri

      Calendar = vbCalHijri

      GetMonthDays_mmyy = 30 - Day(DateSerial(yy, mm + 1, 0)) Mod 30

    Case UmAlQura

      Do While mm < 1:  mm = mm + 12: yy = yy - 1: Loop

      Do While mm > 12: mm = mm - 12: yy = yy + 1: Loop

      Call LoadUmAlQura_Code

      If yy < LBound(UmAll) Or yy > UBound(UmAll) Then Exit Function

      GetMonthDays_mmyy = UmAll(yy).M2(mm) - UmAll(yy).M2(mm - 1)

  End Select

  

  Calendar = CurrCal

End Function



'---------------------------------------------------------------------

Function GetMonthDays_Date(ByVal InDate As Variant, Cal as Byte) As Byte

  Const Gregorian = 1

  Const Hijri = 2

  Const UmAlQura = 3

  Dim CurrCal As Byte

  Dim myDate As Date

  Dim mm As Byte

  Dim yy As Integer

   Dim Pos As Byte



  On Error Resume Next

  

  GetMonthDays_Date = 0

  If Cal < 1 Or Cal > 3 Then Exit Function

  

  CurrCal = Calendar

  

  Select Case Cal

    Case Gregorian

      Calendar = vbCalGreg

      myDate = CDate(InDate)

      GetMonthDays_Date = Day(DateSerial(Year(myDate), Month(myDate) + 1, 0))

    Case Hijri

      Calendar = vbCalHijri

      myDate = CDate(InDate)

      GetMonthDays_Date = 30 - Day(DateSerial(Year(myDate), Month(myDate) + 1, 0)) Mod 30

    Case UmAlQura

      Pos = InStr(1, InDate, "/")

      Select Case Pos

        Case 3: mm = Mid(InDate, 4, 2): yy = Mid(InDate, 7, 4)

        Case 5: mm = Mid(InDate, 6, 2): yy = Mid(InDate, 1, 4)

      End Select

      If mm < 1 Or mm > 12 Then Exit Function

      Call LoadUmAlQura_Code

      If yy < LBound(UmAll) Or yy > UBound(UmAll) Then Exit Function

      GetMonthDays_Date = UmAll(yy).M2(mm) - UmAll(yy).M2(mm - 1)

  End Select

  

  Calendar = CurrCal

End Function

تحياتي .

#2

السلام عليكم

حبذا لو اتحفتنا بمثال لتوضيح الفكرة

تحياتي

:D

صورة
صورة

حسابي في الفيس بوك
http://goo.gl/XIzwL

حسابي في تويتر
http://goo.gl/6p4e3

 

 
 
#3

نعم أخي ليتك ترفق لنا مثال على ذلك

ثم لدي سؤال لك هل التقويم الهجري التي ياتي داخل الويندوز هو نفسه تقويم ام القرى ام يختلف ؟

واذا كان يختلف فما هو الاختلاف ؟

#4

السلام عليكم

مثال على الدوال الجديدة ، النتائج بعمود الدالة الجديدة في النموذج .

مع ملاحظة أنه تم التعديل في الدوال فمن قام بنسخها سابقا عليه تبديلها الآن .

آمل من أحد الأخوة بتحويلها إلى إصدار أقدم لمن ليس لديه أكسس 2002 .

تحياتي .

getmonthdays_2002.zip

#5

السلام عليكم

بورك في علمك

المثال بنسخة اكسس 97

تحياتي

getmonthdays97.zip

صورة
صورة

حسابي في الفيس بوك
http://goo.gl/XIzwL

حسابي في تويتر
http://goo.gl/6p4e3

 

 
 

هذا الموضوع مغلق.

مواضيع مشابهة