//数据库结构如下,目的想把MainID下的(子子……)级全部列出
MainID(主件),ChildID(子件)
1 11
1 22
1 33
11 1101
1101 110101
1101 110102//主方法如下-------------------------------------
procedure GetBOMChild(ParentID:string; out mResultList:TStringList);
var mSQL,mFields:string;
mChild:string;
i:integer;
mReturnData:variant;
begin
try
QryMain.Close;
QryMain.SQL.clear;
mSQL:='SELECT ChildID FROM T_BOM WHERE MainID='+QuotedStr(ParentID);
QryMain.SQL.Add(mSQL);
QryMain.Open;
except
ShowMessage('获得主件品号['+ParentID+']的子件品号时发生错误!')
end;
QryMain.First;
while not QryMain.Eof do
begin
mChild := QryMain.FindField('ChildID').AsString;
▲▲▲ShowMessage(mChild); //这里显示结果!!!!!!但结果只Show出 11,1101,110101(均只显示了其ChildID中的第一条,没有遍历完.)
GetBOMChild(mChild,mResultList);//这里递归!!!!!!!!!!!!!
QryMain.Next;
end;
end;//调用方法如下-------------------------------------
procedure Button1Click(Sender: TObject);
var mChildList:TStringList;
i:integer;
begin
inherited;
if FBOMChild = nil then
FBOMChild:=TStringList.Create
else
FBOMChild.Clear;
GetBOMChild('1',FBOMChild);
FBOMChild.Free;
end;
//结果-------------------------------------------
▲▲▲标记处 只Show出 11,1101,110101(均只显示了其ChildID中的第一条,没有遍历完.)
MainID(主件),ChildID(子件)
1 11
1 22
1 33
11 1101
1101 110101
1101 110102//主方法如下-------------------------------------
procedure GetBOMChild(ParentID:string; out mResultList:TStringList);
var mSQL,mFields:string;
mChild:string;
i:integer;
mReturnData:variant;
begin
try
QryMain.Close;
QryMain.SQL.clear;
mSQL:='SELECT ChildID FROM T_BOM WHERE MainID='+QuotedStr(ParentID);
QryMain.SQL.Add(mSQL);
QryMain.Open;
except
ShowMessage('获得主件品号['+ParentID+']的子件品号时发生错误!')
end;
QryMain.First;
while not QryMain.Eof do
begin
mChild := QryMain.FindField('ChildID').AsString;
▲▲▲ShowMessage(mChild); //这里显示结果!!!!!!但结果只Show出 11,1101,110101(均只显示了其ChildID中的第一条,没有遍历完.)
GetBOMChild(mChild,mResultList);//这里递归!!!!!!!!!!!!!
QryMain.Next;
end;
end;//调用方法如下-------------------------------------
procedure Button1Click(Sender: TObject);
var mChildList:TStringList;
i:integer;
begin
inherited;
if FBOMChild = nil then
FBOMChild:=TStringList.Create
else
FBOMChild.Clear;
GetBOMChild('1',FBOMChild);
FBOMChild.Free;
end;
//结果-------------------------------------------
▲▲▲标记处 只Show出 11,1101,110101(均只显示了其ChildID中的第一条,没有遍历完.)
procedure GetBOMChild(ParentID:string; out mResultList:TStringList);
var mSQL,mFields:string;
mChild:string;
i:integer;
mReturnData:variant;
QryMain :Tadoqurey;
begin
try
QryMain:=Tadoqurey.create(nil);
QryMain.connection :=
QryMain.SQL.clear;
....