选择案例陈述和数据验证

     2023-05-07     228

关键词:

【中文标题】选择案例陈述和数据验证【英文标题】: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】:

所有SelectIf 检查仍然会让您容易受到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)交叉验证:将拿到的训练数据,分为训练和验证集。 查看详情