إنتقال للمحتوى

  • تسجيل الدخول عبر الفيس بوك تسجيل الدخول عبر تويتر Log In with LinkedIn Log In with Google      تسجيل دخول    
  • إنشاء حساب

صورة
- - - - -

مشكلة ادخال التاريخ 30/صفر في قاعدة البيانات وتجربة بعض الحلول


2 رد (ردود) على هذا الموضوع

#1 moh_bin

moh_bin

    مشترك

  • الأعضــاء
  • 63 مشاركة

تاريخ المشاركة 22 October 2009 - 10:50 AM

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

شرح المشكلة :
أنه لا يمكن إدخال التاريخ الهجري 29-02-1430 و 30-02-1430 في أي حقل من نوع تاريخ في قاعدة البيانات
-----------------------------------------------------------------------------------------------------------------
** الحلول والتجارب التي تم عملها :
أولا :
1- الاعتماد على جداول تم إعدادها مسبقا ، ومن خلال هذه الجداول يستطيع الشخص التحويل ،
وهنا في مثالنا تم عمل جدول ويضم بداية التاريخ الهجري وما يقابله من ميلادي ، وكذلك نهاية التاريخ الهجري وما
يقابله من ميلادي على سبيل المثال كالتالي :

الشهر الهجري------------------ 1
اسم الشهر الهجري------------ محرم
بداية التاريخ الهجري------------- 01-01-1430
بداية التاريخ الميلادي------------ 29-12-2008
نهاية التاريخ الهجري------------- 29-01-1430
نهاية التاريخ الميلادي------------ 26-01-2009
**************************************************************************
الشهر الهجري------------------ 2
اسم الشهر الهجري------------ صفر
بداية التاريخ الهجري------------- 01-02-1430
بداية التاريخ الميلادي------------ 27-01-2009
نهاية التاريخ الهجري------------- 30-02-1430
نهاية التاريخ الميلادي------------ 25-02-2009
**************************************************************************
2- جعل نوع الحقل(التاريخ) الموجود في كل الفورم DATA TYPE=CHAR
3- ويتم تخزين التاريخ في قاعدة البيانات في حقل نوعه أيضاً DATA TYPE=CHAR
عيوبها :
الحقل التاريخ نوعه DATA TYPE=DATE موجود في جداول وشاشات النظام كاملة وعليه فإنه
من الصعب التعديل على كل النظام كامل .

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

ثانياً :
جعل التاريخ الهجري هو التاريخ الافتراضي للـ DEVELOPER و لقاعدة البيانات وذلك من خلال التالي :
- التعديل في REGEDIT في الــ HOME الخاص بالــ DEVELOPER وكذلك الخاص بالــ D.B
بإضافة NLS_CALENDAR=ARABIC_HIJRAH
أو عن طريق تنفيذ الأمر :
لتحويل التاريخ من ميلادي الى هجري :
SQL>ALTER SESSION SET NLS_CALENDAR = 'ARABIC HIJRAH' ;
اذا تم تنفيذ هذا الامر بنجاح فسوف تظهر لك هذه الرساله .Session altered
وللتاكد من صحه ذلك يتم تنفيذ جمله select التاليه قبل وبعد تحويل التاريخ .
SQL>SELECT TO_CHAR(SYSDATE,'DD/MM/YYYY') FROM DUAL;
ولتحويل التاريخ من هجري الى ميلادي :
SQL>ALTER SESSION SET NLS_CALENDAR = 'GREGORIAN' ;
اذا تم تنفيذ هذا الامر بنجاح فسوف تظهر لك هذه الرساله .Session altered

* عيوبها :
أن التقويم الهجري الخاص بأوراكل قيمة مثبته لكل السنوات كالتالي :
شهر محرم عدد الأيام 30
شهر صفر عدد الأيام 29
شهر ربيع الأول عدد الأيام 30
شهر ربيع الثاني عدد الأيام 29
.................. إلى آخره .
وهــــــــكــــــــذا

- عند عمل التغيير في الريجستري ، تم الذهاب إلى شاشة المشتريات كمثال للتطبيق وتم كتابة التاريخ 30-02-1430 في
حقل تاريخ الفاتورة ، ولكن لم يقبل وقام النظام بتعديل التاريخ أوتوماتيكيا إلى 01-03-1430 هـ مع العلم أن شهر صفر
بناءا على تقويم ام القرى نهايته 30-02-1430هـ .
بمعنى شركة أوراكل عندها شهر صفر 29 يوم وإذا أدخلنا 30 صفر سيتم تحويله مباشرة إلى 1 ربيع الأول .

- بعد تخزين الحقل التاريخ بالهجري في الشاشة يتم تخزينه في قاعدة البيانات على أنه ميلادي .

-----------------------------------------------------------------------------------------------------------------
ثالثاً :
استخدام دوال أوراكل للتحويل التاريخ الميلادي إلى التاريخ الهجري كالتالي :
SELECT TO_CHAR(:rec_date+1,'DD-MM-YYYY','NLS_CALENDAR = ''ENGLISH HIJRAH''')
FROM DUAL ;
OR
SELECT TO_CHAR(:rec_date+1,'DD-MM-YYYY','NLS_CALENDAR = ''ARABIC HIJRAH''')
FROM DUAL ;

عند تنفيذ أمر الاستعلام السابق فإن نتيجة تحويل التاريخ الميلادي التالي 25-02-2009 ستصبح 01-03-1430 ولكن في تقوم أم القرى التاريخ المقابل للميلادي الصحيح هو 30-02-1430

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


ونرجو منكم إفادتنا في حل هذه المشكلة .

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

#2 user1396

user1396

    عضو

  • الأعضــاء
  • 18 مشاركة

تاريخ المشاركة 22 October 2009 - 06:56 PM

السلام عليكم
انظر هذا الحل قد يفيدك بحسب كلام بعض الإخوان انه يعمل 100% ويحل مشكلة التاريخ الهجري ..
مشاركة للأخ Amateur
http://www.araboug.o...showtopic=17914

#3 Ahmad.Hasan

Ahmad.Hasan

    مشرف قسم الـ Forms & Reports والمشاريع

  • فريق الإشراف
  • 4,871 مشاركة
  • الاسم الأول:Ahmad
  • اسم العائلة:Hasan
  • البـلـد: Country Flag
  • المنصب الحالي:Oracle HCM Consultant

تاريخ المشاركة 22 October 2009 - 11:57 PM

السلام عليكم
كلام اخي USER صحيح ... حيث يجيب استخدام فنكشن لتغطية هذه العيوب...

.Oracle E-Business Suite R12 HCM Certified Implementation Specialist

 

.Oracle Fusion Human Capital Management 11g Human Resources Certified Implementation Specialist