2015-08-31 7 views
0

Пожалуйста, помогите мне с этой проблемой, я искал пару часов и не могу ее решить.Должен объявить скалярную переменную (SQL)

Вот мой код:

Private Sub search_btn_Click(sender As Object, e As EventArgs) Handles search_btn.Click 
    connectionString = "Data Source=MININT-BJDM4MI;AttachDbFilename=C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\QCDB.mdf;Database=QCDB;Trusted_Connection=Yes;" 
    sql = "SELECT * FROM PRODUCT WHERE SAMPLE_SOURCE = @SOURCE" 

    Dim connection As New SqlConnection(connectionString) 
    Dim dataadapter As New SqlDataAdapter(sql, connection) 
    Dim ds As New System.Data.DataSet() 
    Dim cmd = New SqlCommand(sql, connection) 

    cmd.Parameters.AddWithValue("@SOURCE", spl_source_combox.Text) 

    Try 
     connection.Open() 
     dataadapter.Fill(ds, "PRODUCT") 
     DataGridView1.Refresh() 
     cmd.ExecuteNonQuery() 
     connection.Close() 
     DataGridView1.DataSource = ds.Tables(0) 
    Catch ex As Exception 
     MessageBox.Show(ex.ToString) 
    End Try 
End Sub 

ответ

0

При создании SqlDataAdapter, вы должны передать свой объект команды вместо строки SQL.

Private Sub search_btn_Click(sender As Object, e As EventArgs) Handles search_btn.Click 
connectionString = "Data Source=MININT-BJDM4MI;AttachDbFilename=C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\QCDB.mdf;Database=QCDB;Trusted_Connection=Yes;" 
sql = "SELECT * FROM PRODUCT WHERE SAMPLE_SOURCE = @SOURCE" 

Dim connection As New SqlConnection(connectionString) 
Dim cmd = New SqlCommand(sql, connection) 
Dim dataadapter As New SqlDataAdapter(cmd) 
Dim ds As New System.Data.DataSet() 

cmd.Parameters.AddWithValue("@SOURCE", spl_source_combox.Text) 

Try 
    connection.Open() 
    dataadapter.Fill(ds, "PRODUCT") 
    DataGridView1.Refresh() 
    connection.Close() 
    DataGridView1.DataSource = ds.Tables(0) 
Catch ex As Exception 
    MessageBox.Show(ex.ToString) 
End Try 
End Sub 
+0

Большое вам спасибо! Вы спасли мою жизнь! Оно работает –

0

Было бы еще лучше, хотя, если вы использовали хранимую процедуру, а не передать SQL в коде, но причина для исключения происходит потому, что @SOURCE переменная не объявлена ​​в вашей инструкции SQL. Попробуйте это:

sql = "DECLARE @SOURCE varchar(50);SELECT * FROM PRODUCT WHERE SAMPLE_SOURCE = @SOURCE"

+0

Это не решает. Переменная должна быть установлена ​​в коде vb. – aadi

+0

Да, переменная установлена ​​в коде vb, но объявлена ​​в коде SQL – shekky

0

Вам необходимо присвоить значение вашей @source: Используйте эту строку

cmd.Parameters.AddWithValue("@SOURCE", spl_source_combox.Text) = "<Your Value>" 
Смежные вопросы