while not adoQuery.Eof do
    begin
      strsql1 :='update pay_table set paysuccess=0 where diskno=50';
      wclbs:=wclbs+1;
      wclje:=wclje+adoQuery['paymoney'];
    end;
    qrMain_k2.Close;
    qrMain_k2.Sql.Clear;
    qrMain_k2.Sql.add(strsql1);
    try
      qrMain_k2.ExecSql;
    except
      showmessage(strsql1+'有误');
    end;
adoQuery.Next;
为何adoquery数据量小的时候没问题,多如10000条,总在qrMain_k2.ExecSql处有一两条出错,即pay_table没更新。我该如何办?

解决方案 »

  1.   

    什么乱七八糟的。
    while not adoQuery.Eof do
        begin
          strsql1 :='update pay_table set paysuccess=0 where diskno=50';
          wclbs:=wclbs+1;
          wclje:=wclje+adoQuery['paymoney'];
        end;
    //死定了
      

  2.   

    while not adoQuery.Eof do
    begin    
        strsql1 :='update pay_table set paysuccess=0 where diskno=50';
        wclbs:=wclbs+1;
        wclje:=wclje+adoQuery['paymoney'];
        qrMain_k2.Close;
        qrMain_k2.Sql.Clear;
        qrMain_k2.Sql.add(strsql1);
        try
          qrMain_k2.ExecSql;
        except
          showmessage(strsql1+'有误');
        end;
      adoQuery.Next;
    end;
    为何adoquery数据量小的时候没问题,多如10000条,总在qrMain_k2.ExecSql处有一两条出错,即pay_table没更新。我该如何办?
      

  3.   

    看你的循环好象一直在作同一更新操作耶('update pay_table set paysuccess=0 where diskno=50');
    到底这是出于何目的?
      

  4.   

    while not adoQuery.Eof do
         begin 
         no=adoQuery['no'];
         begin
         strsql1 :='update pay_table set paysuccess=0 where diskno=50 and no= "'+no+'"';
         wclbs:=wclbs+1;
         wclje:=wclje+adoQuery['paymoney'];
         end;
         qrMain_k2.Close;
         qrMain_k2.Sql.Clear;
         qrMain_k2.Sql.add(strsql1);
         try
         qrMain_k2.ExecSql;
         except
         showmessage(strsql1+'有误');
         end;
         adoQuery.Next;
         end;
         为何adoquery数据量小的时候没问题.多如10000条,总在qrMain_k2.ExecSql处有一两条出错,即pay_table部分没更新。我该如何办?
         另外,我该如何提高效率呢?我用的是mysql.
      

  5.   

    是不是MySQL的问题呢?还有,出错信息是什么呢?你上面的语句好象看不出什么错来呢!