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

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

قام بنشر

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

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

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

  • Like 1
قام بنشر

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

 

هذه معادلتك:

  اقتباس

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

Expand  

 

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

 

جعفر

قام بنشر (معدل)
  في 8‏/9‏/2022 at 23:06, طاهر الوليدي said:

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

Expand  

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

مثلا الان نحن في شهر 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 06:58, jjafferr said:

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

Expand  

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

 

 

تم تعديل بواسطه AbuuAhmed
  • Like 2
قام بنشر
  في 10‏/9‏/2022 at 18:01, AbuuAhmed said:

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

Expand  

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

 

 

 

جعفر

قام بنشر (معدل)

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

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

تم تعديل بواسطه AbuuAhmed
  • Haha 1
قام بنشر
  في 11‏/9‏/2022 at 17:22, AbuuAhmed said:

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

Expand  

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

 

  في 10‏/9‏/2022 at 17:55, AbuuAhmed said:
(Date + 466581 - 0.53) / (10631 / 30) + 1
Expand  

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

 

جعفر

  • تمت الإجابة
قام بنشر (معدل)
(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 17:55, AbuuAhmed said:

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

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

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

قام بنشر
  في 10‏/9‏/2022 at 17:55, AbuuAhmed said:

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

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

 

Expand  

 

  في 12‏/9‏/2022 at 09:03, مبرمج متقاعد said:

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

شغل كبار

 

Expand  

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

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

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

 

قام بنشر
  في 12‏/9‏/2022 at 05:37, طاهر الوليدي said:

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

Expand  

 

  في 12‏/9‏/2022 at 09:33, ابوخليل said:

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

Expand  

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

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

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
قام بنشر

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

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

قام بنشر

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

  • 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
Expand  

.

جعفر

قام بنشر
  في 7‏/11‏/2022 at 19:47, jjafferr said:

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

Expand  

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

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