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

نسخة كاملة : رسالة خطأ بعد عملية الاضافة
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
عند الضعط على زر اضافة يتم اضافة السجل و بعدها تظهر رسالة . Invalid conversion by the string in type double
 ما السبب ؟؟
 
الحقول بالقاعدة من نوع number

وهذا كود :

كود :
Imports System.Data.OleDb
Public Class ProFrm
   Private Sub DataGridView1_CellContentClick(sender As Object, e As DataGridViewCellEventArgs)

   End Sub



   Private Sub ProFrm_Load(sender As Object, e As EventArgs) Handles MyBase.Load

   End Sub


   Private Sub Calc()
       If txtPris.Text = "" Then Exit Sub
       If cmoms.Text = "" Then Exit Sub
       Dim x As Double
       Dim y As Double
       Dim z As Double

       y = cmoms.SelectedItem.ToString

       x = CDbl(txtPris.Text)
       z = x * y / 100
       txtmoms.Text = z
       txttotalt.Text = CDbl(x + z)

   End Sub







   Private Sub btnsave_Click(sender As Object, e As EventArgs) Handles btnsave.Click
       Try
           cmd = New OleDbCommand("Insert Into TBL_Products ( Pro_Code, Pro_Name, Pro_Price, Pro_Moms, Pro_Totalt) values
         (@Pro_Code, @Pro_Name, @Pro_Price, @Pro_Moms, @Pro_Totalt)", con)

           cmd.Parameters.Add(New OleDbParameter("@Pro_Code", OleDbType.Integer)).Value = txtcode.Text
           cmd.Parameters.Add(New OleDbParameter("@Pro_Name", OleDbType.VarChar)).Value = txtDes.Text
           cmd.Parameters.Add(New OleDbParameter("@Pro_Price", OleDbType.Double)).Value = txtPris.Text
           cmd.Parameters.Add(New OleDbParameter("@Pro_Moms", OleDbType.Double)).Value = txtmoms.Text
           cmd.Parameters.Add(New OleDbParameter("@Pro_Totalt", OleDbType.Double)).Value = txttotalt.Text

           con.Open()
           cmd.ExecuteNonQuery()
           MsgBox("Done!")

           txtcode.Text = " "
           txtDes.Text = " "
           txtPris.Text = " "
           txtmoms.Text = " "
           txttotalt.Text = " "


       Catch ex As Exception
           MsgBox(ex.Message)
       Finally
           con.Close()
       End Try



   End Sub

   Private Sub ToolStripButton7_Click(sender As Object, e As EventArgs) Handles ToolStripButton7.Click
       Me.Close()

   End Sub

   Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick


   End Sub

   Private Sub txttotalt_TextChanged(sender As Object, e As EventArgs) Handles txttotalt.TextChanged

       Calc()
   End Sub

   Private Sub txtPris_TextChanged(sender As Object, e As EventArgs) Handles txtPris.TextChanged

   End Sub

   Private Sub txtmoms_TextChanged(sender As Object, e As EventArgs) Handles txtmoms.TextChanged

   End Sub

   Private Sub cmoms_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmoms.SelectedIndexChanged

       Calc()
   End Sub
End Class
جرب الكود التالي 
كود :
 Try
          cmd = New OleDbCommand("Insert Into TBL_Products ( Pro_Code, Pro_Name, Pro_Price, Pro_Moms, Pro_Totalt) values
        (@Pro_Code, @Pro_Name, @Pro_Price, @Pro_Moms, @Pro_Totalt)", con)

          cmd.Parameters.Add(New OleDbParameter("@Pro_Code", OleDbType.Integer)).Value = txtcode.Text
          cmd.Parameters.Add(New OleDbParameter("@Pro_Name", OleDbType.VarChar)).Value = txtDes.Text
                      cmd.Parameters.Add(New OleDbParameter("@Pro_Price", OleDbType.Double)).Value = CDbl(txtpris.Text)
            cmd.Parameters.Add(New OleDbParameter("@Pro_Moms", OleDbType.Double)).Value = CDbl(txtmoms.Text)
            cmd.Parameters.Add(New OleDbParameter("@Pro_Totalt", OleDbType.Double)).Value = CDbl(txttotalt.Text)


          con.Open()
          cmd.ExecuteNonQuery()
          MsgBox("Done!")

          txtcode.Text = " "
          txtDes.Text = " "
          txtPris.Text = " "
          txtmoms.Text = " "
          txttotalt.Text = " "


      Catch ex As Exception
          MsgBox(ex.Message)
      Finally
          con.Close()
      End Try
اخي نفس المشكلة و لقد قمت بارفاق قاعدة البيانات للفحص
[attachment=20872]
جرب الكود التالي
وهو تحويل قيم الحقول النصية الى Decimal
كود :
Try
         cmd = New OleDbCommand("Insert Into TBL_Products ( Pro_Code, Pro_Name, Pro_Price, Pro_Moms, Pro_Totalt) values
       (@Pro_Code, @Pro_Name, @Pro_Price, @Pro_Moms, @Pro_Totalt)", con)

         cmd.Parameters.Add(New OleDbParameter("@Pro_Code", OleDbType.Integer)).Value = CInt(txtcode.Text)
         cmd.Parameters.Add(New OleDbParameter("@Pro_Name", OleDbType.VarChar)).Value = txtDes.Text
                     cmd.Parameters.Add(New OleDbParameter("@Pro_Price", OleDbType.Double)).Value = CDec(txtpris.Text)
           cmd.Parameters.Add(New OleDbParameter("@Pro_Moms", OleDbType.Double)).Value = CDec(txtmoms.Text)
           cmd.Parameters.Add(New OleDbParameter("@Pro_Totalt", OleDbType.Double)).Value = CDec(txttotalt.Text)


         con.Open()
         cmd.ExecuteNonQuery()
         MsgBox("Done!")

         txtcode.Text = " "
         txtDes.Text = " "
         txtPris.Text = " "
         txtmoms.Text = " "
         txttotalt.Text = " "


     Catch ex As Exception
         MsgBox(ex.Message)
     Finally
         con.Close()
     End Try
جرب هذه اخي مع تغير مسمى الادوات 

PHP كود :
Public Function add_TBL_Products() As Boolean
Dim Cmdf 
As New OleDbCommand
   Dim CommandTextf 
As String
        Dim CommandTexts 
As String
 Dim dtf 
As New DataTable
   CommandTextf 
"insert into TBL_Products ( "
 
  CommandTexts " values( "
 
  CommandTextf &= "Pro_Code"
 
  CommandTexts &= "@Pro_Code "
 
  CommandTextf &= ",Pro_Name"
 
  CommandTexts &= ",@Pro_Name "
 
  CommandTextf &= ",Pro_Price"
 
  CommandTexts &= ",@Pro_Price "
 
  CommandTextf &= ",Pro_Moms"
 
  CommandTexts &= ",@Pro_Moms "
 
  CommandTextf &= ",Pro_Totalt"
 
  CommandTexts &= ",@Pro_Totalt "
 
  CommandTextf &= " ) "
 
  CommandTexts &=" ) "

With Cmdf
.Connection con
.CommandType CommandType.Text
  
'  .CommandText = "insert into TBL_Products  (Pro_Code,Pro_Name,Pro_Price,Pro_Moms,Pro_Totalt) values(@Pro_Code ,@Pro_Name ,@Pro_Price ,@Pro_Moms ,@Pro_Totalt )"
.CommandText = CommandTextf & CommandTexts 
.Parameters.Clear()
  With Cmdf.Parameters
.AddWithValue("@", AdminID).DbType = DbType.Int64
If TXT_Pro_Code.Text.Trim= "" Then
 .AddWithValue("@Pro_Code",  DBNull.Value).DbType = DbType.Int32
Else
 .AddWithValue("@Pro_Code",TXT_Pro_Code.Text).DbType =  DbType.Int32
 End If
If TXT_Pro_Name.Text.Trim= "" Then
 .AddWithValue("@Pro_Name",  DBNull.Value).DbType = DbType.String
Else
 .AddWithValue("@Pro_Name",TXT_Pro_Name.Text).DbType =  DbType.String
 End If
If TXT_Pro_Price.Text.Trim= "" Then
 .AddWithValue("@Pro_Price",  DBNull.Value).DbType = DbType.Decimal
Else
 .AddWithValue("@Pro_Price",TXT_Pro_Price.Text).DbType =  DbType.Decimal
 End If
If TXT_Pro_Moms.Text.Trim= "" Then
 .AddWithValue("@Pro_Moms",  DBNull.Value).DbType = DbType.Decimal
Else
 .AddWithValue("@Pro_Moms",TXT_Pro_Moms.Text).DbType =  DbType.Decimal
 End If
If TXT_Pro_Totalt.Text.Trim= "" Then
 .AddWithValue("@Pro_Totalt",  DBNull.Value).DbType = DbType.Decimal
Else
 .AddWithValue("@Pro_Totalt",TXT_Pro_Totalt.Text).DbType =  DbType.Decimal
 End If
End With
End With
If con.State = ConnectionState.Open Then con.Close()
con.Open()
Dim Affected As Int32 = cmdf.ExecuteNonQuery
con.Close()
 If Affected = 1 Then
'
هذا يعني نجاح العملية
 
Return True
 End 
If
Return 
False
 End 
Function 
اخي شكرا لك لكن لم افهم شيئ من الكود !! اسماء الادوات موجودين هنا بالصورة هل يمكن تعديل الكود من بعد اذنك !
جرب الكود التالي 
وعلى فكرة هو يعمل جيدا وتم تجربته

كود :
Try
        cmd = New OleDbCommand("Insert Into TBL_Products ( Pro_Code, Pro_Name, Pro_Price, Pro_Moms, Pro_Totalt) values
      (@Pro_Code, @Pro_Name, @Pro_Price, @Pro_Moms, @Pro_Totalt)", con)

        cmd.Parameters.Add(New OleDbParameter("@Pro_Code", OleDbType.Integer)).Value = (txtcode.Text)
        cmd.Parameters.Add(New OleDbParameter("@Pro_Name", OleDbType.VarChar)).Value = txtDes.Text
                   cmd.Parameters.Add(New OleDbParameter("@Pro_Price", OleDbType.Currency)).Value = txtPris.Text
            cmd.Parameters.Add(New OleDbParameter("@Pro_Moms", OleDbType.Currency)).Value = txtmoms.Text
            cmd.Parameters.Add(New OleDbParameter("@Pro_Totalt", OleDbType.Currency)).Value = txttotalt.Text

        con.Open()
        cmd.ExecuteNonQuery()
        MsgBox("Done!")

        txtcode.Text = " "
        txtDes.Text = " "
        txtPris.Text = " "
        txtmoms.Text = " "
        txttotalt.Text = " "


    Catch ex As Exception
        MsgBox(ex.Message)
    Finally
        con.Close()
    End Try
اخي نفس المشكلة و هي لم تكن موجودة
ضهرت من بعد كود حساب المجموع الاجمالي
كود :
 Private Sub Calc()
       If txtPris.Text = "" Then Exit Sub
       If cmoms.Text = "" Then Exit Sub
       Dim x As Double
       Dim y As Double
       Dim z As Double

       y = cmoms.SelectedItem.ToString

       x = CDbl(txtPris.Text)
       z = x * y / 100
       txtmoms.Text = z
       txttotalt.Text = CDbl(x + z)

   End Sub
لو سمحت أرفع المشروع الذي تعمل عليه للتعديل عليه مباشرة
(16-02-19, 01:21 AM)princelovelorn كتب : [ -> ]لو سمحت أرفع المشروع الذي تعمل عليه للتعديل عليه مباشرة
هذا الملف مع صور لشرحه لانه باللغة الانكليزية و السويدية
[attachment=20873]
[attachment=20874]
[attachment=20875]
الصفحات : 1 2