必须声明标量变量“@vendor”
Must declare the scalar variable "@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)">
“
有谁知道如何解决这个问题,我见过几个涉及标量的相同问题,none 已经解决,或者我无法将我的情况放在相同的上下文中。谢谢。
问题似乎是由于缺少 @vendor
参数声明引起的,正如 Juan Carlos Oropeza 在他的评论中所建议的那样。你拒绝了他的建议,但在分析代码后我得出了相同的结论,所以我决定 post 更具解释性的答案。
您在查询中使用了 @vendor
个参数,但只声明了 @VendorID
个参数(除非您在其他地方声明了其他参数)。
当您声明 ControlParameter
时,Name
属性 表示查询中使用的参数名称。在您 posted 的代码中,参数被命名为 VendorID
,因此该名称也应该用于查询中(附加的 @
字符表明它是参数的名称)。
尝试将查询的结尾更改为 WHERE [VendorID] = @VendorID
。
有关更多信息,请查看:
<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)"> “
有谁知道如何解决这个问题,我见过几个涉及标量的相同问题,none 已经解决,或者我无法将我的情况放在相同的上下文中。谢谢。
问题似乎是由于缺少 @vendor
参数声明引起的,正如 Juan Carlos Oropeza 在他的评论中所建议的那样。你拒绝了他的建议,但在分析代码后我得出了相同的结论,所以我决定 post 更具解释性的答案。
您在查询中使用了 @vendor
个参数,但只声明了 @VendorID
个参数(除非您在其他地方声明了其他参数)。
当您声明 ControlParameter
时,Name
属性 表示查询中使用的参数名称。在您 posted 的代码中,参数被命名为 VendorID
,因此该名称也应该用于查询中(附加的 @
字符表明它是参数的名称)。
尝试将查询的结尾更改为 WHERE [VendorID] = @VendorID
。
有关更多信息,请查看: