2011-11-10 1 views
0

한 번만 계산하면 (수량 * 가격)이 문제가 발생합니다. 전체 FROM ShoppingCart로 총 항목의 합계를 표시 할 수있었습니다. 사용자는 구입하지만 업데이트하거나 열을 삭제하고 내가 그것을 업데이트 할 때 바로이 오류를 나에게 내가 여기에 코드를 제공합니다키워드 'WHERE'근처에 구문이 잘못되었습니다. 총계에 대한 변수를 한 번 추가했습니다.

" ''키워드 근처의 구문이 잘못되었습니다"알 수 없다 :

<asp:GridView ID="GridView2" runat="server" AllowPaging="True" 
        AutoGenerateColumns="False" CellPadding="4" 
        DataSourceID="SqlDataSource2" ForeColor="#333333" GridLines="None" 
        AllowSorting="True"> 
        <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> 
        <RowStyle BackColor="#EFF3FB" /> 
        <Columns> 
         <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" /> 
         <asp:BoundField DataField="ProductID" HeaderText="ProductID" 
          SortExpression="ProductID" /> 
         <asp:BoundField DataField="UserName" HeaderText="UserName" 
          SortExpression="UserName" /> 
         <asp:BoundField DataField="InsertDate" HeaderText="InsertDate" 
          SortExpression="InsertDate" /> 
         <asp:BoundField DataField="Quantity" HeaderText="Quantity" 
          SortExpression="Quantity" /> 
         <asp:BoundField DataField="Price" HeaderText="Price" 
          SortExpression="Price" /> 
         <asp:BoundField DataField="OrderID" HeaderText="OrderID" 
          SortExpression="OrderID" /> 
         <asp:BoundField DataField="Total" HeaderText="Total" 
          SortExpression="Total" /> 
        </Columns> 
        <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" /> 
        <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" /> 
        <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> 
        <EditRowStyle BackColor="#2461BF" /> 
        <AlternatingRowStyle BackColor="White" /> 
       </asp:GridView> 
       <asp:SqlDataSource ID="SqlDataSource2" runat="server" 
        ConflictDetection="CompareAllValues" 
        ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
        DeleteCommand="DELETE FROM [ShoppingCart] WHERE [CartID] = @original_CartID AND [ProductID] = @original_ProductID AND [UserName] = @original_UserName AND [InsertDate] = @original_InsertDate AND [Quantity] = @original_Quantity AND [Price] = @original_Price AND [OrderID] = @original_OrderID AND [Total]= @original_Total" 
        InsertCommand="INSERT INTO [ShoppingCart] ([ProductID], [UserName], [InsertDate], [Quantity], [Price], [OrderID], [Total]) VALUES (@ProductID, @UserName, @InsertDate, @Quantity, @Price, @OrderID, @Total)" 
        OldValuesParameterFormatString="original_{0}" 
        SelectCommand="SELECT [ProductID], [UserName], [InsertDate], [Quantity], [Price], [OrderID], (Quantity * Price) As Total FROM [ShoppingCart]" 


        UpdateCommand="UPDATE [ShoppingCart] SET [ProductID] = @ProductID, [UserName] = @UserName, [InsertDate] = @InsertDate, [Quantity] = @Quantity, [Price] = @Price, [OrderID] = @OrderID, [Total]= @Total, WHERE [CartID] = @original_CartID AND [ProductID] = @original_ProductID AND [UserName] = @original_UserName AND [InsertDate] = @original_InsertDate AND [Quantity] = @original_Quantity AND [Price] = @original_Price AND [OrderID] = @original_OrderID AND [Total]= @Total"> 
        <DeleteParameters> 
         <asp:Parameter Name="original_CartID" Type="Int32" /> 
         <asp:Parameter Name="original_ProductID" Type="Int32" /> 
         <asp:Parameter Name="original_UserName" Type="String" /> 
         <asp:Parameter Name="original_InsertDate" Type="DateTime" /> 
         <asp:Parameter Name="original_Quantity" Type="Int32" /> 
         <asp:Parameter Name="original_Price" Type="Decimal" /> 
         <asp:Parameter Name="original_OrderID" Type="Int32" /> 
         <asp:Parameter Name="original_Total" Type="Decimal" /> 
        </DeleteParameters> 
        <InsertParameters> 
         <asp:Parameter Name="ProductID" /> 
         <asp:Parameter Name="UserName" /> 
         <asp:Parameter Name="InsertDate" /> 
         <asp:Parameter Name="Quantity" /> 
         <asp:Parameter Name="Price" /> 
         <asp:Parameter Name="OrderID" /> 
         <asp:Parameter Name="Total" /> 
        </InsertParameters> 
        <UpdateParameters> 
         <asp:Parameter Name="ProductID" Type="Int32" /> 
         <asp:Parameter Name="UserName" Type="String" /> 
         <asp:Parameter Name="InsertDate" Type="DateTime" /> 
         <asp:Parameter Name="Quantity" Type="Int32" /> 
         <asp:Parameter Name="Price" Type="Decimal" /> 
         <asp:Parameter Name="OrderID" Type="Int32" /> 
         <asp:Parameter Name="Total" Type="Decimal" /> 
         <asp:Parameter Name="original_CartID" Type="Int32" /> 
         <asp:Parameter Name="original_ProductID" Type="Int32" /> 
         <asp:Parameter Name="original_UserName" Type="String" /> 
         <asp:Parameter Name="original_InsertDate" Type="DateTime" /> 
         <asp:Parameter Name="original_Quantity" Type="Int32" /> 
         <asp:Parameter Name="original_Price" Type="Decimal" /> 
         <asp:Parameter Name="original_OrderID" Type="Int32" /> 
         <asp:Parameter Name="original_Total" Type="Decimal" /> 
        </UpdateParameters> 
       </asp:SqlDataSource> 

안내에 따라 오류 메시지의 의미를 알 수 없습니다.이 메시지는 장바구니에서 업데이트 또는 삭제할 수있는 관리자를위한 것입니다.

쿼리 THER에서

 

UpdateCommand="UPDATE [ShoppingCart] SET [ProductID] = @ProductID, [UserName] = @UserName, [InsertDate] = @InsertDate, [Quantity] = @Quantity, [Price] = @Price, [OrderID] = @OrderID, [Total]= @Total, WHERE [CartID] = @original_CartID AND [ProductID] = @original_ProductID AND [UserName] = @original_UserName AND [InsertDate] = @original_InsertDate AND [Quantity] = @original_Quantity AND [Price] = @original_Price AND [OrderID] = @original_OrderID AND [Total]= @Total"> 
 

가 이 찾을 WHERE 전에 쉼표하여 업데이트 명령

+1

ISN 거기에 여분의 쉼표가 없을 때'... [Total] = @Total, Where? –

+1

@AlexK. 왜 당신은 대답으로 그걸 넣지 않았습니까? –

+0

그 다른 하나를 지금 보여주는 잘못된 열 이름 'Total'.what 그것이 총 수량을 표시 할 수 있기 때문에 총 열 이름으로 대체 할 수 있습니다. 총을 표시 할 수 있지만 수량 열을 편집 할 때 이런 식으로 나타납니다. .. –

답변

1

문제,

[전체] = @Total, [CartID] = @original_CartID