السلام عليكم
لدي حقل تاريخ اريد ان اسمح للمستخدم ان يستطيع ان يسجل تواريخ قديم مثلا
1161/01/01
كيف استطيع ذلك علما انني حاولت كثيرا
فما السر في ذلك وما هو الحل
ملحوظة : لا اريد ان استخدم حقل حرفي بدل الحقل التاريخي
وشكرا
السلام عليكم
لدي حقل تاريخ اريد ان اسمح للمستخدم ان يستطيع ان يسجل تواريخ قديم مثلا
1161/01/01
كيف استطيع ذلك علما انني حاولت كثيرا
فما السر في ذلك وما هو الحل
ملحوظة : لا اريد ان استخدم حقل حرفي بدل الحقل التاريخي
وشكرا
احدثك و معدتى مليئه
اقتباسكيف استطيع ذلك علما انني حاولت كثيرافما السر في ذلك وما هو الحل
لا تستطيع ذلك كما رأيت اما السر فيكمن فى طبيعة نوع البيانات
نوع البيانات datetime يبدأ من ا يناير 1753 و حتى 31 ديسمبر 9999
نوع البيانات smalldatetime يبدأ من 1 يناير 1900 و حتى 6 يونيو 2079
Technical Lead Developer
اللهم قنى شر الجهل و الجهلاء
( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}
مشكلة فعلا إدخال التواريخ القديمة في SQL Server ، ولكن يمكن التحايل عليها بطريقة أو أخرى.
فكرة: طالما أن النوع datetime يقبل تواريخ حتى عام 9999، فلم لا تستفيد من ذلك المدى ، مثلا تقوم بجمع 3000 سنة للتاريخ (بالدالة dateadd في فجوال بيسك 6 ودوت نت) الذي تريد التعامل معه قبل تخزينه، وتتعامل معه داخل البرنامج على أساس أنه في تلك الفترة، وقبل عرضه في البرنامج تطرح من التاريخ 3000.
الموضوع سيتطلب تعديل الفكرة إذا كنت ستتعامل مع تواريخ من قبل الميلاد :)
فكرة أخرى معقدة قليلا: قسم حقل التاريخ لثلاثة حقول، اليوم والشهر والسنة، لكن ستتطلب مجهودا أكثر في الاستعلام، وستتطلب أيضا مجهودا لبناء class لتعريف كيفية عمل الاستعلام عبر التواريخ على البيانات المركبة من الثلاثة حقول.
شخصيا أفضل الفكرة الأولى، وفي انتظار الآراء.
فكر بطريقة أخرى
نوعي البيانات datetime و smalldatetime
لماذا لايقبلان تواريخ قديمة ؟
أو لماذا لا يوجد نوع يقبل تواريخ قديمة ..هل هذا مستحيل وهم عاجزون على ايجاد مثل هذا النوع ؟
اريد ان اعرف السر ؟
لماذا مثلا لاينشئوا نوع ولنسمه مثلا olddatetime يقبل تواريخ قديمة
بالنسبة لفكرتك الاولى اخي walcom
صعبة التطبيق وليست عملية ....وذلك مع استخدام الـ ( جريد ) ...كيف تعمل في المثال التالي :
التسلسل تاريخ الميلاد اسم العالم
----- --------- -------
01 1101/01/05 محمد
02 1202/02/06 علي
03 1030/08/19 صالح
اذا سجل المستخدم السجل الاول واراد ان ينتقل ليسجل السجل التالي تظهر له رسالة خطاء ولايمكنه الانتقال للسجل التالي الا اذا عدل التاريخ في السجل الاول .
وبالنسبة للفكرة الثانية فهي خارج نطاق بحثنا ...فنحن انشئنا حقول رقيمة اخرى او حقول نصية
وهذا ليس المطلوب ، المطلوب حقل تاريخ يقبل تواريخ قديمة .
ارجو منكم المزيد من التفكير مع لمعرفة الاسباب وايجاد الحلول العملية
ارجو المشاركة من الجميع كذلك
ولكم جزيل الشكر
ساقوم فقط بتعديل بسيط على كلام وليد
ساقترض ان اصغر تاريخ لديك هو 1585 مثلاً و اصغر تاريخ يقبله ال SQL Server هو 1753 إذا كنت تستخدم نوع البيانات datetime فستقوم بطرح اصغر تاريخ لديك من 1753 باستخدام التعليمه DateDiff و سيكون الناتج هو الثابت الذى ستقوم باضافته لكل التواريخ لديك قبل حفظه فى قاعدة البيانات و عند استرجاع التاريخ لعرضه للمستخدم فستقوم بطرح ذلك الثابت من التاريخ القادم من قاعدة البيانات
تم تعديل هذه المشاركة بواسطة طارق إبراهيم في 24 أكتوبر 2004 في 14:07
Technical Lead Developer
اللهم قنى شر الجهل و الجهلاء
( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}
هذا الموضوع مغلق.