2015-12-23 9 views
1

У меня есть элемент управления datagrid, который я пытаюсь заполнить на основе SQL-запроса с параметрами, введенными на странице. Я продолжаю получать «должен объявить скалярную переменную @ epa1, так что я немного потерялся относительно того, куда идти. Код VB является:Должен объявить скалярную переменную - снова

 Dim DT As DataTable 
    Dim DS As New DataSet() 
    Dim conn As New SqlConnection("Data Source=azda-sql1a;Initial Catalog=pesticide;User ID=sa;[email protected]!n") 
    Dim cmd As New SqlCommand 
    Dim query As String 
    Dim DA As SqlDataAdapter 
    query = "select epa1, epa2, dist_nr as epa3, ai1, rei, rup from products where epa1 = @epa1 and epa2 = @epa2 and dist_nr = @epa3" 

    cmd.CommandType = CommandType.Text 
    cmd.CommandText = query 
    cmd.Connection = conn 
    cmd.Parameters.AddWithValue("@epa1", txtEPA1.Text) 
    cmd.Parameters.AddWithValue("@epa2", txtEPA2.Text) 
    cmd.Parameters.AddWithValue("@epa3", txtEPA3.Text) 
    '\search for pesticides based on epa numbers 
    'select BrandName,ActiveIngredient1 from NewProductsList where epa1=# and epa2=# and epa3=# 
    If Me.txtEPA1.Text = "" Or Me.txtEPA2.Text = "" Or Me.txtEPA3.Text = "" Then 
     Me.lblProductErrors.Text = "Please enter in all EPA numbers for accurate search, when in doubt enter Zero" 
    End If 
    cmd.Connection.Open() 
    DA = New SqlDataAdapter(query, conn) 

    DA.Fill(DS) 
    DT = DS.Tables(0) 
    conn.Close() 

Так я предполагаю, что на все 3 переменные, @ epa1, @ epa2 и @ epa3 не получаю объявлена, но, опять же, там они есть. Может ли кто-нибудь помочь? Спасибо, у вас есть хорошее Рождество!

ответ

3

Вы задаете параметры на своем Command, но вы используете query (без параметров) для инициализации DataAdapter.

Таким образом, вместо того, чтобы инициализировать ваш DataAdapter с запросом:

DA = New SqlDataAdapter(query, conn) 

инициализировать его с помощью команды (который уже имеет набор параметров):

DA = New SqlDataAdapter(cmd) 
Смежные вопросы