我已经在代码中声明了一个变量,但我对它仍然显示错误,任何想法仍然一无所知?
当我在显示每一行后删除WHERE clauses
,但是当我将其放入时,我会"Must declare the scalar variable @startdata"
。
connect()
cmd.CommandText = "SELECT h_initials, h_date, h_hours FROM [h_holidays] WHERE h_date >= @startdata AND h_date < @enddata "
cmd.Parameters.Clear()
cmd.Parameters.Add("@startdata", SqlDbType.DateTime).Value = datetime_date.Value
cmd.Parameters.Add("@enddata", SqlDbType.DateTime).Value = datetime_2.Value
cmd.ExecuteScalar()
Dim dataAdapter_holidays_all = New SqlDataAdapter(cmd.CommandText, con.ConnectionString)
Dim table_holidays_all As New DataTable()
table_holidays_all.Locale = System.Globalization.CultureInfo.InvariantCulture
dataAdapter_holidays_all.Fill(table_holidays_all)
Me.bs_holidays_all.DataSource = table_holidays_all
dgv_holidays_all.DataSource = bs_holidays_all
disconnect()
dgv_holidays_all.RowHeadersWidth = "28"
dgv_holidays_all.Columns(0).HeaderText = "User:"
dgv_holidays_all.Columns(1).HeaderText = "Date:"
dgv_holidays_all.Columns(2).HeaderText = "Hours:"
dgv_holidays_all.EnableHeadersVisualStyles = False
我已经尝试了.addwithvalue参数仍然没有运气。
答案 0 :(得分:1)
不,它没有被宣布。你的代码遍布整个地方。您首先创建一个SqlCommand
对象,向其添加参数并调用其ExecuteScalar
方法,但这没有任何意义,因为您正在检索多个值。然后,您使用相同的SQL创建SqlDataAdapter
,但不向其SelectCommand
添加任何参数。
您应该做的是创建SqlDataAdapter
,获取其SelectCommand
并向其添加参数,例如
Dim sql = "SELECT h_initials, h_date, h_hours FROM [h_holidays] WHERE h_date >= @startdata AND h_date < @enddata"
Dim adapter As New SqlDataAdapter(sql, con)
With adapter.SelectCommand.Parameters
.Add("@startdata", SqlDbType.DateTime).Value = datetime_date.Value
.Add("@enddata", SqlDbType.DateTime).Value = datetime_2.Value
End With
没有其他SqlCommand
个对象。没有毫无意义的电话ExecuteScalar
。