选择案例陈述和数据验证
Posted
技术标签:
【中文标题】选择案例陈述和数据验证【英文标题】:Select Case statement and data validation 【发布时间】:2019-02-16 04:43:52 【问题描述】:我正在尝试使用 select case 语句验证数据范围。我遇到了其他嵌套选择案例的问题。这是可能的还是我一厢情愿的想法?或者我应该将要堆叠的选择案例语句分开吗?
例如这是我在 vb 中的代码:
Select Case intyear
Case 2000 To 2025
Select Case intmonth
Case 1 To 12
BlnDateValid = True
End Select
Select Case intDay
Case 1 To 31
BlnDateValid = True
End Select
Select Case intHours
Case 0 To 23
BlnDateValid = True
End Select
Select Case intAddDays
Case 0 To 60
BlnDateValid = True
End Select
Select Case intAddHours
Case 0 To 23
BlnDateValid = True
End Select
Case Else
BlnDateValid = False
End Select
If blnDatevalid = false then
MessagebBox.Show("Please check all fields and enter valid
data", "Invalid data", MessageBoxButtons.OK)
【问题讨论】:
好吧,我不知道为什么会这样,对不起。 嗯,它可以让我把那个代码弄得很奇怪。对不起,奇怪的文字。 您的文本和缩进四个空格的代码之间需要一个空行。我给你加了一个。我还重新格式化了代码,以便缩进有意义。 【参考方案1】:不幸的是,缩进有意义并不能帮助代码有意义。 Select Case
的重点是巧妙地选择多个案例中的一个。带有一种情况的Select Case
是错误代码,您应该改用If
语句。在这种情况下,您尤其应该使用 If
语句,因为您可以将所有这些 Select Case
语句替换为单个 If
语句。
If Not (intyear >= 2000 AndAlso intyear <= 2025 AndAlso
intmonth >= 1 AndAlso intmonth <= 12 AndAlso
intDay >= 1 AndAlso intDay <= 31 AndAlso
intHours >= 0 AndAlso intHours <= 23 AndAlso
intAddDays >= 0 AndAlso intAddDays <= 60 AndAlso
intAddHours >= 0 AndAlso intAddHours <= 23) Then
MessagebBox.Show("Please check all fields and enter valid data", "Invalid data", MessageBoxButtons.OK)
End If
【讨论】:
【参考方案2】:所有Select
或If
检查仍然会让您容易受到2 月30 日等无意义值的影响。最好实际尝试创建DateTime
值。
Dim d As DateTime
Dim t As TimeSpan
Try
d = New DateTime(intYear, intMonth, intDay, intHours, 0, 0)
t = New TimeSpan(intAddDays, intAddHours, 0, 0)
If t > (New TimeSpan(60, 23, 0, 0)) Then Throw New ArgumentOutOfRangeException()
Catch
MessagebBox.Show("Please check all fields and enter valid data", "Invalid data", MessageBoxButtons.OK)
End Try
或者你可以创建一个字符串并尝试解析它:
If Not DateTime.TryParse($"intYear-intMonth-intDay intHours:00:00")
MessagebBox.Show("Please check all fields and enter valid data", "Invalid data", MessageBoxButtons.OK)
End If
【讨论】:
以上是关于选择案例陈述和数据验证的主要内容,如果未能解决你的问题,请参考以下文章