procedure TForm1.Button2Click(Sender: TObject);   var
name01:string;
ste01:integer;
lnfen1:integer;
lnfen2:integer;
lx1:string;
kzb01:string;
kzb02:string;
ktk01:integer;
ktk02:integer;
kzb701:string;
kzb702:string;
kzb703:string;
kzb704:string;
ktk701:integer;
ktk702:integer;
begin       begin
       adotable2.First;
       while not adotable2.eof do begin
       lx1:=adotable2.fieldbyname('leixin').AsString;
       adotable2.edit;
       adotable2.Post;
       adoquery2.Close;
       adoquery2.SQL.Clear;
       adoquery2.sql.add('select count(t11) as lnfen2 from tk where t11 like ''%'+lx1+'%''');
       adoquery2.Open;
       lnfen2:=adoquery2.fieldbyname('lnfen2').asinteger;
       adotable2.Edit;
       adotable2.fieldbyname('yti').asinteger:=lnfen2;
       adotable2.Next;
       end;
       end;       begin
       adotable3.First;
       while not adotable3.Eof do begin
       adotable3.open;
       adotable3.edit;
       kzb01:=adotable3.fieldbyname('zhibiao').asstring;
       kzb02:=adotable3.fieldbyname('leixin').asstring;
       adoquery2.Close;
       adoquery2.SQL.Clear;
       adoquery2.sql.add('select count(t13) as ktk01 from tk where t13 like ''%'+kzb01+'%''and t11 like ''%'+kzb02+'%''');
       adoquery2.Open;
       ktk01:=adoquery2.fieldbyname('ktk01').asinteger;
       adotable3.Edit;
       adotable3.FieldByName('yts').asinteger:=ktk01;
       adotable3.Next;
       end;
       end;
       begin
       adotable4.First;
       while not adotable4.Eof do begin
       adotable4.open;
       adotable4.edit;
       kzb701:=adotable4.fieldbyname('zhibiao').asstring;
       kzb702:=adotable4.fieldbyname('leixin').asstring;
       kzb703:=adotable4.fieldbyname('nandu').asstring;
       kzb704:=pchar(kzb703);
       adoquery2.Close;
       adoquery2.SQL.Clear;
       adoquery2.sql.add('select count(t13) as ktk701 from tk where t13 like ''%'+kzb701+'%''and t11 like ''%'+kzb702+'%'' and t12 like ''%'+kzb704+'%'' ');
       adoquery2.Open;
       ktk701:=adoquery2.fieldbyname('ktk701').asinteger;
       adotable4.Edit;
       adotable4.FieldByName('yts').asinteger:=ktk701;
       adotable4.Next;
       end;
       end;end;
end.

解决方案 »

  1.   

    你这样一定会慢的,如此循环,你更新第一个表就可以用这样的语句,其他两个也是如此,
    速度会快
    update table2 set lnfen2=(select count(*) from tk where t11 like 
    '%table2.leixin%')
      

  2.   

    你能不能说的仔细一点啊。我每次查询统计的条件不是唯一的。更新表是不是只用一ADOTABLE,TW—CSHN你帮我一下大哥???
      

  3.   

    我的意思就是说你不要一个记录一个记录的更新,就用一条语句,你的
    adotable2 表字段leixin的数据在tk 的 t11对应的 
    你就可以根据我上面写的进行更新
      

  4.   

    给你看看你就明白了,这是在oracle下的
    SQL> create table c1 (id number,lx varchar(2),sumc number);
    表已创建。
    SQL> create table c2 (id number,lx varchar(2));
    表已创建。
    SQL> insert into c1 values(1,'ab',null);
    已创建 1 行。
    SQL> insert into c1 values(2,'cd',null);
    已创建 1 行。
    SQL> insert into c2 values(1,'a');
    已创建 1 行。
    SQL> insert into c2 values(2,'b');
    已创建 1 行。
    SQL> insert into c2 values(3,'c');
    已创建 1 行。
    SQL> insert into c2 values(4,'d');
    已创建 1 行。
    SQL> commit;提交完成。SQL> update c1 set sumc=(select count(*) from c2 where instr(c1.lx,lx)>0);已更新2行。SQL> select * from c1;        ID LX       SUMC
    ---------- -- ----------
             1 ab          2
             2 cd          2
      

  5.   

    我不懂ORACE呀我用的是ADO  ACCESS呀。真的不知道怎么办很着急??
    大哥你就帮人帮到底,
    帮我用DELPHI试一下????
      

  6.   

    那你把你的代码发过来,还有mdb
    [email protected]
      

  7.   

    我的MDB太大了,有12mb之多项
    你有没有QQ: