C# 将两个不同表中的相乘值相加,然后显示在DataGridView列中

C# 将两个不同表中的相乘值相加,然后显示在DataGridView列中,c#,ms-access,datagridview,C#,Ms Access,Datagridview,我的Access数据库中有三个表 Part (tbl name) PartNo UnitPrice Order(tbl name) OrderNo OrderLine (tbl name) OrderNo PartNo Quantity 基本上,我希望对OrderLine.PartNo=Part.PartNo和OrderLine.OrderNo=Order.OrderNo的所有订单行求和(按单价计算数量),并将值放入我创建并添加到数据网格视图中的列中,以便在订单表中动态创建小计 DataG

我的Access数据库中有三个表

Part (tbl name)
PartNo
UnitPrice

Order(tbl name)
OrderNo

OrderLine (tbl name)
OrderNo
PartNo
Quantity
基本上,我希望对OrderLine.PartNo=Part.PartNo和OrderLine.OrderNo=Order.OrderNo的所有订单行求和(按单价计算数量),并将值放入我创建并添加到数据网格视图中的列中,以便在订单表中动态创建小计

DataGridViewTextBoxColumn subtotalCol = new DataGridViewTextBoxColumn();
subtotalCol.Name = "SubtotalColumn";
subtotalCol.HeaderText = "Subtotal";
subtotalCol.ReadOnly = true;
dataGridViewPrevOrders.Columns.Add(subtotalCol);
到目前为止,这就是我所处的位置,但我认为我没有走上正确的道路

for (int i = 0; i < dataGridViewPrevOrders.RowCount - 1; i++)
{
    connection.Open();
    string orderNo = dataGridViewPrevOrders.Rows[i].Cells["OrderNo"].Value.ToString();
    command.CommandText = "SELECT SUM(OL.Quantity * P.UnitPrice) FROM OrderLine OL INNER JOIN (SELECT * FROM [Part]) P ON OL.[PartNo] = P.[PartNo] WHERE [OrderNo] = @OrderNo";
    command.Parameters.Add(new OleDbParameter("@orderNo", orderNo));
    OleDbDataReader reader = command.ExecuteReader();

    while (reader.Read())
    {
        dataGridViewPrevOrders.Rows[i].Cells["SubtotalColumn"].Value = reader["Sub"].ToString();
    }
    connection.Close();
}
for(int i=0;i
首先:请添加具体问题!这会导致例外吗?什么是不受欢迎的行为?请帮助我们帮助你

乍一看,我只能看到您必须将sql命令更正为:

SELECT SUM(P.UnitPrice * OL.Quantity) AS sumOfOrder FROM Part AS P 
INNER JOIN OrderLine AS OL ON P.[PartNo] = OL.[PartNo] 
WHERE OL.[OrderNo] = @OrderNo;

提示:关于您的代码,在我看来,您必须在某个地方有一个额外的SQL命令来将订单设置为dataGridViewPrevOrders。然后,您需要为每个订单执行一个额外的SQL命令来计算总和。最好使用一个巧妙的SQL SELECT命令查询数量和订单之和,将这两个查询组合在一起,只在一个循环中进行设置。

首先:请添加具体问题!这会导致例外吗?什么是不受欢迎的行为?请帮助我们帮助你

乍一看,我只能看到您必须将sql命令更正为:

SELECT SUM(P.UnitPrice * OL.Quantity) AS sumOfOrder FROM Part AS P 
INNER JOIN OrderLine AS OL ON P.[PartNo] = OL.[PartNo] 
WHERE OL.[OrderNo] = @OrderNo;
提示:关于您的代码,在我看来,您必须在某个地方有一个额外的SQL命令来将订单设置为dataGridViewPrevOrders。然后,您需要为每个订单执行一个额外的SQL命令来计算总和。最好使用一个聪明的SQL SELECT COMMAND查询数量和订单之和,将这两个查询组合在一起,只在一个循环中进行设置