Должен объявить скалярную переменную "@vendor"
<asp:SqlDataSource ID="SqlDataSource3" runat="server" ConnectionString="<%$ ConnectionStrings:IS315Database1ConnectionString %>" SelectCommand="SELECT Category.CategoryName, Product.ProductName, Product.ProductPrice, Product.ProductID, vendor.VendorID, vendor.VendorName FROM vendor INNER JOIN Product ON vendor.VendorID = Product.VendorID INNER JOIN Category ON Product.CategoryID = Category.CategoryID WHERE ([VendorID] = @vendor.VendorID)">
<SelectParameters>
<asp:ControlParameter ControlID="DropDownList1" Name="VendorID" PropertyName="SelectedValue" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
Так что я почти на 100%, моя ошибка исходит от конца первой строки кода "WHERE ([VendorID] = @vendor.VendorID)"> "
Кто-нибудь знает, как это исправить, я видел пару одинаковых вопросов, касающихся скаляров, ни один из них не был исправлен, или я не смог бросить свою ситуацию в том же контексте. Спасибо.
1 ответ
Кажется, что проблема вызвана отсутствием @vendor
Объявление параметров, как предложил Хуан Карлос Оропеза в своем комментарии. Вы отклонили его предложение, но после анализа кода я пришел к такому же выводу, поэтому решил опубликовать более объяснительный ответ.
Ты использовал @vendor
параметр в запросе, но только объявленный @VendorID
параметр (если вы не объявите другие параметры где-то еще).
Когда вы заявляете ControlParameter
, Name
свойство указывает имя параметра, используемого в запросе. В размещенном вами коде параметр называется VendorID
, так что это имя следует использовать и в запросе (с дополнительным @
символ, который указывает, что это имя параметра).
Попробуйте изменить конец запроса на WHERE [VendorID] = @VendorID
,
Для получения дополнительной информации взгляните на: