设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[窗体] 下面是一段在主窗体上更新子窗体数据值的方法,但更新不对,错在什么地方?

[复制链接]

点击这里给我发消息

跳转到指定楼层
1#
发表于 2011-5-4 20:15:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面是一段在主窗体上更新子窗体数据值的方法,但更新的全部的值均为子窗当前焦点行的条件的值,这是为什么?错在什么地方?
  1.     Dim i0 As Long
  2.     Dim RS0 As Recordset
  3.     Set RS0 = Me.C_CB_001产品工艺.Form.RecordsetClone
  4.     RS0.MoveFirst
  5.     For i0 = 1 To RS0.RecordCount
  6.         RS0.Edit
  7.         RS0("总色数") = DLookup("总色数", "B_CB_001产品部件_印刷_正反面合并", "[Forms]![C_CB_001产品主表]![C_CB_001产品工艺]![对应部件ID] & [Forms]![C_CB_001产品主表]![C_CB_001产品工艺]![制作面数] = [产品部件ID] &  [制作面]")
  8.         RS0.Update
  9.         RS0.MoveNext
  10.     Next i0
复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅

点击这里给我发消息

2#
发表于 2011-5-5 09:24:14 | 只看该作者
dao记录集打开时,RecordCount属性是0或1,须移到最后一条后,才能获得真实记录数
例中应在 RS0.MoveFirst 前加一句:
RS0.MoveLast

点击这里给我发消息

3#
 楼主| 发表于 2011-5-5 11:16:58 | 只看该作者
我将RS0.MoveLast加上后,总记录数是对的了,但RS0.MoveNext好像没有起作用,比如我子表有3条记录,点到第一条记录上,返回的是1,1,1,点到第二条记录上,返回的是2,2,2,请问这是为什么,是我子表什么地方设置不对?

点击这里给我发消息

4#
发表于 2011-5-5 13:02:05 | 只看该作者
原来还引用了窗体控件值,把
Set RS0 = Me.C_CB_001产品工艺.Form.RecordsetClone
改为:
Set RS0 = Me.C_CB_001产品工艺.Form.Recordset

因为移动RecordsetClone的记录时窗体记录并不移动,而Recordset会与窗体记录同步
5#
发表于 2011-5-5 13:33:51 | 只看该作者
  1.    Dim rst As dao.Recordset
  2.    Set rst = Me.FrmCF.Form.RecordsetClone
  3.    rst.MoveLast
  4.    rst.MoveFirst
  5.    Do Until rst.EOF
  6.    If rst.Fields(0).Value < 10 Then
  7.         rst.Edit
  8.         rst.Fields(0).Value = Me.Txt + rst.Fields(0).Value
  9.         rst.Update
  10.     End If
  11.     rst.MoveNext
  12.     Loop
复制代码
把以上这段代码稍稍改下即可。

点击这里给我发消息

6#
 楼主| 发表于 2011-5-7 15:39:19 | 只看该作者
谢谢二位大侠
7#
发表于 2011-5-11 12:26:37 | 只看该作者
看看
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-18 20:13 , Processed in 0.100952 second(s), 31 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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