2016-03-15 3 views
1
st = "SELECT YearLevel FROM Students WHERE StudentID = " & txtStudentID.Text 
    da = New OleDbDataAdapter(st, conn) 
    da.Fill(ds, "Students") 
    YearLevel = ds.Tables("Students").Rows(0).Item("YearLevel") 

    st1 = "SELECT TuitionFee, BookFee, MiscellaneousFee, OtherFee FROM Expenses WHERE YearLevel = " & YearLevel 

    da1 = New OleDbDataAdapter(st1, conn) 
    da1.Fill(ds1, "Expenses") 

Итак, у меня есть этот код, тогда у меня есть ошибка отсутствия оператора в моем втором запросе, что может быть возможным решением?Присоединение к двум таблицам

+0

Какова ценность 'YearLevel'? Не могли бы вы добавить окно сообщения, чтобы узнать, что это за значение? –

+0

Значение «Grade 1» – silentstorm21

ответ

0

Вы получаете эту ошибку, потому что значение для YearLevel составляет Grade 1, и это необходимо избегать в кавычках. Таким образом, фактический запрос, который вы хотите, чтобы ваше RDBMS выполнить, вероятно, выглядит примерно так:

SELECT TuitionFee, BookFee, MiscellaneousFee, OtherFee 
FROM Expenses 
WHERE YearLevel = 'Grade 1' 

Вы можете добавить кавычки непосредственно в строке st1, но это может оставить дверь открытой для инъекции SQL. Вот безопасный способ идти об этом:

MyCommand = New SqlCommand("SELECT TuitionFee, BookFee, MiscellaneousFee, OtherFee FROM Expenses WHERE YearLevel = @YearLevel", conn) 
MyCommand.Parameters.AddWithValue("@YearLevel", YearLevel) 

VB.net должен чувствовать, что параметр имеет тип характера, и автоматически избежать его в кавычки для вас.

+0

Я хотел сначала вызвать YearlLevel из другой таблицы, чтобы он соответствовал YearLevel в другой таблице. – silentstorm21

+0

Логика, которую вы используете, кажется прекрасной, но я думаю, что синтаксис выключен. Попробуйте мой ответ и сообщите мне, если это сработает. –

+0

Я попытался использовать ваш код. Но он не будет подключаться к другому запросу, который я использовал – silentstorm21

Смежные вопросы