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

خطا في datetime convert الي string عند الضغط علي زر الحفظ

بدأه ahmedalsafi في 7 يناير 2014 · 11 رد · 713 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم الاخوة والاخوات الكرام . كيف احول datetime الي string
 وهل dateTimePicker1 يعامل معاملة textbox ام يحتاج الي convert معين

وشكرا
 

post-275435-0-22203300-1389050731_thumb.

post-275435-0-24973900-1389051205_thumb.

وَقُلْ رَبِّي زِدْنِي عِلْماً
#2

هل الخطا في الصورة اعلاه له علاقة بالامر

وَقُلْ رَبِّي زِدْنِي عِلْماً
#3

أخي الكريم.

DataTimePicker يحوي على خاصية هي SelectedDate بإمكانك حفظها مباشرة إلى قاعدة البيانات، حيث يكون الحقل بقاعدة البيانات من نوع date او datetime

• • •


[ ربيّ احفظ سوريا الحبيبة]


oFOK7Kd.png

#4

هل تقصد هكذا DataTimePicker1.SelectedDate

لاني كنت اكتب في الكود DataTimePicker1.text  فظهرت لي رسالة الخطا

Input string was not in a correct format.
 

ارجو ان توضح الامر لما استوعب SelectedDate جيدا

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

وَقُلْ رَبِّي زِدْنِي عِلْماً
#5

نعم أخي الكريم
كل بيانات ضمن sql  لها مقابل ضمن السي شارب int, float, string, bool.....

وهذا هو الحال مع date ضمن sql

 لذلك نحن بحاجة لإدخال بيانات قاعدة البيانات من نوع date !!

لذلك نستخدم العنصر DateTimerPicker ومن ضمن الخصائص SelectedDate وهي عبارة عن object يمثل التاريخ المحدد على DateTimePicker وليس النص الظاهر، بمعنى لو قمت بتعديل قيمة التاريخ بشكل خاطىء فإن العنصر لن يقبل التعديل!! وبالتالي تكون قيمة SelectedDate صحيحة دائما، لكن إن قمت بمسح كامل النص الظاهر يصبح SelectedDate = null

 

وكما اخبرتك نوع البيانات ضمن الجدول يجب أن يكون إما من نوع date أو datetime

 

بالتوفيق

• • •


[ ربيّ احفظ سوريا الحبيبة]


oFOK7Kd.png

#6

شكرا لك اخي الغالي ان نوع البيانات عندي datetime

وَقُلْ رَبِّي زِدْنِي عِلْماً
#7

انا اعرف طريقة التحويل( convert.toint32(txt_id.text)  (int

لكن طريقة تحويل datetime او كيف عندما اختار تاريخ معين من DateTimePicke1 يحفظ في قاعدة البيانات
 

وَقُلْ رَبِّي زِدْنِي عِلْماً
#8

جرب هذا الكود

Convert.ToDateTime(DateTimePicke1.Value.ToString());
#9

شكرا لك اخي

KARIMSOFT لقد جرت الكود  لكن نفس الخطا مستمر
وَقُلْ رَبِّي زِدْنِي عِلْماً
#10

لا تخزن التواريخ كـــvarchar  ابدا , لانك ستهدر مساحة كبيرة...  كل حرف بايت (NVarchar  كل حرف بايتين) مثلا التاريخ 20-01-2000 سيكلف 10 بايت .. 

استخدم النوع smalldatetime  إذا كنت لا ترغب بحفظ أجزاء الثانية (ميلي ثانية) و حجمه فقط 4 بايت .

استخدم النوع datetime  لحفظ اجزاء الثانية و حجمه 8 بايت .

استخدم النوع date  لحفظ السنة و الشهر و اليوم ..  (متوفر في سيكوال 2008 و ما فوق) حجم 3 بايت .

لتجنب مشاكل التنسيق , بين الكلاينت و السيرفر , فقد يكون السيرفر يستخدم النتسيق dd - MM- yyyy  و أحد الكلاينت يستخدم تنيسيق مختلف مثلا MM - dd - yyyy  ... استخدم البرمترات و الــ value  و هو سيعرف التحويل الصيحيح للقيمة .. مثلا :  

SqlCommand cmd = new SqlCommand("INSERT INTO Campaign( Starting_Date,Ending_Date) VALUES  (@Starting_Date,@Ending_Date)",con);               
cmd.Parameters.Add("@Starting_Date", SqlDbType.DateTime, 0).Value = this.DateTimePicker1.Value;
cmd.Parameters.Add("@Ending_Date", SqlDbType.DateTime, 0).Value = this.DateTimePicker2.Value;

هذا الكود ,  طويل قليلا و لكنه سيعمل مهما غيرت من تنسيق التارايخ في كل من السيرفر و الكلاينت (من لوحة التحكم) .

تم تعديل هذه المشاركة بواسطة حسام الشامي في 8 يناير 2014 في 21:40

2

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#11

dateTimePicker1.Value.ToString ("yyyy/MM/dd")

1
#12

السلام عليكم الاخوة الكرام لقد تمت معالجة المشكلة والحمدلله
وذلك بعد حذف جداول الترقيم التلقائي الاثنين من الاجراء المخزن

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

وربنا يجعل عملكم الطيب هذا في ميزان حسناتكم
بارك الله فيكم وجزاكم كل الخير

وَقُلْ رَبِّي زِدْنِي عِلْماً

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