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

مشكلة بالتاريخ ( قبل وبعد الميلاد )

مغلق
بدأه MMA_EG_Cairo في 2 نوفمبر 2007 · 6 رد · 1,677 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

إخواني الكرام ، تحية طيبة وبعد ،

في الحقيقة أنا لدي سؤال لا أعلم هل سأجد الحل في نهذا المنتدي الكريم أم لا ، ولكنني أتعشم في ذلك !!!!

بغض النظر عن نوع قاعدة البيانات المستخدمة !!!

من المعروف أن التاريخ الموجود في الحاسب الآلي يبدأ من 1/1/100 وحتي 31/12/9999 وأي نوع من أنواع قاعدة البيانات يأخذ قيمة تنسيق حقل التاريخ مثل الحاسب الآلي ، ولكن المشكلة أخواني أنني أرغب في إدراج تاريخ ( 12/5/0050 ) أي سنة خمسين ، فحولت قيمة الحقل بقاعدة البيانات الي نوع نصي وهذا الشيء المتوقع من أي شخص أو أي مبرمج يجد مشكلة بالتاريخ مع العلم أن هناك حقلين بقاعدة البيانات بنفس المشكلة . أي يكون قبل الميلاد أو بعد الميلاد ، فقررت أن أضع لهم حقلين من نوع نصي ولكن حدث مشكلة أخري غير متوقعة وذلك أثناء إجراء عمليات حسابية علي هذا التاريخ سواء الجمع أو الطرح أو .... الي آخرة !!!

أولا : لا يعترف بأن هناك تاريخ أقل من 1/1/100 .

ثانياً : عند إجراء طرح بين التاريخين يعطي لي مشاكل ويرفض عملية الحسب أو يعطي حساب غير منطقي ، علي سبيل المثال يجب أولاً تحويل القيمة النصية الي قيمة تاريخية كما يلي :

txtData.Text = CDate("24/9/0050")

سيعطي الناتج التالي :

24/9/1950

ملحوظة ، سبب إستخدام هذين الحقلين بإحدي الجداول هو بناء قاعدة بيانات متكاملة عن التاريخ المصري الفرعوني ، وكما تعلمون

أن تاريخ مصر يبدأ من قبل الميلاد وبعدة

أتمني المساعدة لحل هذه المشكلة

وشكراً للجميع

لا تخلط ما بين شخصيتي وأسلوبي .. فشخصيتي هي

ما أنا عليه وتحت تصرفي .. وأسلـوبي يعتمد عليـك

أنت وتصرفاتك

ولحظاتي صمت... وصمـت لحظاتي كلام ... كلامه

اشد آلام ... فصمتي أنا عنوان

عصر التكنولوجيا المعلوماتية(مدونتي الخاصة)

My FaceBook

#2

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

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

#3

أخي TariqVB أشكرك كثيراً علي الرد

بالنسبة لعملية الحساب فهي مفهومة جداً ، وبالفعل حاولت التحويل الي القيمة الرقمية لتسهيل العمليات !!!

لكن أخي طارق ليس من حقي تخزين تاريخ ( 15/9/0050 ) بحقل البيانات لأنني من الطبيعي يجب علي تحويل هذه القمة النصية الي قيمة تاريخ ، ومن ثم أقوم بتحويلها الي قيمة رقمية ، وحتي الآن لا يجوز تخزين قيمة أقل من عام 100

ثانياً : حاولت قيمة ( 24/9/100 ) الي قيمة رقمية وأعطت لي الناتج التالي ( -657168 ) مع ملاحظة أن الناتج قيمة سالبة ، فقررت أن أقوم بإضافة هذه القيمة الي ( -757168 ) وعند إستخدام دالة التحويل CDate بقاعدة بيانات Access فوجأت بالناتج ( #خطأ ) !!!

ومن داخل الفيجوال بيزيك أعطي لي الخطأ رقم "6" ، والذي تفيد بـ "Overflow"

أتمني إيجاد الحل بالقريب العاجل بمشيئة الله

وشكراً

لا تخلط ما بين شخصيتي وأسلوبي .. فشخصيتي هي

ما أنا عليه وتحت تصرفي .. وأسلـوبي يعتمد عليـك

أنت وتصرفاتك

ولحظاتي صمت... وصمـت لحظاتي كلام ... كلامه

اشد آلام ... فصمتي أنا عنوان

عصر التكنولوجيا المعلوماتية(مدونتي الخاصة)

My FaceBook

#4

رجاء المساعدة

لا تخلط ما بين شخصيتي وأسلوبي .. فشخصيتي هي

ما أنا عليه وتحت تصرفي .. وأسلـوبي يعتمد عليـك

أنت وتصرفاتك

ولحظاتي صمت... وصمـت لحظاتي كلام ... كلامه

اشد آلام ... فصمتي أنا عنوان

عصر التكنولوجيا المعلوماتية(مدونتي الخاصة)

My FaceBook

#5

ممكن تستعين بالدلة mid

وتضيف رقم للسنة

وبعدين تنقصه

؟؟؟؟؟؟؟؟ مجرد اقتراح

#6

إخواني الكرام ، تحياتي للجميع بالمنتدي الكريم ،

مشكلتي إخواني كانت متعلقة بقاعدة بيانات Access و SQL-Server وكذلك لغة VB 6.0 ، ولكن قاعدة بيانات Oracle وجدت حلاً لها ، أما بالنسبة لـ الـ VB 6.0 فقمت بإنشاء حل مبدئي وهو أنني أنسي الحاسب الآلي تماماً قليلاً ومن ثم أنظر الي طريقة الحساب اليدوية !!!

فمسكت ورقة وقلم ووضعت كافة الإحتمالات الممكنة لكلاً من التاريخ الميلادي والتاريخ ما قبل الميلاد !!!

والحمد لله صممت كود بسيط بالفيجوال بيزيك يعطي لي نتائج هائلة وذلك مربوطة بقاعدة بيانات Access !!!

سأرفقها للجميع لعلي وعسي تفيد بشءٍ ما ، لكن لو سمحتم لو رأيطم أي خطأ في طريقة الحساب رجاء التوضيح والمشاركة معي لصناعة كود سليم يستفاد منة الجميع

وشكراً لكل من ساهم بمشاركتي البسيطة والمتواضعاً

والسلام ختام

مع الشكر

CalcDate.rar

لا تخلط ما بين شخصيتي وأسلوبي .. فشخصيتي هي

ما أنا عليه وتحت تصرفي .. وأسلـوبي يعتمد عليـك

أنت وتصرفاتك

ولحظاتي صمت... وصمـت لحظاتي كلام ... كلامه

اشد آلام ... فصمتي أنا عنوان

عصر التكنولوجيا المعلوماتية(مدونتي الخاصة)

My FaceBook

#7

هل الكود غير سليم أم غير منطقي

رجاء التوضيح

لا تخلط ما بين شخصيتي وأسلوبي .. فشخصيتي هي

ما أنا عليه وتحت تصرفي .. وأسلـوبي يعتمد عليـك

أنت وتصرفاتك

ولحظاتي صمت... وصمـت لحظاتي كلام ... كلامه

اشد آلام ... فصمتي أنا عنوان

عصر التكنولوجيا المعلوماتية(مدونتي الخاصة)

My FaceBook

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

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