我想使用链接在一起的数据表或数据集建立一个如下所示的关系。
给出嵌套的物料清单/型号:
一个。使项目(A)包括(这是基础/孩子的孩子)
- 购买商品(aa)
- 购买商品(bb)
- 购买商品(cc)
醇>B中。使项目(B)包括(这是(A)的父项,(C)的子项)
- 购买商品(dd)
- 制作项目(A)
醇>℃。使项目(C)包括(这是(B)的父母和父母 - 父母(A))
- 制作项目(B)
醇>
在此示例中,层次结构深度为3个元素。在顶层,make item(C)的父 - >制作项目(B) - >制作物品(A),由没有孩子的购买物品组成。
我的目标是使用这些关系创建数据表或数据集。我创建了一个方法来遍历一个级别的元素,如果它包含一个make项,则再次调用自己将make项目作为父项传递。例如:
.
.
.
//iterate through parent, if child-element is make then get the bill of materials for the child.
DataTable CurLevelBOM; //has the current level bill of materials (C) above
DataSet Children = new DataSet();
foreach(DataRow BOMrow in CurLevelBOM){
if (BOMRow["Make"].ToString() = "Y"){
//Get the Bill of materials for this element
Children.Tables.Add(this.getChild(BOMrow).tables.thisLevelBom);
}
}
.
.
.
private DataSet getChild(DataRow ChildMakeItem){
DataSet DataSetToReturn = new DataSet();
DataSet Child = new DataSet();
DataTable thisLevelBom = BomTableAdapter.getdata(ChildMakeItem["Item"].ToString();
foreach(DataRow row in thisLevelBom){
if(row["Make"].ToString() == "Y"){
Child = getChild(row);
DataSetToReturn.Tables.Add(Child.Tables.thisLevelBom); //add this bom to
} else {
/// this row is not a make item and shouldn't get children
}
}
}
我被卡住了 - 我不确定DataSet是否可以有多个版本的同一个表 - 在这种情况下是一个物料清单。我也没有意识到使用(C)对象设置(B)项目与(A)项目之间关系的方法。
或者,如果你有不同的方法,我全都是耳朵:) TYIA。