2016-07-25 65 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

相关问题