منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : ما الخطاء فى هذا الكود جمع قيمة حقل بشرط
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم

  
 هذ اكود لجمع  حساب اجمالي

يعمل مرة واحدة اذا ضغط اكثرمن مرة يظهر خطاء

واذا لم يعثر على تطابق يظهر خطاء

كود :
Dim cmd2 As New OleDbCommand("select sum(total_price)from tbl_sales where item_namelike @item_name", con)
       cmd2.Parameters.Add("@item_name", OleDbType.VarChar).Value = "%" & combo_yaer.Text.Trim & "%"

       con.Open()
       Dim ssales As Integer = cmd2.ExecuteScalar
       txt_sales.Text = ssales
       con.Close()
وعليكم السلام ورحمة الله وبركاته

اخى الفاضل new_programer

انتبه للمسافات بين كل كلمة حتى تتجنب من الاخطاء
كود :
Dim cmd2 As New OleDbCommand("select sum(total_price) from tbl_sales where item_name like @item_name", con)

تحياتى لك
وتمنياتى لك التوفيق
شكراً على الرد
لكن اخي الكود يعمل بشكل صحيح لكن لو غيرت القيم وبحثت مرة اأخر يظهر خطاء

وعند عدم العثور على بيانات يظهر خطاء

هل الكود دة صحيح
(18-12-18, 07:42 AM)new_programer كتب : [ -> ]السلام عليكم

  
 هذ اكود لجمع  حساب اجمالي

يعمل مرة واحدة اذا ضغط اكثرمن مرة يظهر خطاء

واذا لم يعثر على تطابق يظهر خطاء

كود :
Dim cmd2 As New OleDbCommand("select sum(total_price)from tbl_sales where item_namelike @item_name", con)
       cmd2.Parameters.Add("@item_name", OleDbType.VarChar).Value = "%" & combo_yaer.Text.Trim & "%"

       con.Open()
       Dim ssales As Integer = cmd2.ExecuteScalar
       txt_sales.Text = ssales
       con.Close()


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


كود :
Try
           Dim cmd As OleDbCommand = New OleDbCommand(SELECT sum(total_price) as tot FROM tbl_sales where item_namelike @item_name", con)

            cmd.Parameters.Add("@item_name", combo_yaer.Text.Trim)

           con.Open()

           Dim dr As OleDbDataReader = cmd.ExecuteReader

           If dr.Read = True Then
               txt_sales.Text = dr!tot
               dr.Close()
                con.Close()
           End If

       Catch ex As Exception
           txt_sales.Text = "0"
           dr.Close()
            con.Close()
       End Try
السلام عليكم

عفوا استاذ
حريف برمجة
الكود لم يعمل معي
شكرا لك


اخيرا الحمد لله
توصلت للحل المشكلة كانت يجب وضع الكود داخل Try

علشان عند عدم وجود بيانات بيحصلش خطاء
هذا الكود ليستفيد به الجميع


كود :
       Try
           Dim cmd As New OleDbCommand("select sum(item_price) from tbl_sales where  ddate= @ddate", con)
           cmd.Parameters.Add("@ddate", OleDbType.Date).Value = txt_date.Text
           con.Open()
           Dim count As Integer = cmd.ExecuteScalar
           txt_decount.Text = count
           con.Close()
       Catch
           con.Close()
           txt_Sum_Price.Text = "0000"
           MsgBox(" لا يوجد فواتير مسجلة بهذا التاريخ", MsgBoxStyle.Critical, "لا يوجد بيانات")
       End Try
(21-12-18, 01:27 AM)new_programer كتب : [ -> ]السلام عليكم

عفوا استاذ
حريف برمجة
الكود لم يعمل معي
شكرا لك


اخيرا الحمد لله
توصلت للحل المشكلة كانت يجب وضع الكود داخل Try

علشان عند عدم وجود بيانات بيحصلش خطاء
هذا الكود ليستفيد به الجميع


كود :
       Try
           Dim cmd As New OleDbCommand("select sum(item_price) from tbl_sales where  ddate= @ddate", con)
           cmd.Parameters.Add("@ddate", OleDbType.Date).Value = txt_date.Text
           con.Open()
           Dim count As Integer = cmd.ExecuteScalar
           txt_decount.Text = count
           con.Close()
       Catch
           con.Close()
           txt_Sum_Price.Text = "0000"
           MsgBox(" لا يوجد فواتير مسجلة بهذا التاريخ", MsgBoxStyle.Critical, "لا يوجد بيانات")
       End Try


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

عفوا أخي الكريم،

إن الحل الذي وضعته ليس صحيحا،

لأنه لو حصل أي خطأ في جزء بين Try وCatch مثل عدم الاتصال او
خطا في الاستعلام ستظهر رسالة "لا يوجد فواتير" بالرغم من وجود فواتير
ولكن الخطأ أوهمك بغير ذلك.

تفضل التعديل الصحيح،
لاحظ أن نوع البيانات القادمة هو Object لعدم معرفة النتيجة القادمة هل هي رقم أم DBNull
PHP كود :
Try
 
   Dim cmd As New OleDbCommand("select sum(item_price) from tbl_sales where  ddate= @ddate"con)
 
   cmd.Parameters.AddWithValue("@ddate"txt_date.Text)
 
   If con.State <> ConnectionState.Open Then con.Open()
 
   Dim c As Objectcmd.ExecuteScalar
    If Not IsDBNull
(cThen
        txt_decount
.Text c
    Else
        txt_Sum_Price
.Text "0000"
 
       MsgBox(" لا يوجد فواتير مسجلة بهذا التاريخ"MsgBoxStyle.Critical"لا يوجد بيانات")
 
   End If
Catch
 
   MsgBox(ex.Message)
Finally
 
   con.Close()
End Try 
وضعت الحل للفائدة رقم مرور عدة أيام عليه.