必须声明Scalar变量

时间:2014-10-23 07:16:33

标签: mysql vb.net visual-studio-2010

我一直坚持这个错误,在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

任何帮助都会很棒,

非常感谢, 皮特

1 个答案:

答案 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属性。