本帖最后由 dbjkof 于 2010-01-25 21:56:20 编辑

解决方案 »

  1.   

    有一句话我记得不是很准确,大概是说:ADOQuery查询的结果集是不能更新的。
    另外,你的语句有明显的问题:
    1.ADOQuery.close;后要接ADOQuery.clear;否则第二次查询时SQL的内容会加上第一次的。
    2.ADOQuery.open=ADOQuery.active:=true
    我说的不一定对,只是提点建议。
      

  2.   

    ADOQuery1.Active:=true;可以去掉;
    其它看不出有什么问题F7运行
    看看查询结果有没有数据?
    每一个If语句是否成立?
      

  3.   

    webtxt.Items.Add('正在更新:'+gpname);
    这里已经添回列表。要更新的名都显示出来了代码别的地方用无问题就在这里用不了不知道为什么。
    单步跟踪也是更新了五次
      

  4.   

    检查看看,是不是用了
    adoquery1.lockType:=ltBatchOptimistic
      

  5.   


    var gpi:integer; 
    gpgx,gpname:string; 
    begin 
      gpi:=0; 
      with form1 do 
      begin 
        gpgx:=getregstring('HKEY_LOCAL_MACHINE\SYSTEM\金金工作室','旧片更新'); 
        if gpgx <>formatDateTime('yyyymmdd',now) then 
        begin 
        webtxt.Items.Add('今天还未更新旧片,更新中');
        with ADOQuery1 do
        begin 
          Close;
          SQL.Clear 
          SQL.Add('select * from login order by 修改时间'); 
          Open; 
        //ADOQuery1.Active:=true; 
          First; 
          while not Eof do 
          begin 
            if FieldByName('播放次数').AsInteger <50 then 
            begin 
              gpname := FieldByName('影片名称').AsString; 
              webtxt.Items.Add('正在更新:'+gpname); 
              Edit; 
              FieldByName('修改时间').AsString:=formatDateTime('yyyymmddhhmmss',now); 
              Post; 
            end;
            gpi:=gpi+1; 
            if gpi>4 then break; 
            Next; 
          end; 
          Close;
        end;
        ADOConnection1.Close; 
        setreg_sz('HKEY_LOCAL_MACHINE\SYSTEM\金金工作室','旧片更新',formatDateTime('yyyymmdd',now)); 
        end  
        else 
        begin 
          webtxt.Items.Add('今天已经更新过旧片'); 
        end; 
    end;