Foxtable(狐表)用户栏目专家坐堂 → 如何生成随机不重复时间?


  共有5389人关注过本帖树形打印复制链接

主题:如何生成随机不重复时间?

帅哥,在线噢!
有点蓝
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110668 积分:563254 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/4/28 9:01:00 [显示全部帖子]

怎么样的随机时间?当天任何一秒都可以?

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110668 积分:563254 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/4/28 9:20:00 [显示全部帖子]

意思是(7:30,8:10)这个范围内的任何一秒都可以?那么8:10  :01不是已经超出这个范围了吗?

 回到顶部
帅哥,在线噢!
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110668 积分:563254 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/4/28 9:37:00 [显示全部帖子]

生成随机时间值

Dim d As Date = New Date(1, 1, 1, 7, 30, 0)
Dim max As Integer = 2401
Dim 随机时间 As Date = d.AddSeconds(rand.Next(2400))
msgbox(随机时间)

至于是否重复,可以通过查表的方式,比如使用find查询是否有这个时间的数据,如果有,重新生成时间即可

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110668 积分:563254 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/4/28 10:25:00 [显示全部帖子]

填入的是什么数据?
msgbox(e.NewValue)


 回到顶部
帅哥,在线噢!
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110668 积分:563254 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/4/28 11:00:00 [显示全部帖子]

怎么测试?按什么步骤操作?

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110668 积分:563254 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/4/28 11:34:00 [显示全部帖子]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:随机时间.zip


 回到顶部
帅哥,在线噢!
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110668 积分:563254 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/4/28 14:30:00 [显示全部帖子]

http://www.foxtable.com/webhelp/topics/0349.htm

没有随机时间这种东西,只能是指定一个开始时间,然后增加随机的秒数

 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110668 积分:563254 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/4/28 15:08:00 [显示全部帖子]

1、2401是秒数,7:30至8:10之间总共40分钟,也就是2400秒,加一秒是因为随机值不包含最大值
2、可以任意时间变量值作为开始值,13楼实例代码取的是其它表的值作为开始值。一样的逻辑,要学会看代码的意思,而不是只会抄
3、只能说明看帮助都是随便看的,都没有理解帮助的意思。
随机值只能取2个给定的数组型值之间的随机数值。

我也没看懂【((("文本1") - ("文本7")), (("文本1") - ("文本8"))) 】这个表达的是什么意思

 回到顶部
帅哥,在线噢!
有点蓝
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110668 积分:563254 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/4/28 20:28:00 [显示全部帖子]

结合7楼的代码仔细理解一下

Select Case e.DataCol.Name
    Case "开始时间, "结束时间"    '比如:开始时间:7:30, "结束时间:8:10
Dim d1 As Date = e.DataRow("开始时间")
Dim d2 As Date = e.DataRow("结束时间")
Dim t As TimeSpan = = d2-d1
Dim max As Integer = t.TotalSeconds
        Dim d As Double = d1.AddSeconds(rand.Next(max))
        e.DataRow("卡一时间") = d
End Select

 回到顶部