while not Eof do begin
          //    t_str1:= fieldbyname('LAC#').AsString+' '+    
 fieldbyname('CI#').AsString;
               if (fieldbyname('LAC#').AsString=s_LAC) and (fieldbyname('CI#').AsString ='2302') then   begin
          s_lac和s_ci分别存对应的LAC#,CI#值。
        在上面的if 语句中把常数'2032'改为s_ci,则此if语句不起作用               
                  s_BSIC:=FieldByName('BSC#').asstring;
                  if trim(fields[5+i_freq].Value)='' then  begin //之前要判断数据是否为空,若为空则不要替换
                    writeln(f2,s) ;    //写入第五条
                    readln(myfile,s);  //第六行
                    writeln(f2,s);
                    t_flag:=true;
                  end
                  else begin
                    s:=stringreplace(s,s,fields[5+i_freq].Value,[] );
                    writeln(f2,s);     //写入第五条
                    readln(myfile,s);  //第六行
                    writeln(f2,s);
                    t_flag:=true;
                  end;
                  break;
               end     //if t_str=t_str1 then begin
               else begin
                 next;
                 pb.StepIt ;
               end;

解决方案 »

  1.   

    上面没写清楚,在这之前当然还有with adoquery_excel do
    问题出在第一个if语句上,我在此语句后面说明了问题
      

  2.   

    with adoquery_excel do begin
     first;
     t_flag:=false;
     while not Eof do begin
     if(fieldbyname('LAC#').AsString=s_LAC) and (fieldbyname('CI#').AsString ='2302') then   begin
       s_BSIC:=FieldByName('BSC#').asstring;
       if trim(fields[5+i_freq].Value)='' then  begin //之前要判断数据是否为空,若为空则不要替换
          writeln(f2,s) ;    //写入第五条
          readln(myfile,s);  //第六行
          writeln(f2,s);
          t_flag:=true;
        end
        else begin
                        s:=stringreplace(s,s,fields[5+i_freq].Value,[] );
                        writeln(f2,s);     //写入第五条
                        readln(myfile,s);  //第六行
                        writeln(f2,s);
                        t_flag:=true;
                      end;
                      break;
                   end     //if t_str=t_str1 then begin
                   else begin
                     next;
                     pb.StepIt ;
                   end;
                end;    //while的end
                 if t_flag=false then begin
                   writeln(f2,s);    //写入第五条
                   readln(myfile,s);  //定位到第六条
                   writeln(f2,s);
               end;   //with adoquery的end应该是这样的,它没有语法错误,问题在于
    if(fieldbyname('LAC#').AsString=s_LAC) and (fieldbyname('CI#').AsString ='2302') 如果改为 if fieldbyname('LAC#').AsString=s_LAC 可以执行then后的语句,改为
    if(fieldbyname('LAC#').AsString=s_LAC) and (fieldbyname('CI#').AsString =s_CI)
    则不能执行then后的语句 当然s_CI:='2302' 是不是adoquery的问题,烦
      

  3.   

    这个问题应该跟adoquery无关,加了条件:and (fieldbyname('CI#').AsString =s_CI)
    就不能往下执行,给个断点看看它们的参数是否相等?如果是提示出错,也应该错在CI#这个字段是否存在吧
      

  4.   

    可能是s_CI:='2302   ' 
    仔细看看吧