من فضلكم أريد كود حفظ قيمة DateTimePicker في حقل نوعه datetime في قاعدة بيانات sql server
أريد التوضيح بمثال لو امكن عشان انا دورت كتييييير في الموضوع دة ومع انه بسيط اوي لكن جنني
من فضلكم أريد كود حفظ قيمة DateTimePicker في حقل نوعه datetime في قاعدة بيانات sql server
أريد التوضيح بمثال لو امكن عشان انا دورت كتييييير في الموضوع دة ومع انه بسيط اوي لكن جنني
عرف متغير من نوع string
واحفظ فيه التاريخ بالقيمه التاليه
Datetimep.value.month &"/" & DateTimep.value.day &"/" & datetimep.value.year
وبعدين احفظ المتغير الى قاعدة البيانات
انا بشكرك جدا على الرد
هو الكود شغال وبيحفظ لكن بفتح الداتا باس بلاقي اللي موجود 01/01/1900 12:00:00 ص مع اني بعمل التاريخ 17\12\2009
مش عارف فين المشكلة ؟؟؟؟
السلام عليكم ورحمة الله وبركاته
عايز بس انبهك لحاجة مهمة وهى انك مش لازم تعمل حقل من نوع date فى قاعدة البيانات لان ده بيعمل مشاكل لما تيجى تشغل البرنامج على جهاز تانى بسبب اختلاف عرض التاريخ والوقت على كمل جهاز
لازم تخلى نوع الخلية varchar 50 ده بالنسبة للسيكول سيرفر
وكود الحفظ هايكون كالتالى
insert into tablename values (datetimepaker.text)
وبالتالى هايحفظ التارخ زى ماهو مكتوب فى التكست
تحياتى
0103105777
فى حل افضل بكتير و بيساعد كمان فى موضوع البحث، الفكره دى انا بستخدمها و هى شغاله معايا
حقل التاريخ فى قاعدة البيانات اجعله رقم و مساحة هذا الرقم هو 64بت.
نأتى الأن للبرنامج توجد لديك حالة من ثلاثه
1 - تريد الحصول على التاريخ فقط.
2 - تريد الحصول على الوقت فقط.
3 - تريد الحصول على التاريخ و الوقت مجتمعين.
و اليك طريقة كل منهم
للحصول على التاريخ فقط الذى تم اختياره داخل الـ DateTimePicker استخدم الكود التالى
Dim DateAsNumber as Long = DateTimePicker1.Value.Date.Ticks
للحصول على الوقت فقط الذى تم اختياره داخل الـ DateTimePicker استخدم الكود التالى
With DateTimePicker1.Value
Dim t As Long = (.Hour * 60 * 60 + .Minute * 60 + .Second) * TimeSpan.TicksPerSecond
End Withالكود السابق يحضر لك الوقت المختار بالساعه و الدقائق و الثوانى، فإذا اردت دقة اعلى للوقت (المللى ثانيه و النانو ثانيه و الـ Ticks و لا انصحك بذلك اطلاقا) أستخدم الكود التالى
With DateTimePicker1.Value
Dim t As Long = .Ticks - .Date.Ticks
End Withللوقت و التاريخ معا استخدم الكود التالى
With DateTimePicker1.Value
Dim dt As Long = (.Hour * 60 * 60 + .Minute * 60 + .Second) * TimeSpan.TicksPerSecond + .Date.Ticks
End Withبالسابق تكون حفظت القيم بقاعدة البيانات لإسترجاعها و اظهارها كما تريد استخدم الكود التالى: على افتراض ان القيمه التى استرجعتها من قاعدة البيانات مخزنه فى مت% Long D1 Long و اسمه dt
Dim d As DateTime = DateTime.FromBinary(dt)
عملية اظهار التاريخ بصيغه معينه تعتمد على الأداة او الكود بمعنى لو افترضنا انك تريد اظهار القيمه بالشكل التالى
Day/Month/Year Hour:Minute:Second AM
بالنسبه لأداة الـ DateTimePicker قم بجعل الخاصيه Format تساوى Custom و اجعل الخاصيه CustomFormat تحتوى على الصيغه التاليه
dd/MM/yyyy hh:mm:ss tt
اما اذا كنت تستخدم الكود و قمت بتخزين الرقم العائد من قاعدة البيانات داخل متغير من نوع DateTime، فقط قم بإستدعاء الداله ToString لهذا المتغير و قم بتمرير الصيغه السابقه لها و ستجد ان القيمه المعاده هى التاريخ بنفس الشكل الذى تريده.
مزايا الطريقه السابقه
1 - المساحه المستخلكه من قاعدة البيانات للمتغير الرقمى هى نفسها المستخدمه للنوع datetime مع فرق الترميز.
2 - السرعه : الرقم الناتج من عملية تحويل التاريخ إلى رقم يعتمد على التاريخ فإذا كان تاريخ امس اقل من تاريخ اليوم فى المقارنه فأيضا ستجد ان رقم تاريخ اليوم اكبر من رقم من تاريخ امس و لكن الفرق هنا يكمن فى سرعة البحث فمحرك قاعدة البيانات لا يحتاج لتحويل صيغة التاريخ إلى رقم للمقارنه به.
3 - الرقم الناتج يمكن تحويله لأكثر من صيغة تاريخ على عكس اذا كنت قد حفظته على شكل تاريخ او نص فستحتاج لعمليات لتحويله لتاريخ بصيغه اخرى.
4 - ستكتشف سرعتها حقا عندما تبحث داخل جدول يحتوى على نصف مليون سجل (إذا لم تصادف جدول بهذا الشكل فأنت محظوظ).
العيوب
1 - لا يمكن استخدام دوال التاريخ الخاصه بـ SQL للتعامل مع هذا الحقل (الأمر مختلف أذا كنت تتعامل مع SQL Server).
2 - لا يوجد (على حد علمى).
و الله ولى التوفيق
مدونتي: C++ Tips and Tricks
Muhammad alaa كتب:فى حل افضل بكتير و بيساعد كمان فى موضوع البحث، الفكره دى انا بستخدمها و هى شغاله معايا
حقل التاريخ فى قاعدة البيانات اجعله رقم و مساحة هذا الرقم هو 64بت.
نأتى الأن للبرنامج توجد لديك حالة من ثلاثه
1 - تريد الحصول على التاريخ فقط.
2 - تريد الحصول على الوقت فقط.
3 - تريد الحصول على التاريخ و الوقت مجتمعين.
و اليك طريقة كل منهم
للحصول على التاريخ فقط الذى تم اختياره داخل الـ DateTimePicker استخدم الكود التالى
Dim DateAsNumber as Long = DateTimePicker1.Value.Date.Ticksللحصول على الوقت فقط الذى تم اختياره داخل الـ DateTimePicker استخدم الكود التالى
With DateTimePicker1.Value Dim t As Long = (.Hour * 60 * 60 + .Minute * 60 + .Second) * TimeSpan.TicksPerSecond End Withالكود السابق يحضر لك الوقت المختار بالساعه و الدقائق و الثوانى، فإذا اردت دقة اعلى للوقت (المللى ثانيه و النانو ثانيه و الـ Ticks و لا انصحك بذلك اطلاقا) أستخدم الكود التالى
With DateTimePicker1.Value Dim t As Long = .Ticks - .Date.Ticks End Withللوقت و التاريخ معا استخدم الكود التالى
With DateTimePicker1.Value Dim dt As Long = (.Hour * 60 * 60 + .Minute * 60 + .Second) * TimeSpan.TicksPerSecond + .Date.Ticks End Withبالسابق تكون حفظت القيم بقاعدة البيانات لإسترجاعها و اظهارها كما تريد استخدم الكود التالى: على افتراض ان القيمه التى استرجعتها من قاعدة البيانات مخزنه فى مت% Long D1 Long و اسمه dt
Dim d As DateTime = DateTime.FromBinary(dt)عملية اظهار التاريخ بصيغه معينه تعتمد على الأداة او الكود بمعنى لو افترضنا انك تريد اظهار القيمه بالشكل التالى
Day/Month/Year Hour:Minute:Second AMبالنسبه لأداة الـ DateTimePicker قم بجعل الخاصيه Format تساوى Custom و اجعل الخاصيه CustomFormat تحتوى على الصيغه التاليه
dd/MM/yyyy hh:mm:ss ttاما اذا كنت تستخدم الكود و قمت بتخزين الرقم العائد من قاعدة البيانات داخل متغير من نوع DateTime، فقط قم بإستدعاء الداله ToString لهذا المتغير و قم بتمرير الصيغه السابقه لها و ستجد ان القيمه المعاده هى التاريخ بنفس الشكل الذى تريده.
مزايا الطريقه السابقه
1 - المساحه المستخلكه من قاعدة البيانات للمتغير الرقمى هى نفسها المستخدمه للنوع datetime مع فرق الترميز.
2 - السرعه : الرقم الناتج من عملية تحويل التاريخ إلى رقم يعتمد على التاريخ فإذا كان تاريخ امس اقل من تاريخ اليوم فى المقارنه فأيضا ستجد ان رقم تاريخ اليوم اكبر من رقم من تاريخ امس و لكن الفرق هنا يكمن فى سرعة البحث فمحرك قاعدة البيانات لا يحتاج لتحويل صيغة التاريخ إلى رقم للمقارنه به.
3 - الرقم الناتج يمكن تحويله لأكثر من صيغة تاريخ على عكس اذا كنت قد حفظته على شكل تاريخ او نص فستحتاج لعمليات لتحويله لتاريخ بصيغه اخرى.
4 - ستكتشف سرعتها حقا عندما تبحث داخل جدول يحتوى على نصف مليون سجل (إذا لم تصادف جدول بهذا الشكل فأنت محظوظ).
العيوب
1 - لا يمكن استخدام دوال التاريخ الخاصه بـ SQL للتعامل مع هذا الحقل (الأمر مختلف أذا كنت تتعامل مع SQL Server).
2 - لا يوجد (على حد علمى).
و الله ولى التوفيق
أخي الكريم محمد علاء
مساعدتك للاعضاء الجدد المبتدئين بالأمثلة سهلة ومفيدة فهل يمكن مساعدتي في مسار طريقي للوصول الى الاحتراف في لغة الفيجوال بيسك
السلام عليكم اخي
هذة شكل حفظ التاريخ
CMD.CommandText = "insert into EMP(EMP_ID,EMp_Date) values(" & Val(TextBox1.Text) & ",#" & DateTimePicker1.Text & "#)"السلام عليكم
محمد علاء الدين .. عجبتني طريقتك
ولكن كيف اضع حقل التاريخ كرقم واحدد البت من sql server
هل تقصد اضعه كـ int او bigint
وشكرا
أخي الفاضل قم بتحويل التاريخ بعد استقباله من ال datetimepicker الي نوع التاريخ القياسي العالمي Datetime ISO و هو بصيغة YYYY-MM-DD كالاتي
ثم تحفظ القيمة في قاعدة البيانات ...
و عند عرض القيمة تستقبلها من قاعدة البيانات و تعطيها لل datetimepicker ايضا ...
[يمين]في زمان كل شئ فيه يتحرك بسرعة ... كونك ثابتا يعني انك تتحرك للوراء...
[/يمين]
اشكرك اخي على الرد .. لكن في هذه الحالة هل اجعل نوع الحقل الخاص بالتاريخ smalldatetime?
لانني لاريده ان يحفظ لي الوقت والتاريخ معا .. اريد ان يحفظ التاريخ فقط ..لكي يظهر تاريخ فقط بدون وقت
انا هنا استخدم اداة calander لانني اعمل على asp.net
لقد عملت بمثل الطريقة الموجودة في الرابط التالي .. لكن لا اعلم هل سيساعدني في عملية البحث لاحقا او لا
حيث يتم حفظ قيمة التاريخ المحددة في اداة التكست - وحقل التاريخ وضعته من نوع varchar(5) في قاعدة البيانات على حسب مااطلعت عليه لكي لايسبب لي مشاكل لاحقا عند عرضه
هل هناك اي ملاحظات ؟؟
تم تعديل هذه المشاركة بواسطة RoOoSa في 6 فبراير 2011 في 16:40
السلام عليكم ورحمه الله وبركاته
حل العضو matrixamn هو الافضل, اما قصه الوقت مو مشكله لان اثناء عرضها في DateTimePacker لن يغير شي اما اذا اردتي عرضها في كنترول اخر فينصح باستخدام
Format(CurrentDate,"dd-MM-yyyy")
.:: Wish to become better and better ::.