我正在尝试过滤我的数据库以显示从我表单上的日历中选择的日期的所有预订。这是我写的代码...
Public selDate As DateTime
Dim response As Integer
Public Sub FilterBooking(selDate)
'// Here I will create a filter to for boookings on selected date from calender
Dim dateFrom As DateTime
Dim dateTo As DateTime
dateFrom = selDate & " 00:00:01"
dateTo = selDate & " 23:59:59"
MsgBox(dateFrom)
MsgBox(dateTo)
Me.QueryBookingInfoBindingSource.Filter = "BookingDate >= #" & dateFrom & "# AND BookingDate <= #" & dateTo & "#"
End Sub
Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'TODO: This line of code loads data into the 'GarageDataSet.queryBookingInfo' table. You can move, or remove it, as needed.
Me.QueryBookingInfoTableAdapter.Fill(Me.GarageDataSet.queryBookingInfo)
'set currently selected date in the main calender to selDate variable
selDate = mainCalender.SelectionStart.Date
'run the following sub
FilterBooking(selDate)
End Sub
我在调试时创建的过滤器给出了此错误消息......
mscorlib.dll 中发生“System.FormatException”类型的未处理异常
附加信息:字符串未被识别为有效的日期时间。
有人可以告诉我我在哪里犯了错误吗?
PS我也尝试过这个过滤器=
Me.QueryBookingInfoBindingSource.Filter = "BookingDate >= #" & dateFrom.ToString("dd/MM/yyyy hh:mm:ss") & "# AND BookingDate <= #" & dateTo.ToString("dd/MM/yyyy hh:mm:ss") & "#"
您是否尝试过格式化日期?
Me.QueryBookingInfoBindingSource.Filter = "BookingDate >= " & String.Format("#{0:yyyy/MM/dd HH:mm:ss}#", dateFrom) & " AND BookingDate <= " & String.Format("#{0:yyyy/MM/dd HH:mm:ss}#", dateTo)
EDIT:
恕我直言,这个更干净,更容易阅读:
Public Sub FilterBooking(selDate)
Dim dateFrom As DateTime = selDate.Date
Dim dateTo As DateTime = dateFrom.AddDays(1).Subtract(New TimeSpan(1))
Dim filterBuilder As New StringBuilder()
Dim filterFormat As String = "BookingDate {0} #{1:yyyy/MM/dd HH:mm:ss}#"
With filterBuilder
.AppendFormat(filterFormat, ">=", dateFrom)
.Append(" AND ")
.AppendFormat(filterFormat, "<=", dateTo)
End With
Me.QueryBookingInfoBindingSource.Filter = filterBuilder.ToString()
End Sub
这也将能够接收带有时间值的日期而不会崩溃,而您以前的代码不会崩溃。 ;)话虽这么说,因为selDate
在方法外部声明,您可能不希望以参数化方法开始。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)