选择将在2天后结束的记录

时间:2016-05-31 13:02:24

标签: vb.net ms-access

我需要获取将在两天后结束的记录 但我总是得到一个空的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()

为什么会发生这种情况,我该如何解决?

2 个答案:

答案 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