Должен объявить скалярную переменную "@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,

Для получения дополнительной информации взгляните на:

Другие вопросы по тегам