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

ValterSouza

  • Intermediário
  • ***
  • Mensagens: 184
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