我需要获取将在两天后结束的记录 但我总是得到一个空的datagridview。
我试过这段代码:
Dim after2days As Date = Today.Date.AddDays(3)
Dim sqlstr As String = "SELECT * FROM tblvac where vend between " & Today.Date & " and " & after2days & " "
Dim da As New OleDbDataAdapter(sqlstr, Conn)
ds.Reset()
da = New OleDbDataAdapter(sqlstr, Conn)
da.Fill(ds)
dgv.DataSource = ds
Conn.Close()
为什么会发生这种情况,我该如何解决?
答案 0 :(得分:3)
Access SQL包含函数Date()
和DateAdd()
,它们可以为您提供查询所需的日期范围。
Dim sqlstr As String = "SELECT * FROM tblvac where vend between Date() and DateAdd('d', 3, Date());"
如果您希望将VB.Net代码中的日期值传递给数据库引擎,请使用参数查询,这样您就不必担心日期格式和分隔符。只需为参数提供有效的日期/时间值。
答案 1 :(得分:2)
您正在将查询构建为字符串,因此需要使用转换为日期函数...对于MS Access,其DateValue请参阅http://www.techonthenet.com/access/functions/date/datevalue.php
尝试
Dim sqlstr As String = "SELECT * FROM tblvac where vend between
DateValue('" & Today.Date & "') and DateValue('" & after2days & "') "
由HansUp评论......此解决方案需要将日期格式设置为mm / dd / yyyy或yyyy-mm-dd