不需要控制过滤
this.dsDep = new DataSet("TP_部门生产计划");
DepLogic dep=new DepLogic ();
//第一节
dt1=dep.GetOneDep (strSql).Tables [0];
//select 物料编码,物料名称,'('||行程顺序号||')'||行程名称 行程,行程编码, sum(数量) 数量 from TP_部门生产计划表  group by 物料编码,物料名称,行程编码,行程名称,行程顺序号
//第二节
dt2=dep.GetTwoDep (strSql).Tables [0];
//select 物料编码,物料名称,'('||行程顺序号||')'||行程名称 行程,行程编码,sum(数量) 数量,需求日期 from TP_部门生产计划表  group by 物料编码,物料名称,行程编码,行程名称,行程顺序号,需求日期
//第三节
//select * from TP_部门生产计划表
dt3=dep.GetThreeDep (strSql).Tables [0];

dt1.TableName ="部门计划";
dt2.TableName ="按日期分类的部门计划";
dt3.TableName ="详细的部门计划";
            
dsDep.Tables .Add (dt1.Copy ());
dsDep.Tables .Add (dt2.Copy ());
dsDep.Tables .Add (dt3.Copy ());

DataColumn []dc1={dsDep.Tables[0].Columns ["物料编码"],dsDep.Tables[0].Columns ["行程编码"],dsDep.Tables[0].Columns ["物料名称"],dsDep.Tables[0].Columns ["行程"]};
DataColumn []dc2={dsDep.Tables[1].Columns ["物料编码"],dsDep.Tables[1].Columns ["行程编码"],dsDep.Tables[1].Columns ["物料名称"],dsDep.Tables[1].Columns ["行程"]};
DataColumn []dcn1={dsDep.Tables[1].Columns ["物料编码"],dsDep.Tables[1].Columns ["行程编码"],dsDep.Tables[1].Columns ["物料名称"],dsDep.Tables[1].Columns ["行程"],dsDep.Tables[1].Columns ["需求日期"]};
DataColumn []dcn2={dsDep.Tables[2].Columns ["物料编码"],dsDep.Tables[2].Columns ["行程编码"],dsDep.Tables[2].Columns ["物料名称"],dsDep.Tables[2].Columns ["行程"],dsDep.Tables[2].Columns ["需求日期"]}; dsDep.Relations .Add ("按日期分类部门计划信息",dc1,dc2);
dsDep.Relations .Add ("按批号分类详细物料信息",dcn1,dcn2);

解决方案 »

  1.   

    DataRelation 的主要功能之一是允许您在 DataSet 中从一个 DataTable 导航至另一个 DataTable。它使您能够在给定相关 DataTable 中的单个 DataRow 的情况下检索一个 DataTable 中的所有相关 DataRow 对象。例如,当建立客户表和订单表之间的 DataRelation 后,可以使用 DataRow.GetChildRows 检索特定客户行的所有订单行。以下代码示例创建 DataSet 中 Customers 表和 Orders 表之间的 DataRelation,并返回每个客户的所有订单。
    [C#]
    DataRelation custOrderRel = custDS.Relations.Add("CustOrders",
                         custDS.Tables["Customers"].Columns["CustomerID"],
                         custDS.Tables["Orders"].Columns["CustomerID"]);
    foreach (DataRow custRow in custDS.Tables["Customers"].Rows)
    {
      Console.WriteLine(custRow["CustomerID"]);
      foreach (DataRow orderRow in custRow.GetChildRows(custOrderRel))
        Console.WriteLine(orderRow["OrderID"]);
    }