我有一个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)
答案 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") & "#"