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

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


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

السلام عليكم

أحياناً استخدم برنامج على الأكسيس 2000 ويستخدم التاريخ الهجري ... لكن إّا أردت أن أستخدم هذا البرنامج على الأكسيس الأكس بي يتغير التاريخ إلى ميلادي ؟؟!

فكيف أجعل التاريخ لقاعدة البيانات المصممة على الأكسيس 2000 تستخدم التاريخ الهجري حتى لو أستخدم على الأكسيس الأكس بي ؟؟؟!

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

في أكسس 97 أو 2000 من قائمة أدوات >> بدء التشغيل >>> خيارات متقدمة ثم وضع علامة صح على التاريخ الهجري

في أكسس إكس بي من قائمة أدوات >>خيارات >> إعدادات دولية ثم ثم وضع علامة صح على التاريخ الهجري

بعد ذلك تضع لابيانات بجدول على ان يكون الحق الذي به بيانات التاريخ من نوع تاريخ

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

السلام عليكم

أخي الكريم .. أنا أعرف ما ذكرته .. ولكن أنا أريد أن أجعل ذلك ضمن قاعدة البيانات بحيث يستطيع الثاني والثالث أستخدامها على أي أكسيس سواءً 2000 أو أكس بي .

يعني لو أرسلت لك برنامج قاعدة بيانات MDE وهي مصممة على الأكسيس 2000 تعمل بالتاريخ الهجري .. بو شغلنها على الأكس بي لن تعمل معك بالتاريخ الهجري ..

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

أرجوا أت أكون قد أوضحت بعض الشيء .

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

هذه دلة من عمل الاخ الكريم طارق الحمامي -- اعتقد انها تفي بالمطلوب

قم بلصق الدالة بوحدة نمطية عامة :

Function h_date(m_day As Variant, ty_d As Integer) As String

 Rem "معادلة التارخ الهجرى "

 Static adays(12) As Long

 Static edays(12) As Long

 Static amonth(12) As String


 Dim ed As Long, ay As Long, at As Long, am As Long, i As Integer


 adays(1) = 29: adays(2) = 29: adays(3) = 30: adays(4) = 29

 adays(5) = 29: adays(6) = 30: adays(7) = 29: adays(8) = 30

 adays(9) = 30: adays(10) = 30: adays(11) = 29: adays(12) = 30


 edays(1) = 31: edays(2) = 28: edays(3) = 31: edays(4) = 30

 edays(5) = 31: edays(6) = 30: edays(7) = 31: edays(8) = 31

 edays(9) = 30: edays(10) = 31: edays(11) = 30: edays(12) = 31


 amonth(1) = "     محـرم": amonth(2) = "     صــفر": amonth(3) = "  ربيع اول": amonth(4) = " ربيع ثانى"

 amonth(5) = " جمادى اول": amonth(6) = "جمادى ثانى": amonth(7) = "    رجـــب": amonth(8) = "     شعبان"

 amonth(9) = "     رمضان": amonth(10) = "    شــوال": amonth(11) = "  ذوالقعدة": amonth(12) = "  ذو الحجة"


 ed = Day(m_day)

 For i = 1 To Month(m_day) - 1

   ed = ed + edays(i)

 Next i

   ed = ed + (Year(m_day) - 1) * 365.242199

   at = ed - 227012

   ay = Int(at / 354.36706) + 1

   am = ((at / 354.36706) - Int(at / 354.36706)) * 354.36706

   

   i = 1

   Do While adays(i) <= am

    am = am - adays(i)

    i = i + 1

   Loop

   If ty_d = 1 Then

     h_date = Str(Int(am)) & " " & amonth(i) & " " & Str(ay) & " هـ "

   Else

     h_date = Str(Int(am)) & "/" & i & "/" & Str(ay) & " هـ "

   End If

End Function

Function J_DATE(m_day As Variant, ty_d As Integer) As String

Rem " معادلة التاريخ الميلادى"


Static jweek(7) As String

Static jmonth(12) As String

Dim jd As Long, jm As Long, jy As Long, i As Long


jweek(1) = "الاحد": jweek(2) = "الاثنين": jweek(3) = "الثلاثاء"

jweek(4) = "الاربعاء": jweek(5) = "الخميس": jweek(6) = "الجمعة": jweek(7) = "السبت"


jmonth(1) = "يناير": jmonth(2) = "فبراير": jmonth(3) = "مارس": jmonth(4) = "أبريل"

jmonth(5) = "مايو": jmonth(6) = "يونيو": jmonth(7) = "يوليو": jmonth(8) = "اغسطس"

jmonth(9) = "سبتمبر": jmonth(10) = "اكتوبر": jmonth(11) = "نوفمبر": jmonth(12) = "ديسمبر"


jd = Day(m_day)

jm = Month(m_day)

jy = Year(m_day)

i = WeekDay(m_day)

If ty_d = 1 Then

 J_DATE = jweek(i) & " " & Str(jd) & " " & jmonth(jm) & " " & Str(jy) & " " & "م"

Else

 J_DATE = Str(jd) & "/" & Str(jm) & "/" & Str(jy) & " " & "م"

End If


End Function
بعد ذلك قم باستدعاء الدالة من اي مكان تريد عن طريق كتابة هذا التعبير داخل مربع نص :
=ConvertDateString(Date();0;1;1)

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

  • 2 months later...

لدي ملف عملت له تحويل التاريخ من الخيارات الى تاريخ هجري , و ذلك حتى أتمكن من ادخال البيانات التي تصدر بالتاريخ الهجري

