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

بمعادله فلكية استطعنا تحويل السنه من ميلادي الى هجري في حقل محسوب


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

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

السلام عليكم ورحمة الله 

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

في حقل محسوب في جدول تم تحويل السنه من ميلادي الى هجري .accdb

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

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

 

هذه معادلتك:

اقتباس

السنة الهجرية = (السنة الميلادية-622)/0.97  +1

 

اذا ممكن تنورنا اكثر ، شو هذه المعادلة ، ومن وين حصلت عليها ، وشو اللي يخليها مختلفة عن غيرها ، وشو اللي يخليها بهذه الدقة؟

 

جعفر

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

8 ساعات مضت, طاهر الوليدي said:

اخيرا استطعت تحويل السنه من ميلادي الى هجري

لا اتفق معك استاذنا العزيز طاهر

مثلا الان نحن في شهر 9 ميلادي 2 هجري

لو حولت التاريخ وفقا لما صنعت سيكون الميلادي 2022 والهجري 1444 وهذا تمام جزئيا لكون الاشهر الستة الاولى من شهر 2022 توافق العام 1443

بعد اربعة اشهر يكون الميلادي 2023 والهجري وفقا لعملك 1445 وهذا غير صحيح لكوننا مازلنا في الشهر السادس 1444

ايضا جزء من عام 2024 سيكون ضمن العام الهجري 1445 والعام  1446 وعام 2025 سيكون ضمن العام 1446 والعام 1447 هجري

ايضا العام 2030 بحسابك سيكون 1453 بينما يفترض ان يكون 1451 والعام 1452

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

رأي شخصي غير ملزم

تم تعديل بواسطه مبرمج متقاعد
  • Like 4
رابط هذا التعليق
شارك

في 9‏/9‏/2022 at 09:58, jjafferr said:

اذا ممكن تنورنا اكثر ، شو هذه المعادلة ، ومن وين حصلت عليها ، وشو اللي يخليها مختلفة عن غيرها ، وشو اللي يخليها بهذه الدقة؟

السنة الهجرية = (السنة الميلادية-622)/0.97  +1
622 هي السنة الميلادية لبداية التقويم الهجري
0.97 هي نسبة طول السنة الهجرية إلى طول السنة الميلادية
354.3667 / 365.2425 = 0.970223071
1 هو للزيادة سنة لما يسمى بالسنة الناقصة/غير المكتملة

 

 

تم تعديل بواسطه AbuuAhmed
  • Like 2
رابط هذا التعليق
شارك

29 دقائق مضت, AbuuAhmed said:

السنة الهجرية = (السنة الميلادية-622)/0.97  +1
622 هي السنة الميلادية لبداية التقويم الهجري
0.97 هي نسبة طول السنة الهجرية إلى طول السنة الميلادية
354.3667 / 365.2425 = 0.970223071

شكرا جزيلا اخوي ابو احمد على التوضيح 🙂

 

 

 

جعفر

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

10 دقائق مضت, AbuuAhmed said:

جرب المعادلة التي اقترحتها عليك. 

شكرا لك استاذي بارك الله فيك واحسن الله اليكم جميعا كما احسنتم

المعدله.jpg

اخذتها من هذه المواقع

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

تم اختبار المعادلة لمدة 9566 سنة هجرية بدون أي إخفاق.

ملاحظة:
هذه المعادلة تعمل فقط مع الـ vba و الإكسل

تم تعديل بواسطه AbuuAhmed
  • Haha 1
رابط هذا التعليق
شارك

15 دقائق مضت, AbuuAhmed said:

تم اختبار المعادلة لمدة 9566 سنة هجرية بدون أي إخفاق

بعد عمر طويل ان شاء الله 🙂

 

23 ساعات مضت, AbuuAhmed said:
(Date + 466581 - 0.53) / (10631 / 30) + 1

اذا ممكن تشرح لنا هذه المعادلة لوسمحت ، كما شرحت لنا المعادلة السابقة 🙂

 

جعفر

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

  • أفضل إجابة
(Date + 466581 - 0.53) / (10631 / 30) + 1

Date يمثل التاريخ الميلادي للأكسس والإكسل و الـ vba
466581 هو الرقم التسلسلي لبداية التقويم الميلادي في 18/07/0622 زائدا واحد حتى تكون النتيجة المطلوبة تساوي يوم واحد.
            طبعا الرقم التسلسلي يساوي 466580- نصفره ونضيف عليه يوم واحد وهو قيمة بداية التقويم الهجري (أول يوم).

(10631 / 30) هو طول السنة الهجرية بالأيام وناتجها 354.367 ولكني فضلت استخدم عملية التقسيم حتى أحصل على كسر مفتوح لمزيد من الدقة.
0.53 هو لعملية ضبط  adjustment حصلت عليه بعد عدة تجارب/اختبارات وتظهر حاجته غالبا في آخر يوم في السنة وأحيانا في أول يوم أيضا.
1 هو للسنة الناقصة (غير المكتملة)

 

تم تعديل بواسطه AbuuAhmed
  • Like 3
رابط هذا التعليق
شارك

شكرا للاستاذ الفاضل ابو احمد مجهود نشكرك عليه وندعوا الله لكم جميعا ان يصلح جميع دنياكم وٱخراتكم. وطرح مواضيع وافكار واثرائها بالمعلومات والحلول هذا ما يتميز به هذا المنتدى ويتميز به اعضائه للوصول الى حلول وافكار جديده دائما. 

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

في 10‏/9‏/2022 at 20:55, AbuuAhmed said:

جرب هذه المعادلة:

