使用vb.net选择基于访问日期格式的查询

时间:2015-07-14 18:12:15

标签: vb.net ms-access-2007

我想从两个日期之间的数据库中获取数据。

代码:

 con1.Open()
    Dim re As String = ""
    Dim d1 As DateTime = DateTimePicker2.Value.ToString("dd/MM/yyyy")
    Dim d2 As DateTime = DateTimePicker3.Value.ToString("dd/MM/yyyy")
    Dim cmd As New OleDbCommand("Select lno,pname,mdue,ramt from Due where ddate >= '" + Convert.ToDateTime(d1) + "' and ddate<= '" + Convert.ToDateTime(d2) + "' and ramt='0'", con1)
    Dim da As OleDbDataReader = cmd.ExecuteReader
    While (da.Read())

        re = re & "  " & da("lno").ToString.PadRight(30) & " " & da("pname").ToString.PadLeft(10) & "  " & da("mdue").ToString.PadLeft(10) & Chr(13)
    End While

我收到数据类型不匹配错误。日期的数据类型仅为Date/Time

1 个答案:

答案 0 :(得分:0)

在分配给DateTime变量之前,您正在转换为字符串!

尝试

con1.Open()
Dim re As String = ""
Dim d1 As DateTime = DateTimePicker2.Value
Dim d2 As DateTime = DateTimePicker3.Value
Dim cmd As New OleDbCommand("Select lno,pname,mdue,ramt from Due where ddate >= #" & String.Format("{0:dd/MM/yyyy}", d1) & "# and ddate<= #" & String.Format("{0:dd/MM/yyyy}", d2) & "# and ramt='0'", con1)
Dim da As OleDbDataReader = cmd.ExecuteReader
While (da.Read())
    re = re & "  " & da("lno").ToString.PadRight(30) & " " & da("pname").ToString.PadLeft(10) & "  " & da("mdue").ToString.PadLeft(10) & Chr(13)
End While

您还应该使用&作为连接运算符... https://msdn.microsoft.com/en-us/library/te2585xw.aspx