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

التاريخ الهجري و الميلادي

مغلق
بدأه Oracle_VB في 18 أبريل 2001 · 4 رد · 6,211 مشاهدة · في قواعد بيانات Oracle
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

لدي مشكلة في اظهار التاريخ الهجري في التقرير ، علما بأنني أرغب في اظهار التاريخين معا الميلادي و الهجري في نفس التقرير ، أود ان اوضح بأنني أعمل على Developer 2000 Report Ver:2.5 و لكم مني جزيل الشكر و التقديــــر.

#2

وضح نوع المشكلة

هل التاريخ الهجري موجود على الجدول وتريد اظهاره ضمن التقرير

او هل الموجود في الجدول التاريخ الميلادي وتريد تحويله الى هجري واظهار التاريخين

او تريد اظهار التاريخ الهجري والميلادي ضمن عنوان التقرير وقت طباعة التقرير بالاعتماد على تاريخ الجهاز

فا تحديد المشكلة يساعدعلى حلها

#3

أشكرك أخ ابوعمر عبدالله على الرد اريد التوضيح بأنني أريد اظهار التاريخ الهجري والميلادي ضمن عنوان التقرير وقت طباعة التقرير بالاعتماد على تاريخ الجهاز

جزاك الله ألف خير

#4

هناك طريقة تمشي الحال وهي

تقوم بأنشاء جدول من حقلين للتاريخ الهجري والتاريخ الميلادي

نقوم بادخال بداية الاشهر الهجريه وما يوافقها بالميلادي لسننتين او اكثر مثلا 01/02/1422 يقابله 25/04/2001 طبعا يكون الادخال بدون الشرطات ثم نستخدم الوظيفه التاليه لتحويل التاريخ وعملها باختصار

نبحث عن التاريخ الاقرب لتاريخ اليوم على الجهاز ( اقل او مساوي لتاريخ اليوم ) ثم ناخذ المقابل له بالهجري

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

 التاريخ الهجري يخزن مقلوب لكي تتمكن من الجمع عليه وعلى خانة الايام

 بعد الاضافة تقوم باعادة التاريخ الهجري للوضع الصحيح

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

function calc_hej return varchar2 is

HJDATE VARCHAR2(8) ;

VB VARCHAR2(2);

gdate date;

hdate VARCHAR2(8);

CURSOR C1 IS

SELECT ROWID, HDATE, GDATE FROM HGDATE ORDER BY GDATE;

REC C1%ROWTYPE;

BEGIN

OPEN C1;

LOOP

FETCH C1 INTO REC;

EXIT WHEN sysdate < REC.GDATE ;

gdate := REC.GDATE;

hdate := REC.HDATE;

END LOOP;

CLOSE C1;

VB := ROUND(sysdate) - ROUND(gdate);-- -1;

hdate := hdate + VB;

hdate := RESET_DATE(hdate);

RETURN(hdate);

EXCEPTION

WHEN OTHERS THEN

RETURN null;

END;

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

#5

السلام عليكم

هناك دالة يمكن الاستفادة منها قد تفيدك اخى الكريم

SELECT TO_CHAR(SYSDATE+1,'DD-MM-YYYY','NLS_CALENDAR=''ENGLISH HIJRAH''') FROM DUAL;

مع ملاحظة ان المعامل ENGLISH HIJRAH ليس بين DOUBLE QOUTATION

ولكن SINGLE QOUTATION مرتين

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

وفققكم الله

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

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