GARANTIR DESCONTO

Fórum Gerando código com 5 dígitos #518081

28/04/2015

0

Olá amigos, tenho um código que fiz para gerar códigos automático, esta funcionando, porem preciso que gere com 5 dígitos sendo que o restante do código fique com 0, exemplo, ao clicar em novo vai para o código 58, porem, como são 5 dígitos, preciso que fique 00058. Para isso eu teria de fazer algum procedimento no próprio form, ou no banco de dados ? Alguém pode me ajudar !
Jhon

Jhon

Responder

Post mais votado

28/04/2015

procedure TForm1.Button1Click(Sender: TObject); 
var 
   valor : integer; 
begin 
   valor := 100; 
   edit1.Text := Format('%5.5d', [valor]); 
end;

Thiago Santana

Thiago Santana
Responder

Gostei + 1

Mais Posts

28/04/2015

Ricardo

FormatFloat('00000', valor);
Responder

Gostei + 0

29/04/2015

Thiago Santana

Nilegor conseguiu resolver o seu problema?

FormatFloat('00000', valor);


Essa opção do Ricardo ai funciona perfeitamente também! hehe
Responder

Gostei + 1

29/04/2015

Jhon

Olá, deu certo em termos.. kkk
Consegui fazer com que o DBedit receba o código automático com 5 caracteres, porem no banco de dados esta gravando sem os 5 caracteres.
verifique abaixo o código que estou usando para gerar o código automático:
var
vcodigo : integer;
begin
with festoque.SQLStoredProc_produtos do
       begin                        
          Prepared := True;
          execproc;
          prepared := false;
          vcodigo := parambyname('ID').Value;
       end;
festoque.ClientDataSet_estoque.Insert;
festoque.ClientDataSet_estoque.FieldByName('cod_produto').AsInteger := vcodigo;

tentei de algumas formas, porem da erro de 'tipos incompatíveis' como eu poderia aderir nesse código a opção ''FormatFloat('00000', valor);''
Desde já agradeço.
Responder

Gostei + 0

30/04/2015

Agricola Ltda

Ficaria assim:
vCodigo: Extended;
begin
...
festoque.ClientDataSet_estoque.FieldByName('cod_produto').AsFloat := FormatFloat('00000', vCodigo);

Massss..... como a regra é simples, zeros a esquerda sao desconsiderados, vc nao vai conseguir que o banco mantenha os zeros... a nao ser que troque o tipo de dado pra string...
Responder

Gostei + 1

30/04/2015

Ricardo

Para "gravar" na base de dados os 6 dígitos, o campo tem que ser do tipo inteiro de tamanho 6, zerofill e unsigned.
Responder

Gostei + 1

30/04/2015

Thiago Santana

Para "gravar" na base de dados os 6 dígitos, o campo tem que ser do tipo inteiro de tamanho 6, zerofill e unsigned.


Exatamente isso!
Os zeros a esquerda são desconsiderados!
Responder

Gostei + 1

30/04/2015

Jhon

Certo, porém na criação dos campos da tabela, se eu colocar como inteiro, o banco não me permite determinar tamanho. Quanto a gravação no banco de dados tranquilo, vou deixar assim mesmo.
Mas teria como colocar uma mascara por exemplo no DBGrid ? Pois no DBedit vai estar com os 5 dígitos, porem no DBGrid não, então por isso seria ser interessante que no DBGrid também fique com 5 dígitos. No banco de dados vou deixar como esta, não tem problemas.
Responder

Gostei + 0

30/04/2015

Jhon

Amigos, consegui usando a opção DisplayFormat do clientDataSet, obrigado pela ajuda.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar