منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[VB.NET] خطا في كود عند الحفظ - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : [VB.NET] خطا في كود عند الحفظ (/showthread.php?tid=41749)



خطا في كود عند الحفظ - حيدر الشرهاني - 17-06-22

كود :
Private Sub BtnSave_Click(sender As System.Object, e As System.EventArgs) Handles BtnSave.Click, BtnClose.Click
      Total.Text = Val(Total.Text) + Val(DiscountTotal.Text)
      Insert_Buy_Tbl(Buy_ID.Text, Buy_Date.Value, Imp_Inv_No.Text, Inv_Type.Text, SalesMan.Text, Imp_ID.Text, Item_Count.Text, Total.Text, TaxValue.Text, TaxTotal.Text, DiscountValue.Text, DiscountTotal.Text, FinalTotal.Text, Paid.Text, UnPaid.Text)
      Insert_Buy_Details_Tbl()
      InsertStore()
      Update_Imp_Balance()
      Insert_Imp_Move(Buy_Date.Value, Imp_ID.Text, "فاتورة شراء", FinalTotal.Text, Paid.Text, UnPaid.Text, SalesMan.Text)
  End Sub
كود :
Public Sub Insert_Buy_Tbl(ByVal Buy_ID As Int32, ByVal Buy_Date As Date, ByVal Imp_Inv_No As String, ByVal Inv_Type As String, ByVal SalesMan As String, ByVal Imp_ID As Int32, ByVal Item_Count As Int32, ByVal Total As Double, ByVal Tax_Per As Double, ByVal TaxTotal As Double, ByVal Discount_Per As Double, ByVal DiscountTotal As Double, ByVal FinalTotal As Double, ByVal Paid As Double, ByVal UnPaid As Double)
      Dim Cmd As New SqlCommand
      With Cmd
          .Connection = Con
          .CommandType = CommandType.Text
          .CommandText = "Insert Into Buy_Tbl ( Buy_ID,Buy_Date,Imp_Inv_No,Inv_Type,SalesMan,Imp_ID,Item_Count,Total,Tax_Per,TaxTotal,Discount_Per,DiscountTotal,FinalTotal,Paid,UnPaid)values(@Buy_ID,@Buy_Date,@Imp_Inv_No,@Inv_Type,@SalesMan,@Imp_ID,@Item_Count,@Total,@Tax_Per,@TaxTotal,@Discount_Per,@DiscountTotal,@FinalTotal,@Paid,@UnPaid)"
          .Parameters.Clear()
          .Parameters.AddWithValue("@Buy_ID", SqlDbType.Int).Value = Buy_ID
          .Parameters.AddWithValue("@Buy_Date", SqlDbType.Date).Value = Buy_Date
          .Parameters.AddWithValue("@Imp_Inv_No", SqlDbType.VarChar).Value = Imp_Inv_No
          .Parameters.AddWithValue("@Inv_Type", SqlDbType.VarChar).Value = Inv_Type
          .Parameters.AddWithValue("@SalesMan", SqlDbType.VarChar).Value = SalesMan
          .Parameters.AddWithValue("@Imp_ID", SqlDbType.Int).Value = Imp_ID
          .Parameters.AddWithValue("@Item_Count", SqlDbType.Int).Value = Item_Count
          .Parameters.AddWithValue("@Total", SqlDbType.Decimal).Value = Total
          .Parameters.AddWithValue("@Tax_Per", SqlDbType.Decimal).Value = Tax_Per
          .Parameters.AddWithValue("@TaxTotal", SqlDbType.Decimal).Value = TaxTotal
          .Parameters.AddWithValue("@Discount_Per", SqlDbType.Decimal).Value = Discount_Per
          .Parameters.AddWithValue("@DiscountTotal", SqlDbType.Decimal).Value = DiscountTotal
          .Parameters.AddWithValue("@FinalTotal", SqlDbType.Decimal).Value = FinalTotal
          .Parameters.AddWithValue("@Paid", SqlDbType.Decimal).Value = Paid
          .Parameters.AddWithValue("@UnPaid", SqlDbType.Decimal).Value = UnPaid
      End With
      If Con.State = 1 Then Con.Close()
      Con.Open()
      Cmd.ExecuteNonQuery()
      Con.Close()
      Cmd = Nothing
  End Sub


صورة الخطا





RE: خطا في كود عند الحفظ - ابراهيم ايبو - 17-06-22