و لكن لآن الميزانية عندنا أساسها ميلادي , فانني بحاجة للتاريخين معا

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

لذلك أرغب بعمل كود يقرأ النص كتاريخ هجري و يقوم بتحويله الى تاريخ ميلادي و تخزينه في حقل آخر , فهل هذا متوفر ؟

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

أخي العزيز / رضوان ،،،، السلام عليكم ورحمة الله وبركاته

إفرض أن عندك جدول ( t1 ) به حقلين :

الحقل الاول : ( d1 ) ،،، التاريخ الميلادي

الحقل الثاني : ( d2 ) ،، التاريخ الهجري

ونموذج باسم ( f1 ) ،،، يقرأ من هذا الجدول

ضع هذا الكود في حقل ( d2 ) في حدث بعد التحديث :

Dim sc As Integer

    Dim d As Date

    Dim S As String

     sc = Calendar

    VBA.Calendar = 1

    d = CDate(d2)

    VBA.Calendar = 0

    S = CStr(d)

     d1 = Format(S, "YYYY/MM/DD")

    VBA.Calendar = sc

عملت لك مثالاً على ذلك

شاكر

date_97.zip

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

الاستاذ الفاضل / شاكر

أنا فعلا شاكر لك شكرا جزيلا جهدك المرموق , و يكفي القول و بكل أمانة أنني راسلت أحد المواقع الآجنبية و جاءني الرد بأنه لا يمكن التحويل بين التاريخين الهجري و الميلادي ,

و قد قمت بتنزيل الملف المرفق , و أعطى بالفعل نتيجة صحيحة للمعيار s

و لكن انهاء الفورمات لم يكن ناجحا , حيث تظهر لي رسالة run time error

بأن التنسيق غير مناسب للحقل

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

  • 2 months later...

السلام عليكم

أولا أشكر القائمين على هذا المنتدى وجميع الاعضاء

كيف اجعل التأريخ في الاكسس يكون يسجل في التاريخ الهجري؟

وكيف أجعل حقل التأريخ يكون مباشرة من غير ادخال تاريخ اليوم الحالي؟؟؟

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

مرحبا بك أخي الكريم ،،، الخطوات لعمل قاعدة البيانات بالتاريخ الهجري :

1 - إذهب إلى قائمة ( أدوات ) وأختر منها ( بدء التشغيل )

2 - سوف تظهر لك شاشة يوجد بها زرار ( خيارات متقدمة ) أضغطه سوف تظهر لك خيارات من ضمنها ( التقويم الهجري ) ضع عليه علامة ( صح ) ثم أضعط على الزر ( موافق ) ,,, هذا لو كان الاصدار الذي تعمل عليه هو أوفس ( 97 ) ,,,

أما لو كان الاصدار الذي تعمل عليه أوفس ( xp ) ،،، فمن قائمة أدوات يوجد إختيار ( خيارات ) ،،، ابحث عن ( التقويم الهجري ) في صفحات التبويب وضع عليه علامة ( صح ) ثم أحفظ التغييرات بالضغط على زر ( موافق ) ,,,

بالنسبة لجعل حقل التاريخ يكون مباشرة بالتاريخ الحالي :

افرض عندك حقل بإسم ( d ) ،،،، ضع في هذا الحقل في خاصية القيمة الافتراضية هذا الكود :

=Date()

هذا والله أعلم ,,,,

شاكر الزين

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

أقوم بتصميم قاعدة بيانت مكونة من

طلبة دورات

والدورات لها تاريخين ( هجري وميلادي ) تاريخ انعقاد وتاريخ انتهاء

وبحثت عن كود يقوم بكتابة التاريخ الهجري في الحقل الآخر استنادا للتاريخ الميلادي فلم أجد

والذي وجدته هو كود يقوم باعطائي تاريخ اليوم ( الهجري والميلادي) ولا استطيع التحكم بتغيير التاريخين

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

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

وهذ هو الكود الذي يقوم بإعطائي التاريخ الميلادي والهجري الخاص باليوم بدون تغييرفيه

طبعا هذ الكود من الاخ ابن مسقط

Private Sub Form_Load()

Calendar = vbCalGreg
Me!txtGD = Format(Date, "yyyy-mm-dd")


Calendar = vbCalHijri
Me!txtHD = Format(Date, "yyyy-mm-dd")
Calendar = vbCalGreg
End Sub

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

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

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

فلديك مثلا مربع النص تاريخ ميلادي والآخر تاريخ هجري

في حدث بعد التحديث للأول اكتب الكود

Dim dd As String
dd = Trim(Format(تاريخ_ميلادي, "dd/mm/yyyy"))
 [تاريخ هجري] = ConvertDateString(dd)
وفي الوحده النمطية اكتب الكود
'التحويل من التاريخ الميلادى للهجرى


Function ConvertDateString(ByRef stringin As String)

Dim SavedCal As Integer
Dim d As Date
Dim s As String

SavedCal = Calendar
VBA.Calendar = 0
d = CDate(stringin)

VBA.Calendar = 1
s = CStr(d)
ConvertDateString = Format(s, "dd/mm/yyyy")
VBA.Calendar = SavedCal

End Function
'التحويل من التاريخ الهجرى إلى الميلادى
Function ConvertDate(ByRef stringin As String) As String
Dim SavedCal As Integer
Dim d As Date
Dim s As String

SavedCal = Calendar
VBA.Calendar = 1
d = CDate(stringin)
VBA.Calendar = 0
s = CStr(d)
ConvertDate = Format(s, "dd/mm/yyyy")
VBA.Calendar = SavedCal

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