Rotina para Completar à esquerda com Zeros

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.

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.

Salvou meu dia amigo.

Valeu!!!

Compartilhar informações. Esse é o espírito aqui no fórum.
Um dia, você também poderá estar ajudando a gente.
Boa sorte!

E isso ai!!!