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


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

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

帅哥哟,离线,有人找我吗?
有点蓝
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107702 积分:547831 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/4/28 11:00:00 [只看该作者]

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

 回到顶部
帅哥哟,离线,有人找我吗?
lgz518
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1152 积分:7712 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2022/4/28 11:07:00 [只看该作者]

二个方法
方法1,从《考勤表》从《上班时间表》按“班别”,取值,取值是可以,但根据《上班时间表》按“班别”,取值,从生成随机时间。
方法2,窗口上按键单击事件,根据窗口的查询,文本档的值条件,《考勤表》生成随机时间。

图片点击可在新窗口打开查看此主题相关图片如下:随机时间.jpg
图片点击可在新窗口打开查看


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107702 积分:547831 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/4/28 11:34:00 [只看该作者]

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


 回到顶部
帅哥哟,离线,有人找我吗?
lgz518
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1152 积分:7712 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2022/4/28 14:28:00 [只看该作者]

Dim drs As List(Of DataRow)
drs = DataTables("考勤表").Select("[班别] = 'ComboBox1' And [工作日类型]= 'ComboBox2'")

For Each dr As DataRow In drs
    
    dr("第1段") = Rand.Next((("文本1") - ("文本7")), (("文本1") - ("文本8"))) 
     dr("第2段") = Rand.Next((("文本2") - ("文本7")), (("文本1") - ("文本8"))) 
     dr("第3段") = Rand.Next((("文本3") - ("文本7")), (("文本1") - ("文本8"))) 
     dr("第4段") = Rand.Next((("文本4") - ("文本7")), (("文本1") - ("文本8"))) 
     dr("第5段") = Rand.Next((("文本5") - ("文本7")), (("文本1") - ("文本8"))) 
     dr("第5段") = Rand.Next((("文本6") - ("文本7")), (("文本1") - ("文本8"))) 
    
Next

老师,如何实现,红字代码是随机时间?狐表有没有“取随机数(范围)”的函数?


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107702 积分:547831 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/4/28 14:30:00 [只看该作者]

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

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

 回到顶部
帅哥哟,离线,有人找我吗?
lgz518
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1152 积分:7712 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2022/4/28 14:59:00 [只看该作者]

问题一:
看您的实例,写2401是一个时间,不是什么时间,是8:00的意思?如果是那24个小时,还分钟是其数字是多少?

问题二:
没有随机时间这种东西,只能是指定一个开始时间,然后增加随机的秒数
那就是固定写法,没有让别人来随意设定时间,比如文本框的值?
问题三:

Dim drs As List(Of DataRow)
drs = DataTables("考勤表").Select("[班别] = 'ComboBox1' And [工作日类型]= 'ComboBox2'")

For Each dr As DataRow In drs
    
    dr("第1段") = Rand.Next((("文本1") - ("文本7")), (("文本1") - ("文本8"))) 
     dr("第2段") = Rand.Next((("文本2") - ("文本7")), (("文本1") - ("文本8"))) 
     dr("第3段") = Rand.Next((("文本3") - ("文本7")), (("文本1") - ("文本8"))) 
     dr("第4段") = Rand.Next((("文本4") - ("文本7")), (("文本1") - ("文本8"))) 
     dr("第5段") = Rand.Next((("文本5") - ("文本7")), (("文本1") - ("文本8"))) 
     dr("第5段") = Rand.Next((("文本6") - ("文本7")), (("文本1") - ("文本8"))) 
    
Next

您提供网址我看,红字代码,也以此凑了,但执行不了,请您帮助实现,谢谢

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  17楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107702 积分:547831 威望: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"))) 】这个表达的是什么意思

 回到顶部
帅哥哟,离线,有人找我吗?
lgz518
  18楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1152 积分:7712 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2022/4/28 18:31:00 [只看该作者]

问题一:下面是生成随机数,如何实现时间?

根据"开始时间和"结束时间",生成随机时间
Select Case e.DataCol.Name
    Case "开始时间, "结束时间"    '比如:开始时间:7:30, "结束时间:8:10
        Dim d As Double = Rand.Next(e.DataRow("结束时间") * 100, e.DataRow("开始时间") * 100) / 100
        e.DataRow("卡一时间") = d

End Select

问题二:网上找看不是很明白

VB生成某范围内的随机时间

Private Sub Command1_Click()
Dim x As Date, x1 As Date, x2 As Date
If IsDate(Text1.Text) And IsDate(Text2.Text) Then
x1 = CDate(Text1.Text)
x2 = CDate(Text2.Text)
If x1 < 1 And x2 < 1 And x2 > x1 Then
Randomize
Do
x = CDate(Rnd)
Loop Until x >= x1 And x <= x2
MsgBox x
Else
MsgBox "输入的时间格式有误!"
End If
Else
MsgBox "输入的时间格式有误!"
End If
End Sub

这是一种比较巧妙的实现方法,利用的是时间变量的时分秒部分和随机函数Rnd的值
都是大于等于0小于1的数这个特性。

h1=hour(text1):h2=hour(text2)
m1=minute(text1):m2=minute(text2)
s1=second(text1):s2=second(text2)
h=int(rnd*(h2-h1+1))+h1
m=int(rnd*(m2-m1+1))+m1
s=int(rnd*(s2-s1+1))+s1
text3=timeserial(h,m,s)



问题三,关于我也没看懂【((("文本1") - ("文本7")), (("文本1") - ("文本8"))) 】这个表达的是什么意思
意思是如图


图片点击可在新窗口打开查看此主题相关图片如下:随机时间1.jpg
图片点击可在新窗口打开查看




 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  19楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107702 积分:547831 威望: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

 回到顶部
总数 19 上一页 1 2