获取日期时间选择器的值并使用 BETWEEN 在 Ms Access 数据库中过滤日期
Getting value of Date Time Picker and using BETWEEN for filtering date in Ms Access database
我有一个从和到 DateTimePicker
。我将它们转换为 String
并用它来过滤特定范围的 MsAccess database
但过滤存在问题。例如,我想从 2015 年 1 月 1 日到 2015 年 1 月 31 日进行过滤。结果包括前几年的一月。我的陈述似乎有什么问题?
这是我的代码:
Dim connectionstring As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Application.StartupPath & "\STSlog.mdb;Jet OLEDB:Database Password=password;"
Dim conn As New OleDbConnection(connectionstring)
Dim command As New OleDbCommand
Dim commstring As String
Dim fromdatestring As String = FromDPicker.Value.ToString("MM/dd/yyyy", CultureInfo.InvariantCulture)
Dim todatestring As String = ToDPicker.Value.ToString("MM/dd/yyyy", CultureInfo.InvariantCulture)
commstring = "SELECT Mark, ProjectCode, Project, Activity, today, Regular, OT FROM data WHERE today BETWEEN '" & fromdatestring & "' AND '" & todatestring & "' AND empno = '" & TimeSheetAdmin.EmpNumCmbBox.SelectedItem.ToString & "' ORDER BY VAL(Mark) DESC"
command = New OleDbCommand(commstring, conn)
改变
..."WHERE today BETWEEN '" & fromdatestring & "' AND '" & todatestring & "'"...
到
..."WHERE today >= #" & fromdatestring & "# AND today <= #" & todatestring & "#"...
请注意,MS-Access 使用 #-Delimiters 作为 Date
-Values (afaik),这也可能是您查询中的问题。
我有一个从和到 DateTimePicker
。我将它们转换为 String
并用它来过滤特定范围的 MsAccess database
但过滤存在问题。例如,我想从 2015 年 1 月 1 日到 2015 年 1 月 31 日进行过滤。结果包括前几年的一月。我的陈述似乎有什么问题?
这是我的代码:
Dim connectionstring As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Application.StartupPath & "\STSlog.mdb;Jet OLEDB:Database Password=password;"
Dim conn As New OleDbConnection(connectionstring)
Dim command As New OleDbCommand
Dim commstring As String
Dim fromdatestring As String = FromDPicker.Value.ToString("MM/dd/yyyy", CultureInfo.InvariantCulture)
Dim todatestring As String = ToDPicker.Value.ToString("MM/dd/yyyy", CultureInfo.InvariantCulture)
commstring = "SELECT Mark, ProjectCode, Project, Activity, today, Regular, OT FROM data WHERE today BETWEEN '" & fromdatestring & "' AND '" & todatestring & "' AND empno = '" & TimeSheetAdmin.EmpNumCmbBox.SelectedItem.ToString & "' ORDER BY VAL(Mark) DESC"
command = New OleDbCommand(commstring, conn)
改变
..."WHERE today BETWEEN '" & fromdatestring & "' AND '" & todatestring & "'"...
到
..."WHERE today >= #" & fromdatestring & "# AND today <= #" & todatestring & "#"...
请注意,MS-Access 使用 #-Delimiters 作为 Date
-Values (afaik),这也可能是您查询中的问题。