我想获取金额的数据并将其转换为十进制数。
我遇到一个问题,即带有十进制数的金额值正在四舍五入。示例:我需要的金额为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 :(得分:0)
在您的数据库中,检查表 billpaymentcheckline 中列金额的数据类型(和值)。数据类型不是十进制或值是四舍五入的。
同时检查" amount"对应的网格视图列。在你的标记中。
修改强>
和代码:dsCVI。那是一个DataSet吗?基本上,您存储从QODBC数据库中检索的数据。查看是否涉及DataTable ...如果是这样,那个表上设置的数据类型。(根据您的评论,这似乎是您的问题,因为您的DataSet中的数据类型与数据库中的数据不匹配)