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

مشكلة التاريخ معي في Sql Server2000

بدأه ابو بكير في 16 ديسمبر 2008 · 5 رد · 1,223 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

كل عام وانتم بخير

بحث كثيرا في هذا المنتدى ولم اجد حل لهذه المشكله المشكله هي كالتالي

انا استخدم لغة السي شارب 2005 مع (Sql server 2000) ولما أضيف بيانات في جدول بالجمله التالية

	sqlcmd = "insert into Sessions (Se_type,Se_date) values('" + comboBox4.Text.Trim() + "'," + DateTime.Parse(dateTimePicker2.Value.ToShortDateString().ToString()).ToShortDateString() + "') ";

تظهر لي رسالة خطأ هذه :

$exception {"The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.\r\nThe statement has been terminated."}

حسب فهمي للرساله خطأ في التاريخ علما ان نوع البيانات في الحقل هي (datetime) ولما ارجع أحولها الى nvarchar ما تظهر الرساله ويقبلها فهذا هو الي محيرني ليش مايقبل نوع تاريخ ووقت في sql Server2000 علما ان بيانات الحقل من datetimePicker فهل الكود خطأ او آش المشكله هذه هي المشكله الأولى

اما الثانية إذا أريد ان استعلم عن كل الجلسات القادمه يعني الي اكبر من تاريخ اليوم ماهو الكود المناسب لهذا الإستعلام علما أنني جربت هذا الكود وما ظبط

SqlConnection con = new SqlConnection(str);
				string sql = "select * from Sessions where Se_date>'" + DateTime.Now.ToShortDateString()+ "'";
				con.Close();
				con.Open();
				SqlDataAdapter da = new SqlDataAdapter();
				da.Dispose();
				cmd.Connection = con;
				cmd.CommandText = sql;
				da.SelectCommand = cmd;
				da.Fill(ds1, "zzz");</P> 
				comboBox3.DataSource = ds1;
				comboBox3.DisplayMember = "zzz.Se_date";

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

ملحوظه ضيغة التاريخ عندي في الجهاز (dd/mm/yyyy)

يوم ثم شهر ثم سنه

وشكرا لكم

سأصبر حتى يعجز الصبرُ عن صبري

وسأصبر حتى يأذن الله في أمري

وسأصبر حتى يعلم الصبرُ أني صبرتُ على شيئاٍ أمرُ من الصبرِ

#2

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

من أجل مشكلة التاريخ أنا كمان صار معي نفس الشي

ولكن وضعت نمط بيانات الحقل datetime وضعته (nvarchar(30 وبعدين لما بدك تعرضها حولها إلى DateTime وبيمشي الحال إن شاء الله

طبعا لما تخزنها لا تنسى انت تستخدم ()ToShortDateString

أتمنى أن تعمل معاك هذه الطريقة

تم تعديل هذه المشاركة بواسطة am_proactive في 16 ديسمبر 2008 في 16:05

من وجد الله فماذا فقد -- ومن فقد الله فماذا وجد

Don't Say I Don't Know But Say I Will Try

#3

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

شكرا أخوي am_proactive على الرد , الي فهمته منك اني احول الحقل في الداتا بيز الى nvarchar بدل datetime هل صحيح ولا لا , طيب كيف لما ابغى اعرضها احولها الى Datetime في comboBox ياريت تكتب كود بسيط كمثال

طيب وبالنسبة للإستعلام للتواريخ القادمه كيف

سأصبر حتى يعجز الصبرُ عن صبري

وسأصبر حتى يأذن الله في أمري

وسأصبر حتى يعلم الصبرُ أني صبرتُ على شيئاٍ أمرُ من الصبرِ

#4

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

شكرا لكم والحمد لله ضبطت معاي كانت المشكله في تاريخ الجهاز مايقبل (dd/mm/yyyy) الي قبلها (mm/dd/yyyy) الحمد لله

لكن الآن كيف اخليه يعرض البيانات في الكومبوبكس على شكل يوم شهر سنه وليس مثل ماهي مخزنه في القاعده

سأصبر حتى يعجز الصبرُ عن صبري

وسأصبر حتى يأذن الله في أمري

وسأصبر حتى يعلم الصبرُ أني صبرتُ على شيئاٍ أمرُ من الصبرِ

#5

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

حاول أخي أن تجرب الـ Substring وهو يقسم لك النص مثل ما بدك يعني ضع اسم الحقل النصي المراد تقسيمه ثم اضغط نقطة وسيظهر لك هذا التابع

وأيضا هناك تابع استفيد منه وهو Indexof

أتمنى ان تعمل لك هذه الطريقة

من وجد الله فماذا فقد -- ومن فقد الله فماذا وجد

Don't Say I Don't Know But Say I Will Try

#6

السلام عليكم

أخي أنت ما تحتاج أبدا للتغيير إلى nvarchar مجرد بس شيل كلمة .ToShortDateString

وسوف يقوم SQL بتسجيلها وهي أفضل من ناحية إنك لما هتسترجعها مش هتسترجعها string هتسترجعها Date

حاجة تانية: انت دلوقتي مثلا بيظهر التاريخ عندك يوم/شهر/سنة يعني مثلا 18/12/2008 أما أنا عندي مظبط الجهاز علشان يظهرهولي بالنظام الأمريكي شهر/يوم/سنة يعني 12/18/2008

ملاحظة: النظام الأمريكي بيريحني في شغلي أكثر

فتخيل مثلا إنك سجلتها string وجبت حطيت البرنامج عندي ؟ البرنامج مش هيشتغل مش هيقبل رقم 18 كشهر صح؟

بالنسبة لموضوع العرض في combo box استخدم الكود التالي:

DateTime.ToString("M/d/yyyy");

أما لو عاوز تغير إعدادات الجهاز نفسها ممكن تستخدم Regional Settings من Control Panel.

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