在vb.net 2012中搜索日期

在vb.net 2012中搜索日期,vb.net,Vb.net,在每一个已知的数据库系统中,DATE这个词通常是一个保留关键字。 如果你真的想用一个非常糟糕的选择,那么在这个词周围用方括号 Private Sub Search_Record() Dim conn As New OleDbConnection Dim cmd As New OleDbCommand Dim da As New OleDbDataAdapter Dim dt As New DataTable Dim sSQL As String = Str

在每一个已知的数据库系统中,DATE这个词通常是一个保留关键字。 如果你真的想用一个非常糟糕的选择,那么在这个词周围用方括号

Private Sub Search_Record()
    Dim conn As New OleDbConnection
    Dim cmd As New OleDbCommand
    Dim da As New OleDbDataAdapter
    Dim dt As New DataTable
    Dim sSQL As String = String.Empty
        Try
            conn = New OleDbConnection(Get_Constring)
            conn.Open()
            cmd.Connection = conn
            cmd.CommandType = CommandType.Text
            sSQL = "SELECT * FROM [Data]"
            Dim d1, d2 As String
            d1 = Format(Me.dtpDOB1.Value, "dd/MM/yyyy")
            d2 = Format(Me.dtpDOB2.Value, "dd/MM/yyyy")
            Dim betchar As String = " where "
            Dim Orkey As String = " and"

            the date between d1 and d2 not working fine 

            If Not dtpDOB1.Text = " " Then
                If Not dtpDOB2.Text = " " Then
                    If Not d1 = "" Then sSQL = sSQL & betchar + " date = #" & d1 & "#"
                Else
                    If Not d1 = "" Then sSQL = sSQL & betchar + " date Between #" & d1 & "# AND #" & d2 & "#"
                End If
            End If

            cmd.CommandText = sSQL
            da.SelectCommand = cmd
            da.Fill(dt)
            Me.DataGridView1.DataSource = dt
            If dt.Rows.Count = 0 Then
                MsgBox("No record found!")
            End If
        Catch ex As Exception
            MsgBox(ErrorToString)
        Finally
            conn.Close()
        End Try


End Sub
我真的建议您开始使用参数化查询,以在查询中获得更好的可读性,并避免任何Sql注入的可能性

 If Not d1 = "" Then sSQL = sSQL & betchar + " [date] ...

请参阅:当您试图在标题中发布问题时,提供了该选项。另见。学习格式化代码也会有所帮助。然后查看SQL参数和数据类型。您是否使用MS Access作为数据库?使用[date]后问题未得到解决-如果我将date更改为othername,则无法解决SQL中的问题您遇到了什么错误?任何有助于查明问题的错误消息?请将捕获更改为MsgBoxex。消息以查看是否存在异常错误1'OleDbParameter'是一种类型,不能用作表达式错误3'p'未声明。由于其保护级别,可能无法访问。
Dim prm = new List(Of OleDbParameter)()
If Not dtpDOB1.Text = " " Then
    If Not dtpDOB2.Text = " " Then
        If Not d1 = "" Then 
            sSQL = sSQL & " WHERE [date] = ?"
            Dim p = new OleDbParameter()
            p.ParameterName = "d1"
            p.OleDbType = OleDbType.Date
            p.Value = Me.dtpDOB1.Value
            prm.Add(p)
        End If
    Else
        If Not d1 = "" Then 
            sSQL = sSQL & " WHERE [date] >= ? AND [date] <= ?"
            Dim p = new OleDbParameter()
            p.ParameterName = "d1"
            p.OleDbType = OleDbType.Date
            p.Value = Me.dtpDOB1.Value
            prm.Add(p)
            p = new OleDbParameter()
            p.ParameterName = "d2"
            p.OleDbType = OleDbType.Date
            p.Value = Me.dtpDOB2.Value
            prm.Add(p)
       End If
    End If
End If

cmd.CommandText = sSQL
cmd.Parameters.AddRange(prm.ToArray())
da.SelectCommand = cmd
da.Fill(dt)
....