(Date + 466581 - 0.53) / (10631 / 30) + 1

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

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

في 10‏/9‏/2022 at 20:55, AbuuAhmed said:

جرب هذه المعادلة:

(Date + 466581 - 0.53) / (10631 / 30) + 1

 

 

33 دقائق مضت, مبرمج متقاعد said:

حاولت بشتى الطرق اني اجد فرق ولو بيوم واحد والى عام 2079 ولم اجد

شغل كبار

 

شكرا جزيلا احبتي ..  جربوا لنا العكس من الهجري الى الميلادي .. لان الاشكال في هذا التحويل خاصة في شهر 2

الاشكال اذا كان نوع الحقل  تاريخ/وقت  اما اذا الحقل نصي فهو يقبل اي شيء

وسبب الاشكال منطقي لأن اكسس يقرأ التاريخ الهجري على انه (تاريخ ميلادي  - 622 )

 

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

6 ساعات مضت, طاهر الوليدي said:

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

 

2 ساعات مضت, ابوخليل said:

جربوا لنا العكس من الهجري الى الميلادي .. لان الاشكال في هذا التحويل خاصة في شهر 2

لا يمكن أن نصل إلى تحويل للتاريخ بمعادلة من سطر واحد وباستخدام المتوسطات.
ما عملته أنا فقط للحصول على السنة الهجرية ليس إلا ، فلا يذهب تعبكم سدى ، فالتقاويم لها قوانين وتفاصيل كثيرة مثل مدد الشهور ونطام الدورات والكبس.

هذه دالة فحصي للمعادلة لمن يريد أن يكثر من الاختبارات واللعب على قيمة الضبط:
 

Sub HijriYearTest()
  Dim Hyy As Long
  Dim Days As Long
  Dim Greg As Long
  Dim Hijri1 As Long
  Dim Hijri2 As Double
  
  For Hyy = 1 To 9666
    Greg = Hijri2Greg(Hyy, 1, 1)
    For Days = Greg - 1 To Greg
      Hijri1 = Left(Greg2Hijri(CDate(Days)), 4)
     'Hijri2 = (Days + 466580.47) / 354.366666666667 + 1
      Hijri2 = (Days + 466581 - 0.53) / (10631 / 30) + 1
      If Hijri1 <> Fix(Hijri2) Then
        Debug.Print CDate(Days), Hijri1, Hijri2
      End If
    Next Days
  Next Hyy
  
  Debug.Print "Done"
End Sub

 

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

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

تحويل التاريخ الى عدة خيارات بواسطة الحقل المحسوب.accdb

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

بالنسبة لي أنا أستخدم نسخة أكسس بإصدار قديم ، فلا يمكنني فتح المرفق.
لا أعلم من أي إصدار تم إضافة هذا الحقل إلى الجداول ، ولا أعلم فائدته حقيقة.
إذا أردت أن تخضع معادلاتك للفحص والاختبار فيمكنك كتابة المعادلات ووظيفتها ، أما إذا أردت فقط تقييمها فالبركة بالشباب اللي يستخدمون نسخ حديثة.

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

  • 1 month later...

السلام عليكم 🙂

 

اخوي ابو احمد ،

معادلتك السابقة فيها دالتين غير موجودات في مثالك (باللون الاحمر) ، فياريت تكمل جميلك وترفقهم لنا :

اقتباس
  For Hyy = 1 To 9666
    Greg = Hijri2Greg(Hyy, 1, 1)
    For Days = Greg - 1 To Greg
      Hijri1 = Left(Greg2Hijri(CDate(Days)), 4)
     'Hijri2 = (Days + 466580.47) / 354.366666666667 + 1
      Hijri2 = (Days + 466581 - 0.53) / (10631 / 30) + 1
      If Hijri1 <> Fix(Hijri2) Then
        Debug.Print CDate(Days), Hijri1, Hijri2
      End If
    Next Days
  Next Hyy

.

جعفر

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

2 ساعات مضت, jjafferr said:

معادلتك السابقة فيها دالتين غير موجودات في مثالك (باللون الاحمر)

أنا لا أحتفظ بأكوادي ، فكتبت لك الدالتبين من جديد.

Sub HijriYearTest()
  Dim Hyy As Integer
  Dim Days As Long
  Dim Greg As Long
  Dim Hijri1 As Long
  Dim Hijri2 As Double
  
  For Hyy = 1 To 9666
    Greg = Hijri2Greg(Hyy, 1, 1)
    For Days = Greg - 1 To Greg
      Hijri1 = Left(Greg2Hijri(CDate(Days)), 4)
     'Hijri2 = (Days + 466580.47) / 354.366666666667 + 1
      Hijri2 = (Days + 466581 - 0.53) / (10631 / 30) + 1
      If Hijri1 <> Fix(Hijri2) Then
        Debug.Print CDate(Days), Hijri1, Hijri2
      End If
    Next Days
  Next Hyy
  
  Debug.Print "Done"
End Sub

Function Hijri2Greg(yy As Integer, mm As Integer, dd As Integer) As Long
    Dim DefCal As VbCalendar
    
    DefCal = Calendar
    Calendar = vbCalHijri
    
    Hijri2Greg = DateSerial(yy, mm, dd)
    
    Calendar = DefCal
End Function

Function Greg2Hijri(DtSerial As Long) As String
    Dim DefCal As VbCalendar
    
    DefCal = Calendar
    Calendar = vbCalHijri
    
    Greg2Hijri = Format(DtSerial, "yyyy/mm/dd")
    
    Calendar = DefCal
End Function

 

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

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