刚学delphi,一直用不好delphi中的if else,写了函数,其中需要判断的地方挺多,大家帮忙改下,TKS(看了相关if else文章,还是不会用),TKS
function gfsofutr(p_isse_no,p_isse_rev,p_bukamei_j: string) : string;
var
 p_sofu_no : string;
 p_blean :boolean;
begin
  with DM.QR_PGSOFUTR_040  do
  begin
     close;
     ParamByName('ISSE_NO').AsString := p_isse_no;
     ParamByName('ISSE_REV').AsString := p_isse_rev;
     Open;
     IF NOT EOF THEN
        p_blean := false;
        while not eof do  BEGIN
          if  FieldByName('BUKAMEI_J').Asstring = p_bukamei_j THEN
              p_sofu_no := FieldByName('SOFU_NO').Asstring ;
              p_blean := true;
              break;   //退出循环
        NEXT;
        End;
       if  p_blean = false then
           with DM.QR_PGSOFUTR_040  do
           begin
              close;
              ParamByName('ISSE_NO').AsString := p_isse_no;
              ParamByName('ISSE_REV').AsString := p_isse_rev;
              Open;
              if strtoint(FieldByName('SOFU_NO').Asstring) < 10 then
              p_sofu_no := '0' + inttostr(strtoint(FieldByName('SOFU_NO').Asstring) + 1 );
              else
              p_sofu_no := inttostr(strtoint(FieldByName('SOFU_NO').Asstring) + 1 );              p_blean := true;
              close;
           end;
     else  //和上面if not eof 对应的
     p_sofu_no := '01' ;  end;
  Result := p_sofu_no;
end;delphiif else

解决方案 »

  1.   

    then或else后面如果只有一个语句,就不用begin...end来包括,如果你搞不清,就不管一个语句还是多个语句,全用begin...end来包起来if [条件] then
    begin
    ...
    end  //注意,这里后跟else,所以不能加;号
    else
    begin
    ...
    end;你的代码整理下,就是这样:function gfsofutr(p_isse_no,p_isse_rev,p_bukamei_j: string) : string;
    var
     p_sofu_no : string;
     p_blean :boolean;
    begin
      with DM.QR_PGSOFUTR_040  do
      begin
        close;
        ParamByName('ISSE_NO').AsString := p_isse_no;
        ParamByName('ISSE_REV').AsString := p_isse_rev;
        Open;
        IF NOT EOF THEN
          p_blean := false;
        while not eof do
        BEGIN
          if  FieldByName('BUKAMEI_J').Asstring = p_bukamei_j THEN
              p_sofu_no := FieldByName('SOFU_NO').Asstring ;
          p_blean := true;
          break;   //退出循环
          NEXT;
        End;
        if  p_blean = false then
          with DM.QR_PGSOFUTR_040  do
          begin
            close;
            ParamByName('ISSE_NO').AsString := p_isse_no;
            ParamByName('ISSE_REV').AsString := p_isse_rev;
            Open;
            if strtoint(FieldByName('SOFU_NO').Asstring) < 10 then
            p_sofu_no := '0' + inttostr(strtoint(FieldByName('SOFU_NO').Asstring) + 1 );
            else
            p_sofu_no := inttostr(strtoint(FieldByName('SOFU_NO').Asstring) + 1 );        p_blean := true;
            close;
          end;
        else  //和上面if not eof 对应的
          p_sofu_no := '01' ;
      end;
      Result := p_sofu_no;
    end;
      

  2.   

    理论看楼上,不过楼上给点代码貌似没加上begin...end
    function gfsofutr(p_isse_no,p_isse_rev,p_bukamei_j: string) : string;
    var
     p_sofu_no : string;
     p_blean :boolean;
    begin
      with DM.QR_PGSOFUTR_040  do
      begin
        close;
        ParamByName('ISSE_NO').AsString := p_isse_no;
        ParamByName('ISSE_REV').AsString := p_isse_rev;
        Open;
        IF NOT EOF THEN
        begin            //++++++begin
          p_blean := false;
          while not eof do
          BEGIN
            if  FieldByName('BUKAMEI_J').Asstring = p_bukamei_j THEN
                p_sofu_no := FieldByName('SOFU_NO').Asstring ;
            p_blean := true;
            break;   //退出循环
            NEXT;
          End;
          if  p_blean = false then
            with DM.QR_PGSOFUTR_040  do
            begin
              close;
              ParamByName('ISSE_NO').AsString := p_isse_no;
              ParamByName('ISSE_REV').AsString := p_isse_rev;
              Open;
              if strtoint(FieldByName('SOFU_NO').Asstring) < 10 then
              p_sofu_no := '0' + inttostr(strtoint(FieldByName('SOFU_NO').Asstring) + 1 );
              else
              p_sofu_no := inttostr(strtoint(FieldByName('SOFU_NO').Asstring) + 1 );
     
              p_blean := true;
              close;
            end;
        end             //++++++++end, 有对应的else,无分号。
        else  //和上面if not eof 对应的
          p_sofu_no := '01' ;
      end;
      Result := p_sofu_no;
    end;