5组人轮流上班,每班上8小时,具体时间安排,1-8是一班,8-16另一班,16-24又一班,5组人轮流上,5组人轮完一圈后自动回头重新轮!设计中问题是如何判别当前的组号,怎么实现到时间自动轮换!高手们帮帮忙,解决马上给分,提出好的方法也给分!
解决方案 »
- 安装setup factory6.0打包好的程序,正在注册文件总没响应。
- 紧急高分求教高手!!!!!!!快进哦!!!!!!剩下的分都给了
- 急问:要在PixtureBox中做一个能够改变大小的框,有什么办法啊?
- 如何判断一个文件是否存在?(不要以为很简单哦)
- 关于类的一个简单问题,答者给分
- EXE自动运行???
- 急 如何将SQL Server中的查询结果显示在MSHflexgrid中
- 找带按钮(button)的text类型控件
- 我有一个超级奇怪的问题!!!!!
- 关于datagrid and adodc的菜鸟问题.
- 问个超简单的问题(前两个有分啊)
- Dim AppExcel As excel.Application 报错说用户定义类型未定义?
然后用time加
Dim StartDate As StringPrivate Sub Command1_Click()
Dim nDays As Integer
Dim nHous As Integer
Dim CurZu As Integer
nDays = DateDiff("d", StartDate, Date)
nHous = GetPeNo(Format(Time, "HH:MM"))
CurZu = (nDays * 3 + nHous) Mod 5
MsgBox "當前是第 " & CurZu & " 組當班"
End SubPrivate Function GetPeNo(StrTime As String) As Integer
If StrTime >= "01:00" And StrTime < "08:00" Then
GetPeNo = 1
ElseIf StrTime >= "08:00" And StrTime < "16:00" Then
GetPeNo = 2
ElseIf StrTime >= "16:00" And StrTime < "24:00" Then
GetPeNo = 3
End If
End FunctionPrivate Sub Form_Load()
StartDate = "2006/08/01"
End Sub以上代碼能夠得出任一時間的當班情況
Dim I as long
Dim L as long
Do while True '循环一次就算一个小时
L=L+1 '时间+1
If L=8 then
L=0 '重新计算时间
I = (I+1) Mod 5 '换下一个人
End If
Loop
说明: 当L=8的时候,换下一个人I+1,并重新计时L=0, 因为只有5个人,所以要MOD 5这只是一个思路,并不复杂.
如果是实际真的要每1小时运行一次循环那写法会有所不同,比如用在TIMER控件内判断当前时间,甚至是在循环内用SLEEP来等待1一个小时等等.
如果只是考试题目,看算法,这已经足够了.
'參數:
'mstime:YYYYMMDDHH 開始輪流的日期及時間
'meTime:YYYYMMDDHH 當前的日期及時間
Private Function fTimeNum(msTime As String, meTime As String) As Long
Dim msYmd As String
Dim meYmd As String
Dim mGapHour As Long
Dim msHour As Integer
Dim meHour As Integer
msYmd = Format(Left(msTime, 8), "0000-00-00") '開始日期
meYmd = Format(Left(meTime, 8), "0000-00-00") '結束日期
msHour = Right(msTime, 2) '開始時間
meHour = Right(meTime, 2) '結束時間
mGapHour = DateDiff("d", msYmd, meYmd) * 24 '天數*24
fTimeNum = mGapHour + meHour - msHour
End Function
Private Function fClassNo(msTime As String, mNowTime As String, mFlag As Integer) As String
Dim mLngTime As Long
Dim mLngNum As Long
Dim mLngNo As Long
mLngTime = fTimeNum(msTime, mNowTime)
mLngNum = mLngTime \ 8 '已輪的次數
If mFlag = 0 Then '返回總班數
mLngNo = mLngNum
Else
mLngNo = mLngNum Mod 5 '當前班號
End If
Select Case mFlag
Case 0, 1 '總班次/當前班次
fClassNo = mLngNo
Case 2 '后一班
fClassNo = Abs(mLngNo + 1)
Case 3 '前一班
fClassNo = Abs(mLngNo - 1)
End Select
If fClassNo = 0 Then fClassNo = 5
End Function
Private Sub Command1_Click()
Text3.Text = fClassNo(Text1.Text, Text2.Text, 0)
End Sub