获取QODBC中的数据并将其转换为十进制数

时间:2016-07-25 02:45:02

标签: mysql vb.net

我想获取金额的数据并将其转换为十进制数。

我遇到一个问题,即带有十进制数的金额值正在四舍五入。示例:我需要的金额为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

1 个答案:

答案 0 :(得分:0)

在您的数据库中,检查表 billpaymentcheckline 中列金额的数据类型(和值)。数据类型不是十进制或值是四舍五入的。

同时检查" amount"对应的网格视图列。在你的标记中。

修改

和代码:dsCVI。那是一个DataSet吗?基本上,您存储从QODBC数据库中检索的数据。查看是否涉及DataTable ...如果是这样,那个表上设置的数据类型。(根据您的评论,这似乎是您的问题,因为您的DataSet中的数据类型与数据库中的数据不匹配)