منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
طلب مساعدة - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم قواعد البيانات (http://vb4arb.com/vb/forumdisplay.php?fid=40)
+--- قسم : قسم أسئلة قواعد البيانات تحت بيئة الـ.NET (http://vb4arb.com/vb/forumdisplay.php?fid=41)
+--- الموضوع : طلب مساعدة (/showthread.php?tid=26818)



طلب مساعدة - نورال - 07-10-18

السلام عليكم ورحمة الله
هذه اول مشاركة لي في الموقع
ارجو السادة اصحاب الخبرة المساعدة

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

كود :
   Public Function Sum_CostReem()
       Dim Number As Double
       Try
           Dim cmd As New OleDbCommand(" Select Sum(CostReem) From Buy Where BuyDate >= @BuyDate1 And BuyDate <= @BuyDate2  ", Conn)
           cmd.Parameters.Clear()
           cmd.Parameters.Add("@BuyDate1", OleDbType.Date).Value = DateTimePicker1.Value
           cmd.Parameters.Add("@BuyDate2", OleDbType.Date).Value = DateTimePicker2.Value
           If Conn.State = 1 Then Conn.Close()
           Conn.Open()
           Number = cmd.ExecuteScalar
           Conn.Close()
       Catch ex As Exception
           Number = 0
           Conn.Close()
       End Try
       Return Number
   End Function
والكود يعمل ولكن فيه ملاحظة 
انه عند ادخال التاريخ الاول (البداية مثلا 29/9/2018) والتاريخ الثاني (النهاية مثلا 5/10/2018)
فانه لايجمع القيم بالحقل (العمود) بيوم 29/9/2018 ويتجاهلها
ويجمع من اليوم الذي بعده اي 30/9/2018 الى 5/10/2018
هل يوجد خطأ بالكود ام ان هذا امر طبيعي 
ارجو المساعدة كوني مبتدأ بالبرمجة و ارغب ان اتعلم لنفسي فقط وليس تجاريا
ولكم الشكر سلفا


RE: طلب مساعدة - نورال - 07-10-18

شكرا لردك اخي 

سارفق مثال عن الموضوع ارجو الاطلاع عليه

واعتذر لانني لم ارف اضافته في المرفقات لذا رفعته كرابط

http://www.mediafire.com/file/ohip1x6i82n083n/WindowsApplication1.rar/file

ارجو المساعدة


RE: طلب مساعدة - rnmr - 07-10-18

لم أجد مشكلة،




RE: طلب مساعدة - نورال - 08-10-18

(07-10-18, 11:39 PM)rnmr كتب : لم أجد مشكلة،


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


RE: طلب مساعدة - rnmr - 08-10-18

الجمع تم بالاستعلام كما فعلتي أنتي ولم أغير شيئاُ

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


RE: طلب مساعدة - نورال - 08-10-18

[attachment=19769 كتب :rnmr pid='129548' dateline='1538945279'][attachment=19769]الجمع تم بالاستعلام كما فعلتي أنتي ولم أغير شيئاُ

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



RE: طلب مساعدة - rnmr - 08-10-18

(08-10-18, 01:46 AM)نورال كتب :
(08-10-18, 12:47 AM)rnmr كتب : الجمع تم بالاستعلام كما فعلتي أنتي ولم أغير شيئاُ

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



النتائج عندك مختلفة عن ما عندي

جربي هذا

تم استخدام Between بدلا من => و=<
وأيضاً إضافة Date بعد Value لأداة التاريخ

كود :
Public Function Sum_Kasm()
   Dim Number As Double = 0
   Try
       Dim cmd As New OleDbCommand(" Select Sum(Kasm) From Invoices Where DateInvoice Between @DateInvoice1 And @DateInvoice2  ", Conn)
       cmd.Parameters.Clear()
       cmd.Parameters.AddWithValue("@DateInvoice1", DateTimePicker1.Value.Date)
       cmd.Parameters.AddWithValue("@DateInvoice2", DateTimePicker2.Value.Date)
       If Conn.State <> ConnectionState.Open Then Conn.Open()
       Number = cmd.ExecuteScalar
   Catch ex As Exception
       MsgBox(ex.Message)
   Finally
       Conn.Close()
   End Try
   Return Number
End Function


Public Function Sum_Rabh()
   Dim Number As Double = 0
   Try
       Dim cmd As New OleDbCommand(" Select Sum(Rabh) From Invoices Where DateInvoice Between @DateInvoice1 And @DateInvoice2  ", Conn)
       cmd.Parameters.Clear()
       cmd.Parameters.AddWithValue("@DateInvoice1", DateTimePicker1.Value.Date)
       cmd.Parameters.AddWithValue("@DateInvoice2", DateTimePicker2.Value.Date)
       If Conn.State <> ConnectionState.Open Then Conn.Open()
       Number = cmd.ExecuteScalar
   Catch ex As Exception
       MsgBox(ex.Message)
   Finally
       Conn.Close()
   End Try
   Return Number
End Function



RE: طلب مساعدة - نورال - 08-10-18

(08-10-18, 03:05 AM)rnmr كتب :
(08-10-18, 01:46 AM)نورال كتب :
(08-10-18, 12:47 AM)rnmr كتب : الجمع تم بالاستعلام كما فعلتي أنتي ولم أغير شيئاُ

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



النتائج عندك مختلفة عن ما عندي

جربي هذا

تم استخدام Between بدلا من => و=<
وأيضاً إضافة Date بعد Value لأداة التاريخ

كود :
Public Function Sum_Kasm()
   Dim Number As Double = 0
   Try
       Dim cmd As New OleDbCommand(" Select Sum(Kasm) From Invoices Where DateInvoice Between @DateInvoice1 And @DateInvoice2  ", Conn)
       cmd.Parameters.Clear()
       cmd.Parameters.AddWithValue("@DateInvoice1", DateTimePicker1.Value.Date)
       cmd.Parameters.AddWithValue("@DateInvoice2", DateTimePicker2.Value.Date)
       If Conn.State <> ConnectionState.Open Then Conn.Open()
       Number = cmd.ExecuteScalar
   Catch ex As Exception
       MsgBox(ex.Message)
   Finally
       Conn.Close()
   End Try
   Return Number
End Function


Public Function Sum_Rabh()
   Dim Number As Double = 0
   Try
       Dim cmd As New OleDbCommand(" Select Sum(Rabh) From Invoices Where DateInvoice Between @DateInvoice1 And @DateInvoice2  ", Conn)
       cmd.Parameters.Clear()
       cmd.Parameters.AddWithValue("@DateInvoice1", DateTimePicker1.Value.Date)
       cmd.Parameters.AddWithValue("@DateInvoice2", DateTimePicker2.Value.Date)
       If Conn.State <> ConnectionState.Open Then Conn.Open()
       Number = cmd.ExecuteScalar
   Catch ex As Exception
       MsgBox(ex.Message)
   Finally
       Conn.Close()
   End Try
   Return Number
End Function


جزاك الله كل خير وجعله في ميزان حسناتك
فعلا الان اصبح يعطي النتائج صحيحة 
وفقك الله