设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[窗体] DoCmd.GoToRecord , , , Y会造成显示新增加记录行(空行)?

[复制链接]
跳转到指定楼层
1#
发表于 2007-11-30 09:25:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面语句是随机显示表中记录对吧,可从实际效果来看会显示出空白记录,而表中唯一空白记录只有最后一行的新增加记录行,这样的情况可以避免吗?如何做呢,谢谢!

    X = Me.Recordset.RecordCount
    Y = Int((X * Rnd) + 1)
    DoCmd.GoToRecord , , , Y
    Me.Repaint
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2007-11-30 09:30:45 | 只看该作者
Y值超出记录范围, 随机数字必须控制在效范围内

点击这里给我发消息

3#
发表于 2007-11-30 09:52:43 | 只看该作者
使用 Int((upperbound - lowerbound + 1) * Rnd + lowerbound)
来设定上下限
4#
 楼主| 发表于 2007-11-30 14:32:35 | 只看该作者
原帖由 tmtony 于 2007-11-30 09:52 发表
使用 Int((upperbound - lowerbound + 1) * Rnd + lowerbound)
来设定上下限


哦,那要想在表中的第一条到最后一条记录中随机取记录,是不是应该这样写呢:

    X = Me.Recordset.RecordCount
    Y = Int((X -1+1) * Rnd+1)
    DoCmd.GoToRecord , , , Y
    Me.Repaint

谢谢!
5#
 楼主| 发表于 2007-12-1 10:33:54 | 只看该作者
上面的方法如果在理论上没有问题的话,那么在实际使用时仍然会有问题,下面是以前一位论坛网友上传的抽奖程序,为了更容易的说明问题,待抽奖的数据只保留两条记录。情理上讲,实际效果应该是在这两条记录中随机选出一条,但结果却是有“空白记录”的情况出现! 请各位老大指教,谢谢!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
6#
 楼主| 发表于 2007-12-1 11:25:46 | 只看该作者
需要单独再开个帖子吗?

点击这里给我发消息

7#
发表于 2007-12-2 00:21:28 | 只看该作者
X = Me.Recordset.RecordCount
    Randomize  '确保真正随机数
    Y = Int((X * Rnd) + 1)
    DoCmd.GoToRecord , , acGoTo, Y   ' 原句为 DoCmd.GoToRecord , , , Y
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-6-10 04:50 , Processed in 0.089824 second(s), 30 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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