在vb.net中选择两个日期之间的记录会导致错误操作数类型冲突
我需要从表Tr_cashbook中选择两个日期之间的一些记录。日期字段是newdt,我需要在其中比较数据,记录应该显示在名为rptCash2的crystal report中。newdt字段具有datetime属性。这是命令按钮上的代码在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)&
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"