السلام عليكم ورحمة الله وبركاته
اخي الكريم
 في الكود الاول والذي ينادي الصب انت تأخذ القيم من مربعات النصوص بدون ان تحول القيمة
كل قيمة رقمية من نوع Double حولها وكذلك من نوع integer  
كود :
       Insert_Buy_Tbl(Convert.ToInt32(Buy_ID.Text), Buy_Date.Value, Imp_Inv_No.Text, Inv_Type.Text, SalesMan.Text, ToInt32(Imp_ID.Text), Item_Count.Text, Convert.ToDouble(Total.Text), Convert.ToDouble(TaxValue.Text), Convert.ToDouble(TaxTotal.Text), DiscountValue.Text, Convert.ToDouble(DiscountTotal.Text, FinalTotal.Text), Convert.ToDouble(Paid.Text), Convert.ToDouble(UnPaid.Text))
هذا في حال الاسماء كلها صحيحة

اما الكود الثاني عند العمل مع الباراميترات لديك طريقتين 
الاولى WithValue هكذا وليس كما كتبت انت بدمج الطريقتين معا
كود :
   Public Sub Insert_Buy_Tbl(ByVal Buy_ID As Int32, ByVal Buy_Date As Date, ByVal Imp_Inv_No As String, ByVal Inv_Type As String, ByVal SalesMan As String, ByVal Imp_ID As Int32, ByVal Item_Count As Int32, ByVal Total As Double, ByVal Tax_Per As Double, ByVal TaxTotal As Double, ByVal Discount_Per As Double, ByVal DiscountTotal As Double, ByVal FinalTotal As Double, ByVal Paid As Double, ByVal UnPaid As Double)
       Dim Cmd As New SqlCommand
       With Cmd
           .Connection = Con
           .CommandType = CommandType.Text
           .CommandText = "Insert Into Buy_Tbl ( Buy_ID,Buy_Date,Imp_Inv_No,Inv_Type,SalesMan,Imp_ID,Item_Count,Total,Tax_Per,TaxTotal,Discount_Per,DiscountTotal,FinalTotal,Paid,UnPaid)values(@Buy_ID,@Buy_Date,@Imp_Inv_No,@Inv_Type,@SalesMan,@Imp_ID,@Item_Count,@Total,@Tax_Per,@TaxTotal,@Discount_Per,@DiscountTotal,@FinalTotal,@Paid,@UnPaid)"
           .Parameters.Clear()
           .Parameters.AddWithValue("@Buy_ID", Buy_ID)
           .Parameters.AddWithValue("@Buy_Date", Buy_Date)
           .Parameters.AddWithValue("@Imp_Inv_No", Imp_Inv_No)
           .Parameters.AddWithValue("@Inv_Type", Inv_Type)
           .Parameters.AddWithValue("@SalesMan", SalesMan)
           .Parameters.AddWithValue("@Imp_ID", Imp_ID)
           .Parameters.AddWithValue("@Item_Count", Item_Count)
           .Parameters.AddWithValue("@Total", Total)
           .Parameters.AddWithValue("@Tax_Per", Tax_Per)
           .Parameters.AddWithValue("@TaxTotal", TaxTotal)
           .Parameters.AddWithValue("@Discount_Per", Discount_Per)
           .Parameters.AddWithValue("@DiscountTotal", DiscountTotal)
           .Parameters.AddWithValue("@FinalTotal", FinalTotal)
           .Parameters.AddWithValue("@Paid", Paid)
           .Parameters.AddWithValue("@UnPaid", UnPaid)
       End With
        If Con.State = 1 Then Con.Close()
       Con.Open()
       Cmd.ExecuteNonQuery()
       Con.Close()
       Cmd = Nothing
   End Sub
