Como colocar zeros a esquerda

Firebird

06/12/2003

Como colocar zeros a esquerda no banco de dados interbase através de uma trigger ou de outra forma, sendo que o meu campo codigo é um char de 6 caracter.
Ex.: 000001,000002,000003


Mpolaco

Mpolaco

Curtidas 0

Respostas

Maxsoftware

Maxsoftware

06/12/2003

public
{ Public declarations }
Function StrZero( Num: integer ; Zeros: integer): string;
end;

var
FoCadCli: TFoCadCli;
proximocodigo:String;

implementation

uses U_Dados, U_foVendas, U_AjudaCadCliente,
U_foQuickrepClientesCadastrados;

{$R *.DFM}
Function TFoCadCli.StrZero( Num: integer ; Zeros: integer): string;
var tam,z : integer;
res,zer : string;

begin
Str( Num:Zeros, res );
res := trim( res );
tam := length( res );
zer := ´´;
for z := 1 to ( Zeros - tam ) do
zer := zer + ´0´;
Result := zer + res;
end;
procedure TFoCadCli.FormShow(Sender: TObject);
begin
Panel1.caption:= ´CADASTRO´;
Panel1.Font.Size:= 16;
ButtonIncluir.Setfocus;
Panel3.visible:=false;
ButtonIncluir.SetFocus;
panel6.Visible:= True;
end;

procedure TFoCadCli.ButtonIncluirClick(Sender: TObject);
begin
RadioCodigo.Checked:= TRUE;
RadioNome.Checked:= FALSE;

Dados.Tb_CadCli.IndexFieldNames:= ´CODCLIENTE´;
if enome.TabStop <> true then
begin

ProximoCodigo:= ´001´;
Dados.Tb_CadCli.Last;

if Dados.Tb_CadCli.bof then
begin

eCodCli.text:= ProximoCodigo;

end
else
begin
ProximoCodigo:= StrZero(((StrToInt( Dados.Tb_Cadcli.FieldByName(´CodCliente´).AsString))+ 1),3);
eCodCli.text:= ProximoCodigo;
end;

//////////////////

Timer1.Enabled:= true;
Panel4.Visible:=false;
panel3.Caption:= ´CADASTRE NOVO CLIENTE´;
Panel3.Color:= clAqua;
Panel3.font.Size:=14;
Panel3.visible:= True;
BITBTN1.Enabled:= False;
BITBTN2.Enabled:= False;
// BitBtn3.Enabled:= false;

DBGCadCli.TabStop:= false;
eNome.TabStop:= true;
eAno.TabStop:= true;

eNome.SetFocus;

end
else
begin
if eNome.text = ´´then
begin
ShowMessage(´Informe o nome do cliente!´);
eNome.SetFocus;
end
else
begin
if Dados.Tb_CadCli.Locate(´nome´,eNome.text,[])= true then
begin
ShowMessage(´Este cliente já existe!´);
eNome.SetFocus;
eNome.SelectAll;
end
else
begin
if eAno.text = ´´ then
begin
ShowMessage(´Digite o Ano deste Cliente!´);
eAno.SetFocus;
end
else
begin
if Application.MessageBox(´Confirma a gravação deste Cliente?´,
´Confirmação´,Mb_YesNo + Mb_Iconquestion)= IdYes then
begin
Dados.Tb_CadCli.Append;
Dados.Tb_CadCli.FieldByName(´CodCliente´).AsString:= ProximoCodigo;
Dados.Tb_CadCli.fieldbyname(´Nome´).asString:= eNome.text;
Dados.Tb_CadCli.fieldbyname(´Ano´).asString:= eAno.text;
Dados.Tb_CadCli.Post;
Dados.Tb_CadCli.Refresh;
Panel4.Visible:=true;
DBGCadCli.SEtfocus;
Panel3.visible:=false;
BITBTN2.Enabled:= True;
// bitbtn3.Enabled:= true;
BitBtn1.Enabled:=true;
panel4.Visible:=true;

eNome.Clear;
eAno.clear;
eNome.TabStop:= false;
eAno.TabStop:= false;
DBGCadCli.TabStop:= true;
ButtonIncluir.SetFocus;
end;
end;

end;

end;
end;

end;


Espero que entenda...
Ass: Max..


GOSTEI 0
Carlos Jatai

Carlos Jatai

06/12/2003

creio que seja bem simples resolver essa questão.

voce já tem definido o tamanho do seu campo que é 6, então voce pega o 6 e subtrai do [b:cd797dcd10]length[/b:cd797dcd10] do codcli de pois manda inserir na posição 1 do cocicli zeros até completar os seis dígitos ...

var
I : integer
begin
for i:=1 to (6-(length(codcli))) do
insert ´0´ in codcli 1;
end;

veja a sintaxe correta do insert caso assim não dê certo....


Abraços,

Carlos Jatai


GOSTEI 0
POSTAR