ADO的严重紧急问题,求助各位大虾!!特急,送多分

w_ggss 2002-04-24 12:18:04
给客户作了一个程序:
引用 Activex Data Object 2.0 libary
然后定义
Public DConnection As New ADODB.Connection '当前的数据连接
Public TmpRecordset As New ADODB.Recordset ,记录集
然后连接数据库
Private Sub Form_Load()
Dim a As String
a = "dsn=Finance;uid=Finance;pwd=finance"
DConnection.Open a
End Sub
//以上没有问题
当在按钮事件里执行下列程序的时候有问题了
Set TmpRecordset = DConnection.Execute("select isnull(sum(session_debit_money),0) from t_ta where account_num = 3 and session = '200201' and c_subject ='405001006'", 1, adCmdText)
If TmpRecordset.EOF Then
TmpRecordset.MoveFirst
MsgBox CStr(TmpRecordset.Fields(0)), , "TmpRecordset.Fields(0)1"
ResultString(1) = TmpRecordset.Fields(0)
end if
这时候,本来这个值在数据库理是1200 但取出来的却是12 ,我把库里记录改称 12000或者21000什么的后面有0的数字,取出来的结果都是把零去掉后的结果。如果没有0为结尾那么弹出来对话框的结果就是队的。而且奇怪的是,在我们公司这里测试是对的,就是不会把零去掉,但到了客户那里,连他们的数据库(sybase system 11,我们的数据库是一样的,但设置不太一样而已)就出现上面问题,因为这是作财务报表的,凡是后面带零的就去掉,客户反映,‘你们的报表系统怎么都是少10,100,1000倍的呢?“我现在也不知道怎么弄了,我对vb也不太熟悉,请各位大虾给于指点,我不胜感激!!
...全文
32 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
songyangk 2002-04-24
  • 打赏
  • 举报
回复
这应该不是VB的问题,以前我在使用SQLServer7的时候有过这种现象,尤其是当使用Union查询,且Union部分有Sum或其它合计算法时,经常会有多100倍或10000或0.01倍等数字差,原因不明。后来将求合计前,合计后的数值都再Convert(number(12,2),....)一次,这样对于简单的还可以解决,复杂一点的干脆就解决不了。
不过我说的是SqlServer的错误,不知道Sybase是不是也和他一样有同样的错误。必竟两个产品出自同一版本。
combread 2002-04-24
  • 打赏
  • 举报
回复
MsgBox CStr(TmpRecordset.Fields(0)), , "TmpRecordset.Fields(0)1"
你把上面代码中的CStr去掉,再试试
daryl715 2002-04-24
  • 打赏
  • 举报
回复
好长
fuxc 2002-04-24
  • 打赏
  • 举报
回复
关注!
Tsou 2002-04-24
  • 打赏
  • 举报
回复
检查字段“session_debit_money”的类型,并且检查TmpRecordset.Fields(0)
.Type的值与字段类型是否相同

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