【发布时间】:2016-04-07 08:18:41
【问题描述】:
我有一个 VB 应用程序和 MS Access 数据库作为后端。我想将我的数据库上的所有记录显示到具有当前系统日期的 Datagrid。 我的sql语句有问题,不知道该怎么办。
显示错误“条件表达式中的数据类型不匹配”
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)
【问题讨论】:
-
去掉单引号
-
删除整个日期表达式并使用内置的
Date()函数,例如WHERE WorkingDate()>=Date()。您也应该不惜一切代价避免使用字符串连接,因为这会使您面临 SQL 注入攻击、性能不佳 和 格式不匹配 -ToShortDateString使用当前系统的语言环境,而这可能 没有 匹配日期文字格式。 -
@Panagiotis Kanavos,多亏了你,它确实有效,一个非常好的避免 sql 注入的建议,我会注意的。 sqlqry="SELECT * FROM tblAttendance WHERE WorkingDate = Date()"
标签: vb.net ms-access-2010