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

هل من حل واضح للتاريخ الهجري في SQL

مغلق
بدأه moayad في 19 مايو 2004 · 10 رد · 4,809 مشاهدة · في أرشيف قسم SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

قمت بتحويل قاعدة بيانات لبرنامج شؤون موظفين من Access الى SQL ولكن لم يقبل أن يحول التواريخ الهجرية في جدول الاقامات (نظام السعودية) الى أن حولت نوع حقل التاريخ من date الى text ولكن من الصعوبة التعامل داخل برنامج Access مع حقل date على أنه text والا احتجنا الى التغير في برمجة الشاشات وخاصة في عمليات التواريخ

الرجاء شرح الحل ان وجد بالتفصيل فضلاً لا أمرا واذا كان لا مفر من التغير في الكود فما ابسط الطرق لذلك

مع الشكر الجزيل

#2

لم يسبق لي التعامل بالتاريخ الهجري، ولكن انظر:

/index.php?showtopic=1248

فكر بطريقة أخرى

#3

مشكور أخ Walcom على حسن تعاونك , ولكن بصراحة لم أستفد كثيرا من الرابط

مع الشكر الجزيل

#4

انظر هنا دعم اللغه العربيه فى Sql Server

http://msdn.microsoft.com/library/default....abicsupport.asp

International Features In SQL Server

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#6

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

#7

ايضاً

تحويل التاريخ من هجري لميلادي (للمبرمجين فقط)

تم تعديل هذه المشاركة بواسطة طارق إبراهيم في 25 مايو 2004 في 04:18

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#8

الشكر الجزيل لأخي طارق والأخ walcom

#9

بالنسبة للتاريخ الهجري

لو ما زالت عندك مشكلة فالحل أسهل منة مافي

طبعا الحاسب يتعامل مع التاريخ الميلادي فقط

و لا يعترف بالحسابات الهجرية ( جرب و شوف )

الفكرة

- تعمل حقل نصي لكل حقل تاريخ

-لما يسجل المستخدم التاريخ الهجري يتم تحويلة لميلادي في متغير

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

القيمة الموجودة في المتغير

- القيمة الي حطها المستخدم ( الهجرية ) تتسجل في الحقل النصي الي سويتة

عملية التحويل لها ثلاث دوال انا بفضل الله عملتها و نجحت بنسبة 100 %

لكن حاليا للأسف مو متوفرة و هي في واحد من البرامج الخاصة بي

على سيدي معاي

و بس أفرزة أنزل لك الكود على الموضوع

سواء أنته أو أي مسلم في هذا المنتدي

لكن طلبي أن يرسل رد على هذه الموضوع علشان تتفعل في بريدي و أرد علية

لأني للأسف ما أعرف كيف أوصل للمقالة مرة ثانية

و ختاما تحياتي

وفوق كل ذي علم عليم

http://www.leaderstechnology.com

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

#10

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

على العموم هناك نظام SQL يتم على اساسه تعريف الحقول ان لم تخني الذاكرة (ICDL) او شيئا من هذا القبيل يمكنك بها تعريف نوع التاريخ في SQL وهذا من تجربة سابقة لي في هذا الموضع

جديد مدونتي الشخصية http://www.badwi.com

ادعو لنا بظاهر الغيب

MyBooksExchange.jpg

#11

عفوا يا شباب على التأخير

تعقيبا على قولي السابق فأن لكل حقل تاريخ حقل بجانبة نصي لحفظ التاريخ بشكل هجري

طبعا المستخدم من شاشات الادخال سيسجل تاريخ هجري وعليكم أن تحولوا التاريخ المسجل لتاريخ ميلادي ثم يحفظ التاريخ الميلادي الناتج في الحقل الي من النوع تاريخ و التاريخ الهجري في الحقل النصي

بالنسبة للأستعلام العملية كالتالي

المستخدم سيسجل تاريخ هجري و الدوال تحدد التاريخ المناسب بعد تحويلة لتاريخ ميلادي ثم تستعلم عن طريق هذة القيم و الحقول الناتجة من الأستعلام خلي الحقول النصية (الي تم تسجيل التاريخ الهجري فيها ) هي التي تظهر للمستخدم بدل الحقول التي من نوع تاريخ التي تجري عليها العملية، و الدوال الي صممتها لهذة العملية هي كالتالي

-ToGregorianDate

و تستقبل تاريخ هجري و تحولة لتاريخ ميلادي

-ToHijriDate

و تستقبل تاريخ ميلادي و تحولة لتاريخ هجري

-ConvertDate

هذة الدالة الأساسية للدالتين السابقتين

و هي دالة التحويل نفسها

ضع الدوال السابقة في ملف Module و جرب

--------------------------------------------------الدوال -----------------------------------

Private Function ConvertDate(ByRef StringIn As String, ByRef OldCalender As Integer, ByVal NewCalender As Integer, ByRef NewFormat As String) As String

    Dim SavedCal As Integer
    Dim D As Date, s As String
    SavedCal = Calendar
    Calendar = OldCalender
    D = CDate(StringIn)
    Calendar = NewCalender
    s = CStr(D)
    ConvertDate = Format(s, NewFormat)
    Calendar = SavedCal
End Function

Public Function ToHijriDate(ByVal GregorianDate As String) As String
    Dim HijriDate As String, DateFormat  As String
'    DateFormat = "long date"
    DateFormat = "dd/mm/yyyy"
    HijriDate = ConvertDate(GregorianDate, vbCalGreg, vbCalHijri, DateFormat)
    ToHijriDate = HijriDate
End Function

Public Function ToGregorianDate(ByVal HijriDate As String) As String
    Dim GregorianDate As String, DateFormat  As String
    DateFormat = "dd/mm/yyyy"
    GregorianDate = ConvertDate(HijriDate, vbCalHijri, vbCalGreg, DateFormat)
    ToGregorianDate = GregorianDate
End Function

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

أظن الفكرة واضحة

و هي ممتاز - من وجهة نظري - لعقدة التاريخ الهجري

و سلامتكم

تم تعديل هذه المشاركة بواسطة walcom في 19 ديسمبر 2004 في 12:47

وفوق كل ذي علم عليم

http://www.leaderstechnology.com

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

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

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