关键词:
【中文标题】选择案例陈述和数据验证【英文标题】: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
【讨论】:
计数,拥有和案例陈述
】计数,拥有和案例陈述【英文标题】:Count,HavingandCasestatement【发布时间】:2013-09-2516:49:17【问题描述】:我希望根据3个不同的条件(DB2数据库)生成项目计数。我需要计算所有项目=.5和>=1.00(percentage_used),但只能按dim_buildin... 查看详情
多个案例陈述场景
】多个案例陈述场景【英文标题】:MultipleCaseStatementsScenario【发布时间】:2017-07-1017:44:48【问题描述】:样本数据:+--------+-----------+----------+------------+-------+|CaseID|StartDate|EndDate|ReviewDate|Event|+--------+-----------+----------+------- 查看详情
案例表达与案例陈述
】案例表达与案例陈述【英文标题】:CaseExpressionvsCaseStatement【发布时间】:2012-09-0808:19:49【问题描述】:MySQL中的CaseExpression和CaseStatement有什么区别?什么时候可以使用它们?使用其中一个有什么好处?案例语句语法:CASEWHENsea... 查看详情
Verilog 中的案例陈述?
】Verilog中的案例陈述?【英文标题】:CasestatementsinVerilog?【发布时间】:2015-01-2402:53:03【问题描述】:假设我有一个名为“myReg”的8位输出reg和一个名为“checkReg”的8位输入。我可以在case语句中使用十六进制值检查和分配它们... 查看详情
案例陈述对输出没有影响
】案例陈述对输出没有影响【英文标题】:CaseStatementhavingnoeffectonoutput【发布时间】:2016-08-2321:39:07【问题描述】:我正在尝试根据银行批准状态并按礼物种类分组来获取捐款金额。但是,脚本在不同的行上输出RR和NR捐赠(见脚... 查看详情
使用 2 个不同字段的案例陈述
】使用2个不同字段的案例陈述【英文标题】:CaseStatementusing2differentFields【发布时间】:2019-07-3114:43:22【问题描述】:我有一个名为主题的字段,主题中的数据有时是NOA,我想做的是当主题是NOA时将字段Date更改为空,如果不是NOA... 查看详情
我可以在案例陈述中使用“AS”关键字吗
】我可以在案例陈述中使用“AS”关键字吗【英文标题】:CanIuse"AS"KeywordinCaseStatement【发布时间】:2015-01-1310:57:57【问题描述】:我想创建一个包含两个新列SC和NC的视图。我想编写一个比较country1和SupplierCountry的逻辑,如... 查看详情
Excel 文件、案例陈述或替代方案的 MS SQL Excel
】Excel文件、案例陈述或替代方案的MSSQLExcel【英文标题】:MSSQLExcelofExcelFiles,CaseStatementsorAlternative【发布时间】:2019-12-1508:09:35【问题描述】:我有一个用于处理数据的Excel文件。它通过一个.csv文件进入,我想输出很多不同的工... 查看详情
sql案例陈述(代码片段)
linq 案例陈述
】linq案例陈述【英文标题】:linqcasestatement【发布时间】:2010-10-3011:29:11【问题描述】:我需要一些关于linq(c#)中的CASE语句的帮助:osc_products.products_quantity=CASEWHENitempromoflag<>\'N\'THEN100000WHENitemcat1IN(\'1\',\'2\',\'31\')ANDitemsalestatus... 查看详情
python仿真开关案例陈述(代码片段)
结合案例陈述[重复]
】结合案例陈述[重复]【英文标题】:CombiningCASESTATEMENTS[duplicate]【发布时间】:2013-01-2120:43:41【问题描述】:可能重复:ConvertingAccessCodetoSQL我有一个使用具有二合一的IIF语句的访问代码,我正在尝试将它们重写为SQL语句为CASE语... 查看详情
案例陈述中的 SQL 滞后
】案例陈述中的SQL滞后【英文标题】:SQLLAGINCASESTATEMENT【发布时间】:2018-06-2209:40:27【问题描述】:如果CurrentCLUSTERn=PreviousCLUSTERn然后将PreviousPRODCAT作为PREVCAT添加到当前行...ORA-30484:missingwindowspecificationforthisfunction30484.00000-"missingw... 查看详情
Erlang 案例陈述
】Erlang案例陈述【英文标题】:Erlangcasestatement【发布时间】:2014-01-3118:16:05【问题描述】:我有以下Erlang代码,当我尝试编译它时,它给出如下警告,但这是有道理的。函数需要两个参数,但我需要匹配“其他所有内容”而不... 查看详情
案例陈述中出现此错误的原因是啥
】案例陈述中出现此错误的原因是啥【英文标题】:whatisthereasonbehindthiserrorincasestatement案例陈述中出现此错误的原因是什么【发布时间】:2015-11-2407:51:09【问题描述】:当我执行以下代码时,我得到一个错误declare@varvarchar(10)=\'a\... 查看详情
Ruby中的案例陈述[重复]
】Ruby中的案例陈述[重复]【英文标题】:CaseStatementsInRuby[duplicate]【发布时间】:2014-02-2614:18:53【问题描述】:我正在尝试创建一个Case语句来确定一个属性是否存在,如果存在则显示一个链接。<%case%><%when@team_member.twitter?%&... 查看详情
带有 SUM 的 Oracle 案例陈述
】带有SUM的Oracle案例陈述【英文标题】:OracleCASESTATEMENTWITHSUM【发布时间】:2017-08-3007:57:29【问题描述】:我在使用select语句返回正确信息时遇到问题表:name1|name2|amount------|------|--------Fred|Fred|10Bob|Fred|15Sam|Sam|100这是我的查询SELEC... 查看详情
机器学习交叉验证和网格搜索案例分析(代码片段)
...是网格搜索(GridSearch)3交叉验证-网格搜索API:4鸢尾花案例增加K值调优5Facebook签到的位置预测5.1数据集介绍5.2步骤分析5.3代码实现6总结1什么是交叉验证(crossvalidation)交叉验证:将拿到的训练数据,分为训练和验证集。 查看详情