必须声明标量变量" @ vendor"

时间:2017-04-07 18:32:24

标签: sql asp.net sqldatasource scalar controlparameter

    <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%我的错误来自第一行代码的结尾&#34; WHERE([VendorID] = @ vendor.VendorID)&#34;&gt;         &#34;

有谁知道如何解决这个问题,我已经看到了几个涉及标量的相同问题,没有一个已经修复,或者我无法在相同的环境中抛出我的情况。谢谢。

1 个答案:

答案 0 :(得分:3)

似乎问题是由于缺少@vendor参数声明引起的,正如Juan Carlos Oropeza在评论中所说的那样。你拒绝了他的建议,但在分析了代码后我得出了相同的结论,所以我决定发表更多的解释性答案。

您在查询中使用了@vendor参数,但仅声明了@VendorID参数(除非您在其他地方声明了其他参数)。

当您声明ControlParameter时,Name属性指示查询中使用的参数的名称。在您发布的代码中,参数名为VendorID,因此该名称也应在查询中使用(附加@字符表示它是参数的名称)。

尝试将查询结尾更改为WHERE [VendorID] = @VendorID

有关详细信息,请查看: