2014-12-04 36 views
-1

任何幫助,請爲什麼mysql的值變爲零它有double類型後,在MySQL擁有價值0.50成爲0.00MySQL的值成爲0(零)

Sub absennaik() 
    Dim u As Double 
    Dim i As Integer = 0 
    For i = 0 To dgv.Rows.Count - 1 
     inputabsen = Val(dgv.Rows(i).Cells(4).Value) 
     If inputabsen <= absenbagus Then 
      u = 0 
     ElseIf inputabsen >= absenburuk Then 
      u = 1 
     Else 
      u = (inputabsen - absenburuk)/(absenburuk - absenbagus) 
     End If 
     Dim cmd = New Odbc.OdbcCommand("select * from fuzzy where fkode='" & i & "'", conn) 
     Dim rd = cmd.ExecuteReader 
     rd.Read() 
     If Not rd.HasRows Then 
      Dim sqltambah As String = "insert into fuzzy(fkode,faktifbaik) values " & "('" & i & "','" & u & "')" 
      Dim cmd1 = New Odbc.OdbcCommand(sqltambah, conn) 
      cmd1.ExecuteNonQuery() 
     Else 
      Dim sqledit As String = "Update fuzzy set " & "faktifbaik ='" & u & "' where fkode = '" & i & "'" 
      Dim cmd1 = New Odbc.OdbcCommand(sqledit, conn) 
      cmd1.ExecuteNonQuery() 
     End If 
    NextEnd Sub` 
+0

不確定,但是您將值作爲字符串發送到數據庫,這看起來很奇怪 - 是使用逗號作爲小數分隔符嘗試解決語言設置嗎?我猜想MySQL不知道如何將'0,5'解析爲雙精度值,並且出現0(可能停在逗號處)。如果是這種情況,使用參數化命令可能會起作用(通常情況會更好),但使用句點作爲分隔符格式化double也可能起作用。 – Mark 2014-12-04 16:27:41

+0

hellow mark yes你真的我改變控制面板區域昏迷及其work.thanks求助 – 2014-12-08 14:18:13

回答

0

不是我不知道,這將對於評論來說太大了,這就是爲什麼我將它作爲答案提交的原因,儘管其中一些實際上可能有所幫助。

您的問題很薄弱,沒有足夠的信息讓任何人真正發現足夠的信息來幫助您。它是否被設置爲零,因爲inputabsen <= absenbagus並導致變量變爲0?

你至少要寫一個實際的問題,並提供信息,數據庫模式信息,跟蹤,調試語句等任何事實上會幫助沒有水晶球的人回答它。

有些oservations,你使用MySQL和VB.NET,有沒有什麼理由不使用the MySQL .NET provider這實際上是非常好的,專門設計來密切知道MySQL而不是通用的ODBC提供者。

我知道你只是在這裏處理整數,但參數,而不是直接插入SQL是非常重要的 - 請谷歌搜索SQL Injection Attack

你踩雖然你的代碼連接,以找出是否是應用程序邏輯調試器而不是導致問題的數據庫邏輯?

通過直接對數據庫運行來檢查生成的SQL。

是你更新的列的數據類型是一個十進制數,什麼是精度?

它是一種文化問題(x.xx vs x,xx)?

我在編程時猜測你的新東西,我試圖提供有用的建議,以便你可以進一步幫助自己 - 我通過閱讀源代碼來得出結論,例如"Update fuzzy set " & "faktifbaik ='" &例如 - 這是一個完全冗餘的字符串並不是一個有經驗的人會犯的錯誤,我真的沒有打算冒犯你或以任何方式粗魯,只是提供明確的建議,告訴你如何前進並希望解決問題。

+0

是的感謝您的評論..關於點和昏迷我改變它在控制面板,地區改變昏迷與點和它的明確感謝您的建議我不知道如何更新專業MySQL任何消聲導師? – 2014-12-08 14:22:32