• 0
mikiii

أريد كود حفظ التاريخ في قاعدة بيانات Sql Server

سؤال

من فضلكم أريد كود حفظ قيمة DateTimePicker في حقل نوعه datetime في قاعدة بيانات sql server

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

10 إجابة على هذا السؤال .

  • 0

عرف متغير من نوع string

واحفظ فيه التاريخ بالقيمه التاليه

Datetimep.value.month &"/" & DateTimep.value.day &"/" & datetimep.value.year

وبعدين احفظ المتغير الى قاعدة البيانات

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

انا بشكرك جدا على الرد

هو الكود شغال وبيحفظ لكن بفتح الداتا باس بلاقي اللي موجود 01/01/1900 12:00:00 ص مع اني بعمل التاريخ 17\12\2009

مش عارف فين المشكلة ؟؟؟؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

عايز بس انبهك لحاجة مهمة وهى انك مش لازم تعمل حقل من نوع date فى قاعدة البيانات لان ده بيعمل مشاكل لما تيجى تشغل البرنامج على جهاز تانى بسبب اختلاف عرض التاريخ والوقت على كمل جهاز

لازم تخلى نوع الخلية varchar 50 ده بالنسبة للسيكول سيرفر

وكود الحفظ هايكون كالتالى

insert into tablename values (datetimepaker.text)

وبالتالى هايحفظ التارخ زى ماهو مكتوب فى التكست

تحياتى

0103105777

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

فى حل افضل بكتير و بيساعد كمان فى موضوع البحث، الفكره دى انا بستخدمها و هى شغاله معايا

حقل التاريخ فى قاعدة البيانات اجعله رقم و مساحة هذا الرقم هو 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 - لا يوجد (على حد علمى).

و الله ولى التوفيق

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

فى حل افضل بكتير و بيساعد كمان فى موضوع البحث، الفكره دى انا بستخدمها و هى شغاله معايا

حقل التاريخ فى قاعدة البيانات اجعله رقم و مساحة هذا الرقم هو 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 - لا يوجد (على حد علمى).

و الله ولى التوفيق

أخي الكريم محمد علاء

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

-1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم اخي

هذة شكل حفظ التاريخ

 CMD.CommandText = "insert into EMP(EMP_ID,EMp_Date) values(" & Val(TextBox1.Text) & ",#" & DateTimePicker1.Text & "#)" 

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

محمد علاء الدين .. عجبتني طريقتك

ولكن كيف اضع حقل التاريخ كرقم واحدد البت من sql server

هل تقصد اضعه كـ int او bigint

وشكرا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أخي الفاضل قم بتحويل التاريخ بعد استقباله من ال datetimepicker الي نوع التاريخ القياسي العالمي Datetime ISO و هو بصيغة YYYY-MM-DD كالاتي



String.Format("{0:YYYY-MM-DD}", datetimepicker.Value);

ثم تحفظ القيمة في قاعدة البيانات ...

و عند عرض القيمة تستقبلها من قاعدة البيانات و تعطيها لل datetimepicker ايضا ...

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اشكرك اخي على الرد .. لكن في هذه الحالة هل اجعل نوع الحقل الخاص بالتاريخ smalldatetime?

لانني لاريده ان يحفظ لي الوقت والتاريخ معا .. اريد ان يحفظ التاريخ فقط ..لكي يظهر تاريخ فقط بدون وقت

انا هنا استخدم اداة calander لانني اعمل على asp.net

لقد عملت بمثل الطريقة الموجودة في الرابط التالي .. لكن لا اعلم هل سيساعدني في عملية البحث لاحقا او لا

اضغط هنا

حيث يتم حفظ قيمة التاريخ المحددة في اداة التكست - وحقل التاريخ وضعته من نوع varchar(5) في قاعدة البيانات على حسب مااطلعت عليه لكي لايسبب لي مشاكل لاحقا عند عرضه

هل هناك اي ملاحظات ؟؟

تم تعديل بواسطه RoOoSa
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

حل العضو matrixamn هو الافضل, اما قصه الوقت مو مشكله لان اثناء عرضها في DateTimePacker لن يغير شي اما اذا اردتي عرضها في كنترول اخر فينصح باستخدام

Format(CurrentDate,"dd-MM-yyyy")

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .