Gerando código com 5 dígitos
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
Curtidas 0
Melhor post
Thiago Santana
28/04/2015
procedure TForm1.Button1Click(Sender: TObject);
var
valor : integer;
begin
valor := 100;
edit1.Text := Format('%5.5d', [valor]);
end;
GOSTEI 1
Mais Respostas
Ricardo
28/04/2015
FormatFloat('00000', valor);
GOSTEI 0
Thiago Santana
28/04/2015
Nilegor conseguiu resolver o seu problema?
Essa opção do Ricardo ai funciona perfeitamente também! hehe
FormatFloat('00000', valor);
Essa opção do Ricardo ai funciona perfeitamente também! hehe
GOSTEI 1
Jhon
28/04/2015
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:
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.
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.
GOSTEI 0
Agricola Ltda
28/04/2015
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...
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...
GOSTEI 1
Ricardo
28/04/2015
Para "gravar" na base de dados os 6 dígitos, o campo tem que ser do tipo inteiro de tamanho 6, zerofill e unsigned.
GOSTEI 1
Thiago Santana
28/04/2015
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!
GOSTEI 1
Jhon
28/04/2015
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.
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.
GOSTEI 0
Jhon
28/04/2015
Amigos, consegui usando a opção DisplayFormat do clientDataSet, obrigado pela ajuda.
GOSTEI 0