السلام عليكم اريد حساب مصروف اليوم من بداية اليوم الى اخر اليوم ... علما بان التاريخ به وقت و ثواني
PHP كود :
Dim cmd2 As New OleDbCommand("Select Sum(amountexpense) FROM Expenses where [Dateexpense]=@Dateexpense ", connGet_landryInfo)
cmd2.Parameters.AddWithValue("@Dateexpense", Date.Today.Date + New TimeSpan(0, 0, 1) < Date.Today.Date + New TimeSpan(23, 59, 59))
B4.Text = cmd2.ExecuteScalar.ToString)
وعليكم السلام ورحمة الله وبركاته
أثناء كتاب الكود فكر بمنطقية وستجد الحل دون الوقوع بالأخطاء ..
مثلا عندك :
[Dateexpense] هو حقل تاريخ ووقت.
ولكن جملة الإستعلام لديك للبحث ضمن الحقل : أنت وضعت قيمة منطقية جوابها إما
نعم أو
لاا
وهو عندما وضعت الكود التالي :
كود :
Date.Today.Date + New TimeSpan(0, 0, 1) < Date.Today.Date + New TimeSpan(23, 59, 59)
فهذه الجملة جملة منطقية أصغر أو لاا وليست قيمة رقمية أو تاريخية (و جوابها إما [b]نعم أو
لاا)..[/b]
بالنسبة لسؤالك أنت تريد مجاميع اليوم نفسه فليس المهم الساعات ولا الدقائق ولا الثواني
فالمنطق يقول أن تجعل البحث عن تطابق اليوم والشهر والسنة وأترك الباقي فهو ليس مهم ..
لذا عليك استخدام الدالة الـ Format
بالتالي تصبح جملة الاستعلام هي :
كود :
"Select Sum(amountexpense) FROM Expenses where Format([Dateexpense],'yyyy/MM/dd')=@Dateexpense "
أي أن :
كود :
Dim cmd2 As New OleDbCommand("Select Sum(amountexpense) FROM Expenses where Format([Dateexpense],'yyyy/MM/dd')=@Dateexpense ", connGet_landryInfo)
cmd2.Parameters.AddWithValue("@Dateexpense", DateTime.Today.ToString("yyyy/MM/dd"))
B4.Text = cmd2.ExecuteScalar.ToString)
ملاحظة :
- الأفضل أن تجعل البحث عن قيمة موجودة ضمن DateTimePicker1 وليس قيمة جامدة ..
وتجعلها إفتراضياً تأخذ اليوم الذي أنت فيه.. فإن شاء المستخدم عدل التاريخ فيها وحسب قيمة يوم آخر ربما الأمس مثلاً ..
- دقق الكود جيداً وصححه ليناسب برنامجك ..
بالتوفيق ..
مشكور اخي
طيب كيف حيكون بالنسبة للبحث داخل التقارير ... كيف ممكن اعدل هنا بنفس الفكرة ... بس علما هنا راح يكون البحث بين تاريخين وليس نفس اليوم
لان ما زبط معي بالتقارير .. ابحث عبر DateTimePicker1 ولازم احط الثواني والوقت والتاريخ
PHP كود :
Try
Me.Customers1TableAdapter.Fill(Me.Laundry_DatabaseDataSet.Customers1)
Dim query =
From x In Laundry_DatabaseDataSet.Customers1
Where (x.dataofpayment >= Date1.Value) And (x.dataofpayment <= Date2.Value)
ReportViewer1.LocalReport.DataSources(0).Value = query
Me.ReportViewer1.RefreshReport()
Catch ex As Exception
End Try
حتى البحث بين تاريخين ما بيحتاج تضع الساعة والثواني ..
الوقت يظهر بالفواتير وضروري في تسجيل وقت الحدث .. صباحاً أم مساءاً،
أي ساعة بالتحديد : من أجل مراجعة الكيمرات مثلاً أو معرفة نوبة من كانت وغيرها ...
ولو ظهرت ضرورة بالبحث عليك استخدام طريقة مشابه كما فعلنا سابقاً
مثلاً
كود :
Format(xxxx,"yyyy/MM/dd - HH:mm:ss"
الأمر مرن جداً ومتاح للتعديل بحسب ما يحتاجه الوضع..
فكر وجرب واعتمد..