在vb.net中选择两个日期之间的记录会导致错误操作数类型冲突

在vb.net中选择两个日期之间的记录会导致错误操作数类型冲突,vb.net,sql-server-2008,crystal-reports,Vb.net,Sql Server 2008,Crystal Reports,我需要从表Tr_cashbook中选择两个日期之间的一些记录。日期字段是newdt,我需要在其中比较数据,记录应该显示在名为rptCash2的crystal report中。newdt字段具有datetime属性。这是命令按钮上的代码 bdcon.Open() Dim QueryString As String QueryString = "Select * from Tr_Cashbook where (Cast(newdt as date)&

我需要从表Tr_cashbook中选择两个日期之间的一些记录。日期字段是newdt,我需要在其中比较数据,记录应该显示在名为rptCash2的crystal report中。newdt字段具有datetime属性。这是命令按钮上的代码

    bdcon.Open()

    Dim QueryString As String
                QueryString = "Select * from Tr_Cashbook where (Cast(newdt as date)>=  " & DateTimePicker1.Value.ToString("yyyy-MM-dd") & ") and (Cast(newdt as date) <= " & DateTimePicker2.Value.ToString("yyyy-MM-dd") & ")"

    Dim Adapter As SqlDataAdapter = New SqlDataAdapter(QueryString, bdcon)
    Dim ds As DataSet = New DataSet()
    Adapter.Fill(ds, "Tr_Cashbook")

    rptCash2.Load()
    rptCash2.SetDataSource(ds)
    CrystalReportViewer1.ReportSource = rptCash2

  bdcon.Close()
bdcon.Open()
模糊查询字符串作为字符串

QueryString=“Select*from Tr_Cashbook where(Cast(newdt as date)>=”&DateTimePicker1.Value.ToString(“yyyy-MM-dd”)&)和(Cast(newdt as date)使用
参数,而不是硬编码的sql字符串

您的参数化查询应该是:

 QueryString = "Select * from Tr_Cashbook where newdt>=@date1 and 
     newdt<= @date2"

 Dim Cmd as new SqlCommand(QueryString,bdcon)
 Cmd.Parameters.Add("@date1",SqlDbType.Date).Value=DateTimePicker1.Value
 Cmd.Parameters.Add("@date2",SqlDbType.Date).Value=DateTimePicker2.Value

 Dim Adapter As SqlDataAdapter = New SqlDataAdapter(Cmd)
 Dim ds As DataSet = New DataSet()
 Adapter.Fill(ds, "Tr_Cashbook")

仍不工作。显示相同错误。操作数类型冲突:日期与不兼容int@user1059908-newdate的字段数据类型是什么?现在它给出了错误“必须声明标量变量”@date1@user1059908-请遵循我粘贴的代码。如果您可以编辑您的帖子,请在其中添加当前/工作代码。
QueryString = "Select * from Tr_Cashbook where newdate BETWEEN  @date1 AND @date2"