设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2467|回复: 3
打印 上一主题 下一主题

[查询] RecordCount 的结果不正确

[复制链接]
跳转到指定楼层
1#
发表于 2016-11-10 16:35:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 lms008008 于 2016-11-10 16:44 编辑

代码如下: 'update the tmpALRpt3_AftUpdData special field.
Sub frmAftUpdDatSpeFldVal(ByVal intTotAL As Integer, ByVal intNewAL As Integer)
    Dim dbsDB As Database, rsAftUpdRecord As Recordset
    Dim strNetCapAmt, strRevUnAmo, strCatUpAmt, strSql As String
    Dim intMob, intRows, intTotRow As Integer
    Set dbsDB = CurrentDb
  1)  Set rsAftUpdRecord = dbsDB.OpenRecordset("tmpALRpt3_AftUpdData", 1)

  ‘这时RecordCount的结果时正确的’
2):Set rsAftUpdRecord = dbsDB.OpenRecordset("select * from  tmpALRpt3_AftUpdData")
'当时这种情况时,得到的RecordCount 结果变成1了,是错误的。
    For intRows = 1 To rsAftUpdRecord.RecordCount
        'begin to update the specail field
        intMob = intRows
        If intMob <= intNewAL Then
            strNetCapAmt = rsAftUpdRecord.Fields("NetCapAmt")
            strNetCapAmt = forSepFldVal(CDbl(strNetCapAmt), 2, "Normal")
            'field2
            strRevUnAmo = rsAftUpdRecord.Fields("RevUnAmoAmt")
            strRevUnAmo = forSepFldVal(CDbl(strRevUnAmo), 2, "Normal")
            
            strCatUpAmt = rsAftUpdRecord.Fields("catchUpAmt")
            strCatUpAmt = forSepFldVal(CDbl(strCatUpAmt), 2, "CatUp")
            
            strSql = "update tmpALRpt3_AftUpdData Set NetCapAmt='" & strNetCapAmt & "',RevUnAmoAmt ='" & strRevUnAmo & "', " & _
                      " catchUpAmt='" & strCatUpAmt & "'  where RevMth=" & intMob & " "
        Else
            strNetCapAmt = rsAftUpdRecord.Fields("NetCapAmt")
            strNetCapAmt = forSepFldVal(CDbl(strNetCapAmt), 2, "Normal")
            
            strCatUpAmt = rsAftUpdRecord.Fields("catchUpAmt")
            strCatUpAmt = forSepFldVal(CDbl(strCatUpAmt), 2, "CatUp")
            strSql = "update tmpALRpt3_AftUpdData Set NetCapAmt='" & strNetCapAmt & "', " & _
                      " catchUpAmt='" & strCatUpAmt & "'  where RevMth=" & intMob & " "
        End If
        CurrentDb.Execute (strSql)
        rsAftUpdRecord.MoveNext
    Next
   
    Set rsAftUpdRecord = Nothing
    Set dbsDB = Nothing
   
End Sub


请问大神:
1)  Set rsAftUpdRecord = dbsDB.OpenRecordset("tmpALRpt3_AftUpdData", 1)
  ‘这时RecordCount的结果时正确的’
2):Set rsAftUpdRecord = dbsDB.OpenRecordset("select * from  tmpALRpt3_AftUpdData")
'当时这种情况时,得到的RecordCount 结果变成1了,是错误的。
这两种用法有哪些区别呢? 用的是ACCESS 2007
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
 楼主| 发表于 2016-11-10 16:37:48 | 只看该作者
在同一个项目里面的其它方法,用Set rsAftUpdRecord = dbsDB.OpenRecordset("select * from  tmpALRpt3_AftUpdData")
这样的方法,得到的结果又是错误的,不知道是怎样的原理,求大神帮我分析分析!
3#
发表于 2016-11-10 16:45:52 | 只看该作者
试试
rsAftUpdRecord.movelast
rsAftUpdRecord.movefirst
msgbox rsAftUpdRecord.recordcount
4#
 楼主| 发表于 2016-11-10 17:16:56 | 只看该作者
Henry D. Sy 发表于 2016-11-10 16:45
试试
rsAftUpdRecord.movelast
rsAftUpdRecord.movefirst

得到的结果是正确的,谢谢版主的答复。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-1 19:22 , Processed in 0.133736 second(s), 27 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表