VB是否不支持DECIMAL类型的数据啊,我用select语句从数据库中查找出来的数据跟数据库中的不一样例如:2100.00          查询出的结果为21
      3000.00          查询出的结果为3
      164.60           查询出的结果为164.6怎么会这样啊,有哪位大侠碰到过同样的问题啊,帮帮忙啊本人在线等

解决方案 »

  1.   

    忘了说了,我所查的数据库是sybase数据库
      

  2.   

    是不是你定义变量类型不对
    定义Double变量来存储从数据库中取到的值
      

  3.   

    不就是去掉了尾部的0吗?其实在查询出来之后显示成什么,关键看你程序是怎么格式化的。如:
    ' 用户自定义的格式。
    MyStr = Format(5459.4, "##,##0。00") ' 返回 "5,459.40"。
    MyStr = Format(334。9, "###0。00") ' 返回 "334.90"。MyStr = Format(5, "0。00%") ' 返回 "500.00%"。====================
    免费的学习交流网站,欢迎大家访问!
    http://www.j2soft.cn/
      

  4.   

    不是呀,我查询后用断点测试,在rst!yye中就是少0了,根本还没存到变量中啊
      

  5.   

    回复cuizm(射天狼) ( )问题是我查出来如果是3,但我不知道它后面是几个零呀,有可能是30000,也有可能是3000,它不是固定的呀,所以可能用你的方法不行吧
      

  6.   

    不用rst!yye
    用 rst.Fields("yye").Value 呢?
      

  7.   

    你升级一下SYBASE数据库的ODBC驱动看看吧
      

  8.   

    你在定义数据库字段时,用的DECIMAL定义成几位小数?
      

  9.   

    我这有一段向串口发送数据的源代码.你看看吧!
    '发送数据
    Private Sub cmdmanual_Click()
        Dim buf() As Byte
        Dim data(2000) As Byte
        Dim hex As Byte
        Dim i As Integer
        Dim j As Integer
        Dim high As Boolean
        If curConnectID = 0 Then Exit Sub
        If chkSendHex.Value = 1 Then    '十六进制发送
            buf = StrConv(txtsend.Text, vbFromUnicode)
            j = 0
            high = True
            For i = LBound(buf) To UBound(buf)
                If buf(i) >= Asc("0") And buf(i) <= Asc("9") Then
                    buf(i) = buf(i) - Asc("0")
                ElseIf buf(i) >= Asc("a") And buf(i) <= Asc("f") Then
                    buf(i) = buf(i) - Asc("a") + 10
                ElseIf buf(i) >= Asc("A") And buf(i) <= Asc("F") Then
                    buf(i) = buf(i) - Asc("A") + 10
                Else
                    GoTo p
                End If
                If high Then
                    hex = buf(i) * 16
                    high = False
                Else
                    hex = hex + buf(i)
                    high = True
                    data(j) = hex
                    j = j + 1
                End If
    p:      Next i
            If Not high Then
                MsgBox "十六进制发送时,长度必须为偶数"
                Exit Sub
            End If
            EDSock.SendToCOM curConnectID, 1, data, j
            txtstate.Text = txtstate.Text & "发送成功   " & Time & vbCrLf
            lblt.Caption = lblt.Caption + 1
        Else            '直接发送
            buf = StrConv(txtsend.Text, vbFromUnicode)
            EDSock.SendToCOM curConnectID, 1, buf, UBound(buf) - LBound(buf) + 1
            txtstate.Text = txtstate.Text & "发送成功   " & Time & vbCrLf
            lblt.Caption = lblt.Caption + 1
        End If
    End Sub