用如下代码执行时,当执行到二十多条时就没响应了.   
    AdoQuery1.close;
    AdoQuery1.sql.Clear;
    AdoQuery1.sql.Add('select * from dezm');
    AdoQuery1.open;
    AdoQuery1.first;
    while not AdoQuery1.eof do
      begin
         xh:=AdoQuery1.fieldbyname('zmid').AsString;
         AdoQuery2.Close;
         AdoQuery2.SQL.Clear;
         AdoQuery2.SQL.Add('select * from dedj');
         AdoQuery2.SQL.Add('where zmid='+xh+'');
         AdoQuery2.Open;
         if not AdoQuery2.Eof then
           begin
             AdoQuery1.edit;
             AdoQuery1.fieldbyname('rg').AsFloat:=AdoQuery2.fieldbyname('rgf').AsFloat;
             AdoQuery1.fieldbyname('cl').AsFloat:=AdoQuery2.fieldbyname('clf').AsFloat;
             AdoQuery1.fieldbyname('jx').AsFloat:=AdoQuery2.fieldbyname('jxf').AsFloat;
             AdoQuery1.fieldbyname('jj').AsFloat:=AdoQuery2.fieldbyname('rgf').AsFloat+AdoQuery2.fieldbyname('clf').AsFloat+AdoQuery2.fieldbyname('jxf').AsFloat;
             AdoQuery1.post;
           end;
         AdoQuery1.next;
      end;

解决方案 »

  1.   

    AdoQuery1.close;
        AdoQuery1.sql.Clear;
        AdoQuery1.sql.Add('select * from dezm');
        AdoQuery1.open;
        AdoQuery1.first;
        while not AdoQuery1.eof do
          begin
             xh:=AdoQuery1.fieldbyname('zmid').AsString;
             AdoQuery2.Close;
             AdoQuery2.SQL.Clear;
             AdoQuery2.SQL.Add('select * from dedj');
             AdoQuery2.SQL.Add('where zmid='+xh+'');
             AdoQuery2.Open;
             if not AdoQuery2.Eof then
               begin
                 AdoQuery1.edit;
                 AdoQuery1.fieldbyname'rg').AsFloat:=AdoQuery2.fieldbyname'rgf').AsFloat;
    AdoQuery1.fieldbyname('cl').AsFloat:=AdoQuery2.fieldbyname('clf').AsFloat;
    AdoQuery1.fieldbyname('jx').AsFloat:=AdoQuery2.fieldbyname('jxf').AsFloat;
    AdoQuery1.fieldbyname'jj').AsFloat:=AdoQuery2.fieldbyname'rgf').AsFloat+AdoQuery2.fieldbyname('clf').AsFloat+AdoQuery2.fieldbyname('jxf').AsFloat;             AdoQuery1.post;
                 asoquery2.next;
               end;
             AdoQuery1.next;
          end;
      

  2.   

    少了一个adoquery2.next上面写错了,你改一下。
      

  3.   

    你上面的就能实现了将两个表合起来的目的吗?
    好像有问题吧,好像是把dedj表里的内容给了dezm,而不像你说的是合起来的。
      

  4.   

    我是要实现两个主从表合并为一个表,是将明细表dedj中的明细放在了dezm中后面的字段中
    我加了个adoQuery2.next还是不行.
      

  5.   

    AdoQuery1.close;
        AdoQuery1.sql.Clear;
        AdoQuery1.sql.Add('select * from dezm');
        AdoQuery1.open;
        AdoQuery1.first;
        while not AdoQuery1.eof do
          begin
             xh:=AdoQuery1.fieldbyname('zmid').AsString;
             AdoQuery2.Close;
             AdoQuery2.SQL.Clear;
             AdoQuery2.SQL.Add('select * from dedj');
             AdoQuery2.SQL.Add('where zmid='+xh+'');
             AdoQuery2.Open;
             adoquery2.first; 
             if not AdoQuery2.Eof then
               begin
                 AdoQuery1.edit;
                 AdoQuery1.fieldbyname'rg').AsFloat:=AdoQuery2.fieldbyname'rgf').AsFloat;
    AdoQuery1.fieldbyname('cl').AsFloat:=AdoQuery2.fieldbyname('clf').AsFloat;
    AdoQuery1.fieldbyname('jx').AsFloat:=AdoQuery2.fieldbyname('jxf').AsFloat;
    AdoQuery1.fieldbyname'jj').AsFloat:=AdoQuery2.fieldbyname'rgf').AsFloat+AdoQuery2.fieldbyname('clf').AsFloat+AdoQuery2.fieldbyname('jxf').AsFloat;             AdoQuery1.post;
                 asoquery2.next;
               end;
             AdoQuery1.next;
          end;
    你看是不是少个adoquery2.first;
      

  6.   

    加了adoquery2.first还是不行,如果在循环中加入showmessage('dd');点击一次执行一次就可以执行下去,去掉就不行,真不知为什么?
      

  7.   

    这是因为时间太长了!
    在执行1000条左右的时候加入
    Application.ProcessMessages;
      

  8.   

    一个语句执行的时间太长了!导致没有反应!!
    //测试的时候!一次添加10000条记录就会没有反应!
    Application.ProcessMessages;
    能够使程序继续执行
      

  9.   

    正如okgxs(一叶风铃)所说,在win2000任务栏中可看到状态总在 正在运行/未响应的切换中
      

  10.   

    在循环中加入application.processmessages,程序运行太慢了,不知还有什么好办法能解决
    主从表的合并例:
    表1  t1 t2 t3 t4 t5    表2 t3 t4 t5   合成表1 t1 t2 t3 t4 t5 
          a  b  c              c   d e             a  b  c  d  e
          a1 b1 c1             c1  d1 e1           a1 b1 c1 d1 e1
      

  11.   

    用一条SQL语句实现吧
    update table1 set t4=table2.t4,t5=talbe2.t5 from table2
    where table1.t3=table2.t3//注意不要出现多对多的情况,你的例子中没有对Adoquery2进行循环,应该没有这中情况吧。
      

  12.   

    update dezm1 set dezm1.rg=dedj1.rgf,dezm1.cl=dedj1.clf,dezm1.jx=dedj1.jxf
    from dedj1 where dezm1.zmid=dedj1.zmid
    上面语句怎会报错:
    [Microsoft][ODBC Visual FoxPro Driver]Command contains unrecognized phrase/keyword.
    是不是foxpro数据库不支持!