刚学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
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
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;
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;