0

简单地说,现在我有 8 个从左到右的文本框和最右边的标签。它就像一个时间表的员工工作表,您将时间输入每个文本框,它会计算时间并输出到右侧的标签。

现在,我需要验证每个文本框中的数字,第一个文本框是“in”,第二个是“out”,第三个是“in”,第四个是“out”,依此类推。验证任务将是

  • 如果它们都是数字
  • 如果数字在范围之间(用户输入 . 而不是 : 以分钟为单位的时间),那么 1:39 将是 1.39 并且不能有例如 2.61。1<=x<=1.59。
  • 在“in”之后,必须有一个“out”,并且不能紧跟“in”
  • 例如,第一个盒子和第四个盒子可以有一些值,第二个和第三个可以是空的。但是,第 4 个框中的值必须等于或大于第 1 个框。

我不知道如何解决这个问题。我需要一个干净、简单、可管理、可扩展且优雅的编程结构。有办法吗?

我尝试了验证器控件,但有限制。我应该为每个验证任务设置一个函数并调用它们中的每一个吗?(我有一个名为计算的按钮,它将开始这一切)。

我认为这对业主来说是一个简单的解决方案,但它变得非常复杂和忙碌。有人可以朝正确的方向小费吗?对不起,复杂的规则。顺便说一句,我对 ASP.NET 还很陌生,想看看大师如何解决这个问题。请帮忙。

4

1 回答 1

2

您的描述听起来像是您正在尝试计算 4 个班次的总小时数 InTimeShift1, OutTimeShift1; InTimeShift2,OutTimeShift2;InTimeShift3,OutTimeShift4;InTimeShift4,OutTimeShift4

您不应该使用数字代替时间。例如,您的员工将如何在下午 2:35 快速键入 InTime?在数量上,它将是 2.5833333333333333。我不相信您的所有用户都是数学专家。

相反,允许用户键入实际的 InTime 和 OutTime。

然后进行验证:

Public Function fnbIsValidInputs( pvsTime As String) As Boolean
    Dim vbValidationOK As Boolean = False
    If IsDate( InTimeShift1 ) And IsDate( InTimeShift2 ) And IsDate( InTimeShift3 ) _
        And IsDate( InTimeShift4 ) And IsDate( OutTimeShift1 ) _
        And IsDate( OutTimeShift2 ) And IsDate( OutTimeShift3 ) _
        And IsDate( OutTimeShift4 ) Then vbValidationOK = True

    Return vbValidationOK
End Function

Public Function fniMinutesClocked( pvdInTime As Date, pvdOutTime As Date ) As Long
    Return DateDiff( DateInterval.Minute, pvdInTime, pvdOutTime )
End Function
于 2013-01-28T04:16:16.623 回答