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

مشكلة في التاريخ و عمل المقارنات

بدأه hassan51993 في 19 أغسطس 2012 · 16 رد · 1,589 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

ايضا عند استخدام date time picker في الدوت نت في برنامج يتصل بقاعدة البيانات يقوم بإدارج التاريخ مضافة اليه الساعات والدقائق والثواني في وقت ادراجه

مثال

انا اريد مثلا ادخال تاريخ 5/5/2012 فيقوم هو بكتابته مضافة اليه توقيت الادراج

فلو كنت مثلا اقوم بهذه العمليه في تمام 3:30:53 فيكتب التاريخ هكذا

53-30-3 -5-5-2012

فمنطقيا انه عندما يجري المقارنه سيجد ان الشرط غير متحقق

المطلوب

ازالة الساعات والدقائق سواء عند التخزين في السيكوال او عند الاستعلام من الدوت نت

علما بأني استخدم سي شارب

#C

#2

المكان المناسب للسؤال هو قسم Microsoft Visual C#.NET

سينقل الموضوع إليه

إجابة على سؤالك:

DateTime.Now.ToString("yyyy-MM-dd");

بدلاً من DateTime.Now يمكنك تمرير أي قيمة تمثل DateTime .. وبدلاً من "yyyy-MM-dd" يمكنك وضعه بالـ format الذي تريد، مثلاً: "MM/dd/yyyy" أو "dd/MM/yyyy" .. إلخ

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#3

مشكور جدا اخي الكريم

#4

بس ده بيجيب تاريخ اليوم بس لكن انا عاوزه يعمل التاريخ المختار من ال date time picker وليس تاريخ اليوم فقط

#5

آه، بسيطة

أجر التعديلات كالتالي:

DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");

لمزيد من المعلومات حول DateTime custom format string انظر الرابط التالي (الجدول في المنتصف): http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#6

يا اخي الفاضل انا اقصد اداة date time picker التي تتيح للمسنخدم ادخال تاريخ عن طريق اختيار الشهر واليوم

#7

الأداة تتيح لك الحصول على التاريخ من خلال الخاصة Value

فببساطة

dtPicker.Value.ToString("yyyy-MM-dd HH:mm:ss");

وقد ذكرت لك سابقاً:

اقتباس
بدلاً من DateTime.Now يمكنك تمرير أي قيمة تمثل DateTime

بمعنى أني وضعته كمثال فقط لا غير.

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#8
dt_picker.value.date

ده هياخذ التاريخ فقط و يقارنه بالداتا بيز و هتشتغل معاك

ولو عايز تقارن بتاريخ اليوم

Datetime.now.date
#9

لم تفلح اي هذه الطرق وقد قمت بالتأكد من البروسيدجر جيدا وتاكد انه يعمل في السيكوال جيدا

dt_picker.value.date

هذه الطريقه تحتفظ تعرض التاريخ ولكن مضاف له 12:00:00 وهذه ثابته دائما

لو هناك تعديل لازالة 12 هذه بيتهيألي ان المشكله هتتحل

وهذه الطريقه

dtPicker.Value.ToString("yyyy-MM-dd HH:mm:ss");

لم تؤثر في شيء بصيغتها هذه و حتي اني حذفت ايضا HH:mm:ss ولكن لا فائده من ذلك كله

#10

الطرق صحيحة، لكن المشكلة ستكون في تطبيقك لها.

أرفق نسخة عن المشروع أو على الأقل عن الفورم التي تتعامل معها ليتم التعديل عليها.

انظر في الملف المرفق

datePicker_date_format.rar

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#11

https://rapidshare.com/files/134812943/Cashier.rar

ده لينك فيه المشروع بالكامل والسيكوال داتابيز

الفورم التي اريد به العمل هي

View By Date And Parcode

وسأقوم بتطبيق الحل علي باقي الفورم

شكر الله لكم وجزاكم خيرا

