BUG ainda não corrigido

Olá a todos,

Não sei se é bug ou oque é, só sei que não consigo fazer isso funcionar de algumas versões para a última.

Oque não consigo fazer funcionar?
Colocar máscara em um campo numérico para ficar com zeros à esquerda.

E como você está fazendo?
Colocando na máscara o formato “xxxxxx”(sem aspas).

Qual banco de dados você usa?
MySql (phpmyadmin),(wamp).

Como está o campo no banco de dados?
INT, tamanho(6), not null.

Como está o campo no script case?
Numero, tamanho(6), máscara “xxxxxx”, tamanho maximo(6).

Porque você acha que é um bug?
Porque nos formúlarios criados nas versões anteriores isso funciona na forma que faço, já nas versões novas não funciona
nem a pau. Não consegui fazer funcionar de jeito algum.

Muito bem, fiz algumas perguntas com respostas para tentar entender melhor.

É o seguinte, tenho um campo númerico INT(6), que quando digito o número 78 gostaria que ficasse assim 000078, só que não
estou conseguindo, estou colocando a máscara “xxxxxx” mas nada acontece, já nas grid o resultado aparece, mas nos formulários não, nem em alterar e inserir.

Aguardo respostas.
Obrigado desde já.
Eliezer Almeida e Silva =D.

Tenta setar, no formulário, o campo para tipo texto.

Também pode tentar usar a função str_pad() no evento onload.

Mesmo colocando para tipo texto não funciona.
Esqueci de mensionar, mais o campo é chave_primaria, auto_incremento, e chave unica.

Realmente com o str_pad(); funciona, mais vou ter que fazer em cada formulário, vai demora pracaralho

Estou esperando soluções da equipe, é mais pratico.

Eai, isso é msm um BUG, ou não é possivel aparecer a máscara em formulários?

A sintaxe de máscara nos formulários agora mudou, nao se usa mais “X”.
Retirado do manual:
"Máscara de Exibição - Define a máscara de exibição do campo. Existem tres tipos de máscara que podem ser mescladas.

Caracter Descrição
9 Representa um caracter numérico (0-9)
A Representa um caracter alpha numérico (A-Z,a-z)

  • Representa qualquer caracter alfa-numérico (A-Z,a-z,0-9) digitada pelo usuário.

Nota: É possivel mesclar duas ou mais máscaras simultaneamente, separadas por ponto e vírgula com a menor mascara inicializando. A substituição ocorre durante a digitação dos caracteres quando o numero de caracteres da menor máscara é excedido.

Exemplos de máscaras:

Campo Máscara Valor Digitado Valor Formatado
Número de Telefone +99 99 9999 - 9999 123456789012 +12 34 5678 - 9012
Software Key (Apenas Letras) AAAA-AAAA-AAAA-AAAA QWERTYUIASDFGHJK QWER-TYUI-ASDF-GHJK
Software Key (Letras e Números) --- Q1W2E3R4T5Y6U7I8 Q1W2-E3R4-T5Y6-U7I8
Placa de Carro AAA - 9999 QWE1234 QWE - 1234
Serial do ScriptCase A999A999A999-**** D111H111G111DG2P D111H111G111-DG2P
Múltiplas máscaras (Telefone) 9999-9999;(99) 9999-9999;9999 999 9999;+99 99 9999-9999 "

Mas para grid ainda continua o “X” e “Z”
Retirado do manual:
Máscara de Consulta - Define a máscara de exibição do campo. São dois os tipos de máscara descritos na tabela abaixo:

Caracter Descrição
X É substituído por quaisquer caracteres retornados pelo banco de dados. Seu preenchimento é obrigatório e quando forem retornados menos caracteres do que o tamanho da máscara, o valor será completado com zeros à esquerda.
Z É substituído por quaisquer caracteres retornados pelo banco de dados. Seu preenchimento é opcional e quando forem retornados menos caracteres do que o tamanho da máscara, nada será feito em relação aos caracteres que estão faltando. Além disso os zeros à esquerda serão suprimidos. Obrigatoriamente o uso deste caracter é à esquerda da máscara quando usado em conjunto com o X

Exemplos de máscaras:

Máscara Valor do campo Valor formatado
(xx) xxxx - xxxx 1234567890 (12) 3456 - 7890
(xx) xxxx - xxxx 12345678 (00) 1234 - 5678
(zz) xxxx - xxxx 1234567890 (12) 3456 - 7890
(zz) xxxx - xxxx 12345678 ( ) 1234 - 5678
(zz) xxxx - xxxx 0012345678 ( ) 1234 - 5678 "

Eu também fui pego de surpresa por esta mudança.

No seu caso como as máscaras mudaram acredito que terá que usar o:

“Completar à esquerda com” - Permite definir o caracter que será usado para completar o valor digitado a esquerda até o tamanho do campo definido no atributo Tamanho do Campo na Base de Dados.

Espero ter ajudado.

Ajudou bastante, mas tentei todas as mascaras, que voce me passaou e não funcionou nos formulários.

As máscaras em si, para o que você deseja, não irão resolver. O que irá resovler esta abaixo do campo máscara.
É o campo “Completar à Esquerda com” “Caracter utilizado para completar o campo à esquerda.”
Mas lembro que seu campo deve estar como texto no formulário para aparecer o: “completar à esquerda com”.

Sim, já havia pensado nessa opção, mas o campo e Numero, Auto-Incremento, chave-primaria, e os que não são auto-incremento
vou analisar para ver se da certo para oque eu preciso.

Creio que para o php será uma string, mas conforme o seu SGDB (oracle, mysql e etc) ele irá desprezar os zeros e gravar como número.

Experimenta deixar seu campo com TEXTO e na formatação de valores no campo Caracteres Permitidos marca apenas Número e para colocar zeros a esquerda no evento onBeforeInsert e no onBeforeUpdate expêrimenta colocar esse comando:

{meuCampo} = str_pad({meuCampo}, 6, 0, STR_PAD_LEFT);