adoquery的问题

                            
Sqlserver2000+delphi5   
  Table:A   (mprod,mchld,mqty)  
    如:a   表有:               要得到另外一个表:  
        a     b       10                               a     b1     20  
        b     b1     20                               a     b21   100  
        b     b2     20                               c     b1     10  
        b2   b21   100  
        c     b1     10  
    我是先通过查询找出最终的产品,(a,c)放在Finalprod表中.  
  思路是针对每个最终产品进行查询,找到它的下一级就放到数组chidprods中,数量放在countcp中,在根据数组chidprods查找,不过在查询条件中含有chidprods时就出现错误了,而且好象还出现了死循环!请帮忙看一看,修改一下下面的程序!  
          with   adoquery1do  
          begin  
    close;  
    sql.add(‘select   fprod   from   finalprod’);  
              open;  
  if   recordcount>0   then  
      begin  
                      for   i:=1   to   recordcount   do  
                        begin  
                            linkcp:=1;  
                            linkbp:=1;  
                          adoquery2.sql.add(‘select   mchld,mqty   from   a,   finalprod   as   b   where   a.mprod=b.fprod’);  
                        adoquery2.open;    
                      FOR   K:=1   TO   adoquery2.recordcount   do  
                        begin  
                            chidprods[linkcp]:=   adoquery2.Fields.fieldbyname('mchld').asstring;  
                            countcp[linkcp]:=adoquery2.fields.fieldbyname('mqty').asfloat;  
                            linkcp:=linkcp+1;  
                      end;  
                      j:=1;  
                    WHILE   (j<LINKCP)   DO  
                      BEGIN  
                    adoquery2.close  
                    adoquery2.sql.clear;  
                    adoquery2.sql.add(‘select     mchld,mqty   from   a   where   a.mprod=chidprod(j))’);                                                  
                    adoquery2.open;      
                    if   adoquery2.recordcount=0   then   begin  
                      baseprod[linkbp]:=chidprods[j];  
                      countbp[linkbp]:=countcp[j];  
                      linkbp:=linkbp+1;  
                    end  
                  else  
                  begin  
                  for   k:=1   to   adoquery2.recordcount     do   begin  
                      chidprods[linkcp]:=adoquery2.fieldbyname('mchld').asstring;  
                  countcp[linkcp]:=adoquery2.fieldbyname('mqty').asfloat;  
                      linkcp:=linkcp+1;  
                  end;  
            end;  
  end;  
  adpquery2.close;  
  adoquery2.sql.clear;  
            for   k:=1   to   linkbp-1   DO  
              Begin  
                  bprod[k]:=adoquery1.fieldbyname('fprod').asstring;                     adoquery2.sql.add(‘insertintoend(epord,echld,eqty)values(bprod[k],baseprod[k],countbp[k])’)          
  adoquery2.open;  
              end;  
  end;  
  end;  
  end;  
   
     
   
   
   
   
   
   
 

查看回复