تم تعديل هذه المشاركة بواسطة hassan51993 في 22 أغسطس 2012 في 13:30

#12

القاعدة على ما يبدو مصممة بـ SQL server 2008

أنا لدي SQL server 2005 express ولا أستطيع تجربة التطبيق.

لكن على كل حال،

انظر الجزء التالي من الصفحة التي ذكرتها:

            itm.Date = dateTimePicker1.Value;
            txtDate.Text = dateTimePicker1.Value.ToString("yyyy-MM-dd HH:mm:ss");


          //  itm.Date = Convert.ToDateTime(dateTimePicker1.Value.Year + "/" + dateTimePicker1.Value.Month + "/" + dateTimePicker1.Value.Day +"00:00:00");
           // itm.Date = Convert.ToDateTime(dateTimePicker1.Value.ToString("dd-MM-yyyy"));
           // itm.Date = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
            //txtDate.Text = Convert.ToString(itm.Date);
            SqlConnection sqlcon;
            SqlCommand command;
            sqlcon = new SqlConnection("data source=.;database=Cashier;integrated security=true;");
            command = new SqlCommand("ViewByDateAndParcode", sqlcon);
            command.CommandType = CommandType.StoredProcedure;
            command.Parameters.AddWithValue("@date", itm.Date);
            command.Parameters.AddWithValue("@parcode", itm.Par);

أنت تقوم بوضع التنسيق في txtDate.Text

ولكنك تستخدم itm.Date لتمرير قيمة التاريخ التي تأتي من dateTimePicker1.Value بالحالة الافتراضية ؟؟

1- تأكد من format التاريخ الذي يحفظ في القاعدة

2- أجري التعديلات التالية:

//itm.Date = dateTimePicker1.Value;
itm.Date = dateTimePicker1.Value.ToString("yyyy-MM-dd");

طبعاً بعد تعديل الـ format بحسب الشكل الذي تريده.

3- التابع

private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
        {

            DateTime.Now.ToString("yyyy-MM-dd ");

        }

غير ضروري، وبالأصل خاطئ لأن القيمة لا يتم إسنادها لأي شئ.

جرب وأخبرني بالنتيجة، فإن لم تحل المشكلة

ضع لي شفرة الـ stored procedure الذي تستخدمه مع أنماط البارامترات التي يملكها

+

شكل التاريخ كما يتم حفظه في القاعدة

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#13

جربت ولا فائده

قد قمت بذلك سلفا ولكن ايضا لا فائده

وهذا هو كود البروسدجر

 ALTER proc [dbo].[ViewByDateAndParcode] 
 @date datetime,
 @parcode varchar(max)
 as
 begin
 select quantity,date  from orders where date=@date and ItemId=(select id from item where parcode=@parcode)
 end
#14

استبدل التالي:

@date datetime,

بـ

@date varchar(10),

ما النتيجة؟

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#15

جربت في السيكوال واشتغل لكن نفس المشكله كما هي في الدوت نت

#16

أجري التعديلات التالية ومن ثم جرب مرة أخرى:

txtDate.Text = dateTimePicker1.Value.ToString("MM/dd/yyyy");

على فرض أن تنسيق التاريخ الذي يتم حفظه في القاعدة هو MM/dd/yyyy

command.Parameters.Add("@date", SqlDbType.DateTime).Value = txtDate.Text;

على أن يكون نمط بارامتر التاريخ في الـ SP هو DateTime بدون تغيير.

بعد أن تجري هذه التغييرات وتختبرها، إن لم تحل المشكلة أرفق شفرة الصفحة فقط مع التعديلات (بدون أي تغيير) حتى أرى الصفحة التي تقوم بتنفيذها لحظة الاختبار.

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#17

يمكنك تسجيل التاريخ في قاعدة البيانات بشكل string كما في المثال :

DateTime.Now.Date.ToShortDateString();

وعندما تجلب البيانات من قاعدة البيانات تقوم بعكس العملية كالتالي

DateTime.Parse(dbDateString)

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