Sql表达式筛选具有当前系统日期的记录

时间:2016-04-07 08:18:42

标签: vb.net ms-access-2010

我有一个VB应用程序和MS Access数据库作为BackEnd。我想在我的db上显示具有当前系统日期的Datagrid的所有记录。 我的sql语句有问题,我不知道该怎么办。

显示错误“标准表达式中的Dataype Mismatch”

  sqlqry = "Select * FROM tblAttendance WHERE WorkingDate >= '#" & 
                           DateTime.Now.ToShortDateString() & "#'"    
    da = New OleDbDataAdapter(sqlqry, cnn)   
    Dim dt As New DataTable("tblAttendance")
    da.Fill(dt)
    Me.dgvAttendance.DataSource = dt
    DataGridProperty(dgvAttendance)
    DataGridAttendance(dgvAttendance)

2 个答案:

答案 0 :(得分:2)

DateTime作为字符串传递给您的查询时可能会出现问题。

我的建议是使用参数,因为OleDB集成将注意正确地将参数传递给MS Access

Dim sqlqry As String = "Select * FROM tblAttendance WHERE WorkingDate >= ?"
Dim da As New OleDbDataAdapter(sqlqry, cnn)

da.SelectCommand.Parameters.Add(New OleDb.OleDbParameter("@WorkingDate", DateTime.Now))

Dim dt As New DataTable("tblAttendance")
da.Fill(dt)
Me.dgvAttendance.DataSource = dt
DataGridProperty(dgvAttendance)
DataGridAttendance(dgvAttendance)

从我的头脑写作,但这应该做。

答案 1 :(得分:-2)

这应该做:

sqlqry = "Select * FROM tblAttendance WHERE WorkingDate = #" & DateTime.ToDay.ToString("yyyy'/'MM'/'dd") & "#"