Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 如果日期介于范围之间,则进行VB验证_Vb.net_Date_For Loop_If Statement_Datatable - Fatal编程技术网

Vb.net 如果日期介于范围之间,则进行VB验证

Vb.net 如果日期介于范围之间,则进行VB验证,vb.net,date,for-loop,if-statement,datatable,Vb.net,Date,For Loop,If Statement,Datatable,我想知道是否有人可以帮助我的VB代码。我相信我很接近,因为很多时候我的代码工作得很好,但我注意到它可能有一个弱点,因为有时我会得到意想不到的结果。我想我错过了一些基本的东西,所以请容忍我 基本上,我正在尝试在一个VB项目的数据表中创建一个简单的酒店预订系统,这个项目是我在业余时间创建的 我希望用户能够从列表框中选择房间号,然后选择到达和离开日期。发生这种情况后,他们单击一个按钮,我希望程序能够将房间号、预订开始日期和预订结束日期与房间号、开始日期和结束日期(数据表中的每一行)进行比较。无论如何,

我想知道是否有人可以帮助我的VB代码。我相信我很接近,因为很多时候我的代码工作得很好,但我注意到它可能有一个弱点,因为有时我会得到意想不到的结果。我想我错过了一些基本的东西,所以请容忍我

基本上,我正在尝试在一个VB项目的数据表中创建一个简单的酒店预订系统,这个项目是我在业余时间创建的

我希望用户能够从列表框中选择房间号,然后选择到达和离开日期。发生这种情况后,他们单击一个按钮,我希望程序能够将房间号、预订开始日期和预订结束日期与房间号、开始日期和结束日期(数据表中的每一行)进行比较。无论如何,到目前为止,我的If语句的结构基本上是这样的:

For Each data As DataRow In dtRoomReserveData.Rows
     If data.Item("RoomNum").ToString.Contains(lstSelectRoomNum.Text) AndAlso data.Item("DateArrive") >= dateArrive.Value.Date AndAlso dr2.Item("DateArrive") <= dateLeave.Value.Date Then
         'if there is a reservation in room exists during that Date range display error message to user:
         MessageBox.Show("Sorry!  That room is already reserved during that date range!")
         Exit Sub
     End If
Next
将每个数据作为dtRoomReserveData.Rows中的DataRow进行


如果data.Item(“RoomNum”).ToString.Contains(lstSelectRoomNum.Text)和also data.Item(“DateArrival”)>=dateArrival.Value.Date和also dr2.Item(“DateArrival”),那么我是否做了一些非常愚蠢的事情,以至于没有人愿意提供任何帮助,还是太复杂了?你没有得到任何答案的原因是,通过阅读你的问题,我仍然不知道你面临的问题是什么?什么不起作用?作为旁注。我从不推荐在这样的事情中使用datatable,创建强类型的对象将使您的生活变得更加简单和健壮。事实上,您的代码不是强类型,例如data.Item(“dateArrival”)将返回type对象,但您使用它是因为它是date,因为您没有严格的选项。如果有,它甚至不会生成。@Esko错误的是,有时逻辑会失败,在日期范围内插入一个带有房间号的新行。我知道有更好的方法可以做到这一点,但如果可能的话,我需要这样做。@Esko我只是想知道可以做些什么来改进逻辑?这是windows应用程序还是web应用程序?您是否考虑过当所选房间为“1”且房间号为“11”时会发生什么情况?字符串“11”包含“1”,所以您应该只比较它,因为字符串相等,而不使用contains。这并不能解决您的问题,因为它只会给出误报。此外,您对日期的逻辑不起作用,您根本没有比较出发日期。如果有28.6-29.6的预订,有人想预订29.6。您的测试将失败,28.6不大于或等于29.6。请回顾你的逻辑。