او الطريقة الاخرى هكذا
كود :
Public Sub Insert_Buy_Tbl(ByVal Buy_ID As Int32, ByVal Buy_Date As Date, ByVal Imp_Inv_No As String, ByVal Inv_Type As String, ByVal SalesMan As String, ByVal Imp_ID As Int32, ByVal Item_Count As Int32, ByVal Total As Double, ByVal Tax_Per As Double, ByVal TaxTotal As Double, ByVal Discount_Per As Double, ByVal DiscountTotal As Double, ByVal FinalTotal As Double, ByVal Paid As Double, ByVal UnPaid As Double)
       Dim Cmd As New SqlCommand
       With Cmd
           .Connection = Con
           .CommandType = CommandType.Text
           .CommandText = "Insert Into Buy_Tbl ( Buy_ID,Buy_Date,Imp_Inv_No,Inv_Type,SalesMan,Imp_ID,Item_Count,Total,Tax_Per,TaxTotal,Discount_Per,DiscountTotal,FinalTotal,Paid,UnPaid)values(@Buy_ID,@Buy_Date,@Imp_Inv_No,@Inv_Type,@SalesMan,@Imp_ID,@Item_Count,@Total,@Tax_Per,@TaxTotal,@Discount_Per,@DiscountTotal,@FinalTotal,@Paid,@UnPaid)"
           .Parameters.Clear()
           .Parameters.Add(New SqlParameter("@Buy_ID", SqlDbType.Int)).Value = Buy_ID
           .Parameters.Add(New SqlParameter("@Buy_Date", SqlDbType.Date)).Value = Buy_Date
           .Parameters.Add(New SqlParameter("@Imp_Inv_No", SqlDbType.VarChar)).Value = Imp_Inv_No
           .Parameters.Add(New SqlParameter("@Inv_Type", SqlDbType.VarChar)).Value = Inv_Type
           .Parameters.Add(New SqlParameter("@SalesMan", SqlDbType.VarChar)).Value = SalesMan
           .Parameters.Add(New SqlParameter("@Imp_ID", SqlDbType.Int)).Value = Imp_ID
           .Parameters.Add(New SqlParameter("@Item_Count", SqlDbType.Int)).Value = Item_Count
           .Parameters.Add(New SqlParameter("@Total", SqlDbType.Decimal)).Value = Total
           .Parameters.Add(New SqlParameter("@Tax_Per", SqlDbType.Decimal)).Value = Tax_Per
           .Parameters.Add(New SqlParameter("@TaxTotal", SqlDbType.Decimal)).Value = TaxTotal
           .Parameters.Add(New SqlParameter("@Discount_Per", SqlDbType.Decimal)).Value = Discount_Per
           .Parameters.Add(New SqlParameter("@DiscountTotal", SqlDbType.Decimal)).Value = DiscountTotal
           .Parameters.Add(New SqlParameter("@FinalTotal", SqlDbType.Decimal)).Value = FinalTotal
           .Parameters.Add(New SqlParameter("@Paid", SqlDbType.Decimal)).Value = Paid
           .Parameters.Add(New SqlParameter("@UnPaid", SqlDbType.Decimal)).Value = UnPaid
       End With

       If Con.State = 1 Then Con.Close()
       Con.Open()
       Cmd.ExecuteNonQuery()
       Con.Close()
       Cmd = Nothing
   End Sub
End Class



RE: خطا في كود عند الحفظ - حيدر الشرهاني - 18-06-22

شكرا اخي الكريم الكود الاول طبقت مثل ما تفضلت ونحلت المشكلة
لكن الان ظهر خطا ثاني
صورة الخطأ

كود :
 Public Sub Insert_Imp_Move(ByVal Move_Date As Date, ByVal Imp_ID As Int32, ByVal Move_Type As String, ByVal Move_Total As Double, ByVal Paid As Double, ByVal UnPaid As Double, ByVal SalesMan As String)
       Dim Cmd As New SqlCommand
       With Cmd
           .Connection = Con
           .CommandType = CommandType.Text
           .CommandText = "Insert Into Imp_Move ( Move_Date,Imp_ID,Move_Type,Move_Total,Paid,UnPaid,SalesMan)values(@Move_Date,@Imp_ID,@Move_Type,@Move_Total,@Paid,@UnPaid,@SalesMan)"
           .Parameters.Clear()

           .Parameters.AddWithValue("@Move_Date", SqlDbType.Date).Value = Move_Date
           .Parameters.AddWithValue("@Imp_ID", SqlDbType.Int).Value = Imp_ID
           .Parameters.AddWithValue("@Move_Type", SqlDbType.VarChar).Value = Move_Type
           .Parameters.AddWithValue("@Move_Total", SqlDbType.Decimal).Value = Move_Total
           .Parameters.AddWithValue("@Paid", SqlDbType.Decimal).Value = Paid
           .Parameters.AddWithValue("@UnPaid", SqlDbType.Decimal).Value = UnPaid
           .Parameters.AddWithValue("@SalesMan", SqlDbType.VarChar).Value = SalesMan
       End With
       If Con.State = 1 Then Con.Close()
       Con.Open()
       Cmd.ExecuteNonQuery()
       Con.Close()
       MsgBox("تم إضافة السجل بنجاح", MsgBoxStyle.Information, "حفظ")
       Cmd = Nothing
   End Sub