Atualize hoje para o Scriptcase 9 e ganhe 35% de desconto! Atualize hoje para o Scriptcase 9 e ganhe 35% de desconto! COMPRAR AGORA!

Autor Tópico: Rotina para Completar à esquerda com Zeros  (Lida 1584 vezes)

ValterSouza

  • Intermediário
  • ***
  • Mensagens: 189
Rotina para Completar à esquerda com Zeros
« Online: Setembro 21, 2013, 02:40:12 am »
Passei pela necessidade completar um número (do tipo caracter) com ZEROS À ESQUERDA e dei uma solução simples e funcional.
Procurei uma solução aqui no fórum e não encontrei, por isso estou compartilhando com os colegas, principalmente os iniciantes, para que não passem pelas dificuldades por que passei.

Vamos lá:

O cliente tem uma tabela com um campo Código, do tipo caracter de 4 dígitos.
Se você definir no SC o VALOR A SER GRAVADO NO BANDO DE DADOS como sendo Auto incremento Manual, o valor a ser gravado será, por exemplo, 1, 2, 3...
Então, deixei essa condição em branco, sem nada definido.
Para completar com zeros à esquerda, fiz o seguinte:

Utilizei a rotina pronta do SC "SELECTING A FIELD FROM ANOTHER TABLE' e fiz algumas alterações, conforme segue abaixo:


/**
 * Selecting a field from another table
 */

// Check for record
$check_sql = "SELECT MAX(nome_seu_numero_sequencial)"
   . " FROM Sua_tabela";
sc_lookup(rs, $check_sql);

if (isset({rs[0][0]}))     // Se encontrou registro, completa com zeros
{
    {nome_seu_numero_sequencial} = str_pad({rs[0][0]}+1,4,'0',STR_PAD_LEFT);
   
}
      else     // Se não encontrou registro
{
          {nome_seu_numero_sequencial} = '0001';
   
}


O +1 é o indentador, e o 4 é o número de dígitos do seu campo.


Agora, vamos supor que haja condição de filtragem na localização do maior número (cláusula where):


/**
 * PEGA NÚMERO
 */

// Check for record
$check_sql = "SELECT MAX(nome_seu_numero_sequencial)"
   . " FROM Sua_tabela"
   . " WHERE  Tipo_de_lancamento = 'Crédito' and Ano = '" . [varANO] . "'";
sc_lookup(rs, $check_sql);

if (isset({rs[0][0]}))     // Row found
{
    {Numero} = str_pad({rs[0][0]}+1,4,'0',STR_PAD_LEFT);
 
}
      else     // No row found
{
       {Numero} = '0001';
 
}



Para utilizar, é só recortar e colar no evento BEFORE INSERT da aplicação.

É isso, espero que ajude.
« Última modificação: Setembro 23, 2013, 01:30:18 am por ValterSouza »

jacobju

  • Novato
  • *
  • Mensagens: 25
  • Empreendedor, Inovador e Consultor
Re:Rotina para Completar à esquerda com Zeros
« Responder #1 Online: Setembro 22, 2013, 04:37:03 am »
Absolutamente maravilhoso, procurei por algo assim por muito tempo, porque preciso gerar o nosso numero em boletos e eu estava me matando para conseguir isso.

Parabéns, isso é colaborar.
Julio Cesar Jacob
Evangelista de TI - MCP/MCSE/LPIC-1&2/CCNA/ANP/XCP/Asterisk Professional
(55 21) 98452-1886
Skype juliocjacob

WREGO

  • Novato
  • *
  • Mensagens: 16
Re:Rotina para Completar à esquerda com Zeros
« Responder #2 Online: Junho 05, 2017, 01:50:16 pm »
Salvou meu dia amigo.

Valeu!!!

ValterSouza

  • Intermediário
  • ***
  • Mensagens: 189
Re:Rotina para Completar à esquerda com Zeros
« Responder #3 Online: Junho 09, 2017, 01:10:32 am »
Compartilhar informações. Esse é o espírito aqui no fórum.
Um dia, você também poderá estar ajudando a gente.
Boa sorte!

Kleyber

  • Expert
  • *****
  • Mensagens: 2732
Re:Rotina para Completar à esquerda com Zeros
« Responder #4 Online: Junho 09, 2017, 07:23:05 am »
E isso ai!!!
Kleyber Derick

ITIL® V3 Foundation Certified
Analista de Sistemas
São Luís - Maranhão
www.tkinformidia.net