2016-07-25 48 views
0

我想獲取數量數據並將其轉換爲十進制數。在QODBC中獲取數據並將其轉換爲十進制數

我遇到了一個問題,即有十進制數的數值正在四捨五入。例如:我需要的金額是amount = 123.5,但我得到的價值是124

If Me.chkEnterBill.Checked = True Then 
     Dim amount As Decimal 
     amount = CDec(Val("amount")) 
     strSelect = "SELECT Txnnumber, payeeentityreffullname, txndate, bankaccountreffullname" _ 
     & ",amount, refnumber, appliedtotxnrefnumber, appliedtotxntxndate, appliedtotxnamount, memo from billpaymentcheckline WHERE" _ 
     & " refnumber BETWEEN '" & CInt(Me.txtRefFR.Text) & "' AND '" & CInt(Me.txtRefTO.Text) & "' AND" _ 
     & " bankaccountreffullname='" & Me.lblBankName.Text & "'ORDER BY refnumber" 

     Try 

       Dim conChk As New Odbc.OdbcConnection(My.Settings.strConn) 
       conChk.Open() 

       Dim cmdChk As New Odbc.OdbcCommand(strSelect, conChk) 
       cmdChk.CommandType = CommandType.Text 

       Dim daChk As New Odbc.OdbcDataAdapter(cmdChk) 
       daChk.Fill(dsCVI, "tblvoucheritem") 


       With dgvCV 
        .RowsDefaultCellStyle.BackColor = Color.White 
        .AlternatingRowsDefaultCellStyle.BackColor = Color.DeepSkyBlue 
        .DataSource = dsCVI.Tables("tblvoucheritem") 
        .ReadOnly = True 
       End With 

       daChk.Dispose() 
       cmdChk.Dispose() 
       conChk.Close() 
       Me.rbCheck.Enabled = True 
       Me.rbCV.Enabled = True 

     Catch ex As Exception 
       MessageBox.Show(ex.Message) 
       Me.rbCheck.Enabled = False 
       Me.rbCV.Enabled = False 

     Finally 

       End Try 
       Me.stpLoadBar.Value = 100 

回答

0

在數據庫檢查列的數據類型(以及值)在表billpaymentcheckline。數據類型不是小數,或者數值是四捨五入的。

另請檢查標記中與「金額」對應的網格視圖列。

編輯:

及代碼:dsCVI。這是一個數據集?基本上,您將存儲從QODBC數據庫中檢索的數據。看看是否有涉及DataTable ...如果是這樣的DataTypes設置該表(根據您的意見,這是你的問題,因爲你的DataSet中的數據類型不匹配DB中的數據)

+0

如何我會解決這類問題嗎? – Maine

+0

我的數據庫是QODBC – Maine

+0

@Maine你有沒有檢查你的數據庫?這是我要解決問題的第一件事情。如果問題與數據類型,則模式需要改變。通常由DBA完成。讓我知道你發現了什麼。 – objectNotFound

相關問題