设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 4077|回复: 10
打印 上一主题 下一主题

[ADO/DAO] 请大家来帮帮忙:利用recordset.find更新记录时出现的问题

[复制链接]
跳转到指定楼层
1#
发表于 2008-12-1 20:04:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
小弟我 刚学ACCESS不久,对代码也不算了解,写了如下代码,总是不理想,请各位高手帮帮忙, 谢谢啦
Dim rst1 As ADODB.Recordset
Dim rst2 As ADODB.Recordset
Set rst1 = New ADODB.Recordset
Set rst2 = New ADODB.Recordset
Dim str1, str2 As String

str1 = "select tblorder.partinfoID,sum(tblorder.partsum) as totalsum from tblorder "
str1 = str1 + "group by tblorder.partinfoID"
With rst1
   .ActiveConnection = CurrentProject.Connection
   .CursorType = adOpenForwardOnly
   .LockType = adLockReadOnly
   .Open str1, options:=adCmdText
End With
  
str2 = "select totalparts.partinfoID,totalparts.partsum from totalparts "
With rst2
   .ActiveConnection = CurrentProject.Connection
   .CursorType = adOpenDynamic
   .LockType = adLockPessimistic
   .Open str2, options:=adCmdText
End With
Do Until rst1.EOF
   rst2.Find "[partinfoID]=" & rst1!partinfoID
   If rst2.EOF Then
      With rst2
         .AddNew
         !partinfoID = rst1!partinfoID
         !partsum = rst1!totalsum
         .Update
      End With
   Else
      rst2!partsum = rst1!totalsum
   End If
      
   rst1.MoveNext
Loop
   
rst1.Close
rst2.Close
Set rst1 = Nothing
Set rst2 = Nothing

此代码作用是:将tblorder的记录赋值给rst1;把tbltotalparts的记录赋值给rst2;
                        然后验证rst2与rst1是否含有"partinfoID"字段相同的记录;
                        如果rst2中没有,则新添加记录,并且给相应字段赋值;
                        如果rst2中存在记录,则直接给partsum字段赋值。
此代码作为过程使用,第一此更新rst2时,不存在问题,可是再次点击该命令时:
rst2中的记录数与rst1中的记录数量不同(rst2中记录有重复的,但只是个别现象),
请各位大大们帮忙!
谢谢各位啦!

PS:还请各位帮我想个更好的办法

[ 本帖最后由 effytears 于 2008-12-1 22:12 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2008-12-1 20:10:09 | 只看该作者
请更改标题

点击这里给我发消息

3#
发表于 2008-12-1 20:11:42 | 只看该作者
因为没有数据,没有办法试运行
不过会不会因为 find是否从当前位置往下搜索导致?而不是从头搜索呢
4#
发表于 2008-12-1 20:17:54 | 只看该作者
两次打开的好像都是rst1
5#
发表于 2008-12-1 22:05:34 | 只看该作者
楼上各位说得对,str2误为str1,游标没有movefirst

可以用查询完成
6#
 楼主| 发表于 2008-12-1 22:06:07 | 只看该作者
谢谢Henry和tmtony 你们回复的真快

原程序是我在单位编写的 上面的代码是我回家后重新写的 可能会有些错误

明天我把程序带回来 还请两位帮忙看看 谢谢

PS:我买过tmtony的书 呵呵 您的书不错 给我不少启发
7#
发表于 2008-12-1 22:25:24 | 只看该作者
Find的参数有好几个,请尽量写全。
8#
发表于 2008-12-1 22:27:31 | 只看该作者
原帖由 Henry D. Sy 于 2008-12-1 22:25 发表
Find的参数有好几个,请尽量写全。

要不用双循环,来个历遍全球。
9#
 楼主| 发表于 2008-12-1 22:31:45 | 只看该作者
呵呵 感谢Henry D.Sy兄
理论上要求str2是不允许存在重复partinfoID的

明天我把源代码带来 希望Henry D.Sy兄再帮忙

点击这里给我发消息

10#
发表于 2008-12-2 01:04:52 | 只看该作者
有Henry D.Sy兄, 良师常伴左右:)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-6 00:38 , Processed in 0.099546 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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