我一直坚持这个错误,在vb.net中试图连接到SQL并在一天内从表中提取数据,使用参数来执行此操作,datetimepicker - 保存到SQL的数据是自定义日期时间格式dd / MM / yyyy HH:mm:ss,
当我执行我的代码时,我得到“必须声明标量变量”@startdata“。当我删除代码时”和startdate> = @startdata AND startdate< @enddata“它可以工作但显示所有数据没有日期范围。
connect()
cmd.Parameters.Clear()
cmd.CommandText = "SELECT status, startdate, seconds FROM [sqlccmlinestatus] WHERE line = '" & ComboBox1.Text & "' and startdate >= @startdata AND startdate < @enddata "
cmd.Parameters.AddWithValue("@startdata", DateTimePicker1.Value)
cmd.Parameters.AddWithValue("@enddata", DateTimePicker1.Value.AddDays(1))
cmd.ExecuteScalar()
Dim dataAdapter = New SqlDataAdapter(cmd.CommandText, con.ConnectionString)
Dim table As New DataTable()
table.Locale = System.Globalization.CultureInfo.InvariantCulture
dataAdapter.Fill(table)
Me.BindingSource1.DataSource = table
DataGridView1.DataSource = BindingSource1
disconnect()
DataGridView1.RowHeadersWidth = "28"
DataGridView1.Columns(0).Width = 78
DataGridView1.Columns(1).Width = 78
DataGridView1.Columns(2).Width = 95
DataGridView1.Columns(0).HeaderText = "Status:"
DataGridView1.Columns(1).HeaderText = "Date:"
DataGridView1.Columns(2).HeaderText = "Seconds:"
DataGridView1.EnableHeadersVisualStyles = False
DataGridView1.Rows(0).Selected = True
任何帮助都会很棒,
非常感谢, 皮特
答案 0 :(得分:0)
首先避免line = '" & ComboBox1.Text & "'
。改为添加一个新参数(这是一个建议,这不是导致错误的原因)。
第二步添加DatePicker值的Date
部分
cmd.CommandText = "SELECT status, startdate, seconds FROM [sqlccmlinestatus] WHERE [line] = @line and startdate >= @startdata AND startdate < @enddata "
cmd.Parameters.AddWithValue("@startdata", DateTimePicker1.Value.Date)
cmd.Parameters.AddWithValue("@line", ComboBox1.Text)
cmd.Parameters.AddWithValue("@enddata", DateTimePicker1.Value.Date.AddDays(1))
如果你只想检查日期部分,这是有效的。
更好的方法是声明参数的类型并赋值
cmd.Parameters.Add("@startdata",SqlDbType.DateTime).Value=DateTimePicker1.Value;
如果line
参数不起作用,请尝试使用组合框的SelectedText属性
而不是Text
属性。