2014-02-18 45 views
1

我正試圖過濾我的數據庫,以顯示從日曆中選擇的所有日期,這些日期是在我的表單上顯示的。這是我寫的代碼...如何在Visual Basic 2012中使用BindingSource.Filter作爲日期?

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 

調試時,我創建了過濾器給出了這樣的錯誤消息...

An unhandled exception of type 'System.FormatException' occurred in mscorlib.dll

Additional information: String was not recognized as a valid DateTime.

有人能告訴我IM犯了一個錯誤。

PS我也試過這種過濾器=

Me.QueryBookingInfoBindingSource.Filter = "BookingDate >= #" & dateFrom.ToString("dd/MM/yyyy hh:mm:ss") & "# AND BookingDate <= #" & dateTo.ToString("dd/MM/yyyy hh:mm:ss") & "#" 
+0

你使用什麼樣的數據源? – Crono

+0

本地存儲訪問數據庫 –

+0

沒有我的意思是在調用代碼端。它是一個數據集?實體對象?波蘇斯? – Crono

回答

2

您是否嘗試過格式化你的日期?

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) 

編輯:

這恕我直言,是更清潔和更容易閱讀:

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 

這也將是能夠接收與時間值日期沒有崩潰,你的原代碼止跌「T。 ;)這就是說,由於selDate是在方法之外聲明的,所以你可能不需要一個參數化方法。

+0

得到這個錯誤,當我使用該代碼...在System.Data.dll中發生未處理的類型'System.Data.SyntaxErrorException'的異常 附加信息:語法錯誤:後缺少操作數'00'操作員。 –

+0

剛編輯我的答案。 – Crono

+0

我在每個日期之前和之後添加了#並且回到了原始錯誤。 –

相關問題