Autor Tópico: Mascara de exibição na consulta  (Lida 4937 vezes)

Vieira

  • Intermediário
  • ***
  • Mensagens: 104
  • O tempo é a chave.
    • Email
Mascara de exibição na consulta
« Online: Agosto 21, 2012, 09:22:43 am »
Bom dia meus caros, o SC está cada dia mais cheio de bugs...

então venho agora reportar o bug da mascara de exibição do grid
invés de mostrar o campo formatado ele concatena o campo com
a mascara...

usei a seguinte mascara para telefone (99)9999-9999;(99)99999-9999

foi exibido o seguinte na grid 9999999999(99)9999-9999;(99)99999-9999

o mesmo aconteceu com o cpf/cnpj

Desde já obrigado.
« Última modificação: Agosto 21, 2012, 10:14:48 am por Vieira »
Att. Vieira
vieirasantosn@gmail.com
skype: vieirasantosn / vieirasantosn@gmail.com
gtalk: vieirasantosn

Alexandre Pereira Bühler

  • Expert
  • *****
  • Mensagens: 1641
  • Nunca estabeleça um teto para os seus rendimentos.
    • Simão & Bühler Ltda
    • Email
Re:Mascara de exibição na consulta
« Responder #1 Online: Agosto 21, 2012, 11:36:25 pm »
Vieira,
As máscaras do formulário e da consulta são diferentes:
Formulários podem usar: 9, A e *
Consultas podem usar X e Z
Será que não é isto que esta dando erro?

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"
--
Alexandre Pereira Bühler
https://www.simaoebuhler.com.br
Hospedagem compartilhada Scriptcase desenvolvimento e produção. Temos servidores dedicados Scriptcase.
Eu RTFM todo dia e você?

jorgepopel

  • Expert
  • *****
  • Mensagens: 568
    • iCentro Tecnologia e Sistemas
    • Email
Re:Mascara de exibição na consulta
« Responder #2 Online: Agosto 28, 2013, 11:04:29 pm »
Alexandre,

Estou com o seguinte problema, numa consulta com o uso do formato livre.
O campo telefone no banco de dados está vazio. é do tipo varchar(25)
Se eu usar a máscara ####-####;(##) ####-####;(##) #####-####  aparece (&n) bsp;
Se eu usar a máscara zzzz-zzzz;(zz)zzzz-zzzz;(zz)zzzzz-zzzz  aparece -;()-;()&n-bsp;

Com o valor 5499887766 no banco, aparece:
Se eu usar a máscara ####-####;(##) ####-####;(##) #####-####  aparece (54)9988-7766  OK
Se eu usar a máscara zzzz-zzzz;(zz)zzzz-zzzz;(zz)zzzzz-zzzz  aparece -;()-;(5)49988-7766
-----------------------------------------------
No formulário está ok com #
No grid está ok com #, desde que não seja (##) #####-#### (novo celular de sp). Aparece 1199-8854777
-----------------------------------------------
Em resumo, com o tal do Z não funciona.
No grid fica OK se não for telefone de SP.
No formato livre, o campo não pode ser vazio e se for de SP Aparece 1199-8854777


Alguma sugestão?

Alexandre Pereira Bühler

  • Expert
  • *****
  • Mensagens: 1641
  • Nunca estabeleça um teto para os seus rendimentos.
    • Simão & Bühler Ltda
    • Email
Re:Mascara de exibição na consulta
« Responder #3 Online: Agosto 29, 2013, 12:16:09 am »
Por favor exporte e me envie a aplicação e a DML  para que eu possa testar?
Isto é de meu interesse também! Quero achar onde esta o erro.
Qual SGDB você usa para esta aplicação?
Eu deixei de usar o mysql 4.0.20 no ano 2004, mas presto suporte a este SGDB. Hoje somente uso o Firebid e Postgresql.
No formato padrão do scriptcase nas grids (consulta) funciona normal "X e Z" e nos Forms vai bem o "9, A e *".
Pode ser que este formato livre esteja colocando sujeira na hora da execução do php.
Fico no aguardo.
Envie para alexandre@simaoebuhler.com.br
--
Alexandre Pereira Bühler
https://www.simaoebuhler.com.br
Hospedagem compartilhada Scriptcase desenvolvimento e produção. Temos servidores dedicados Scriptcase.
Eu RTFM todo dia e você?

Bernhard

  • Administrator
  • Expert
  • *****
  • Mensagens: 1619
Re:Mascara de exibição na consulta
« Responder #4 Online: Agosto 29, 2013, 01:15:37 am »
Boa noite,

Reportei este problema para nossa equipe de bugs.

att,
Bernhard Bernsmann

Alexandre Pereira Bühler

  • Expert
  • *****
  • Mensagens: 1641
  • Nunca estabeleça um teto para os seus rendimentos.
    • Simão & Bühler Ltda
    • Email
Re:Mascara de exibição na consulta
« Responder #5 Online: Agosto 29, 2013, 03:47:50 am »
Bernhard e jorgepopel,
Bom dia,
Vendo o manual do scriptcase 5,6 e 7 com mais atenção notei onde está a confusão.

O pessoal que vem do scriptcase 5 e anteriores contavam nos formulários com as máscaras: z e x.
À partir do scriptcase 6 e 7 as máscaras nos formulários passaram a ser: 9,A e *.


Os formulários, segundo o manual das versões 6 e 7, aceitam normalmente as máscaras: 9, A e *.
Bem como o uso de múltiplas máscaras.


Eu fiz em um formulário as seguintes máscaras:
9999-9999;(99) 9999-9999;(99) 99999-9999;
E funcionou corretamente.
Como podem ver em:
http://www.simaoebuhler.com.br/teste/forum1


Retirado do manual sobre formulários:

"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"

Obs: Notem que até os exemplos acima tem múltiplas máscaras

Agora as consultas (grid) tanto nas versões 5, 6 e 7 continuraram a ter como máscaras os caracteres: z e x.
Mas não suportam o uso de múltiplas máscaras.


Note que o texto retirado do manual das consultas (grid) e exposto abaixo não informa o suporte a mútiplas máscaras nem mostra exemplos com múltiplas máscaras.

" 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"

Logo nas consultas (grid) devemos ter uma única máscara.
A exemplo: (zz) zxxxx-xxxx


O problema é que este tipo de máscara por ser única (não múltipla) somente irá funcionar para um tipo de ocorrência.
No caso dos telefones temos três tipos de ocorrência: 1234-1234, (41) 1234-1234, (41) 12345-1234
Logo este tipo de máscara única nunca irá funcionar corretamente.
Ela somente irá funcionar para ocorrências únicas.
Ex:  R$ zzz.zzz.zzz,xx


Fica então minha sugestão para que seja implementada máscaras múltiplas nas aplicações consulta (grid) e o "problema" sanado de vez.

Jorgepopel! Para contornar a situação atual retire a máscara do campo e coloque este código no evento onrecord da aplicação consulta (grid):

switch (strlen(trim("{TELEFONE}"))) {
case 8:
   {TELEFONE}="() ".substr("{TELEFONE}",0,4)."-".substr("{TELEFONE}",4,4);
     break;
case 10:
   {TELEFONE}="(".substr("{TELEFONE}",0,2).") ".substr("{TELEFONE}",2,4)."-".substr("{TELEFONE}",6,4);
     break;
case 11:
   {TELEFONE}="(".substr("{TELEFONE}",0,2).") ".substr("{TELEFONE}",2,5)."-".substr("{TELEFONE}",7,4);
     break;
}

Obs: onde {TELEFONE}= deverá ser substituido pelo nome do seu campo com os telefones.

Funcionou para mim. Veja:
http://www.simaoebuhler.com.br/teste/forum1
--
Alexandre Pereira Bühler
https://www.simaoebuhler.com.br
Hospedagem compartilhada Scriptcase desenvolvimento e produção. Temos servidores dedicados Scriptcase.
Eu RTFM todo dia e você?

FredKeyster

  • Expert
  • *****
  • Mensagens: 1702
  • DEWENNINMEN
    • Email
Re:Mascara de exibição na consulta
« Responder #6 Online: Agosto 29, 2013, 10:35:57 am »
Fantástico Alexandre, parabéns!
F. A.
Analista de Sistemas

jorgepopel

  • Expert
  • *****
  • Mensagens: 568
    • iCentro Tecnologia e Sistemas
    • Email
Re:Mascara de exibição na consulta
« Responder #7 Online: Agosto 29, 2013, 11:23:37 am »
Obrigadaum, Alexandre e todos os demais.

Vou usar essa sugestão e considerar o tópico como resolvido.

Endrigo

  • Intermediário
  • ***
  • Mensagens: 242
    • Email
Re:Mascara de exibição na consulta
« Responder #8 Online: Agosto 29, 2013, 01:28:27 pm »
Para que ter essa diferença entre formulário e consulta?
Por que a NetMake não adota o mesmo padrão em todas as aplicações? E claro, adotasse o padrão do aplicativo formulário.
Endrigo Rodrigues
(31)3464-1020
CentOS 6 64bits + ScriptCase 8.00.0041 + PostgreSQL 9.3

Almeida

  • Expert
  • *****
  • Mensagens: 610
    • Email
Re:Mascara de exibição na consulta
« Responder #9 Online: Agosto 31, 2013, 01:23:31 am »
Para que ter essa diferença entre formulário e consulta?
Por que a NetMake não adota o mesmo padrão em todas as aplicações? E claro, adotasse o padrão do aplicativo formulário.

Att.
Eliezer Almeida
eliezeralmeidago@hotmail.com
www.infotecsoft.com.br - Modernidade e Eficiência

jorgepopel

  • Expert
  • *****
  • Mensagens: 568
    • iCentro Tecnologia e Sistemas
    • Email
Re:Mascara de exibição na consulta
« Responder #10 Online: Setembro 06, 2013, 12:13:55 pm »
Alexandre,

Usei o código que vc sugeriu. No grid ficou perfeito.
Coloquei o mesmo em um "formato livre" e apresenta () Arra-y[0].
E o campo tem informação. varchar(25)


Alexandre Pereira Bühler

  • Expert
  • *****
  • Mensagens: 1641
  • Nunca estabeleça um teto para os seus rendimentos.
    • Simão & Bühler Ltda
    • Email
Re:Mascara de exibição na consulta
« Responder #11 Online: Setembro 06, 2013, 12:30:58 pm »
Pesquise mais a variável array onde é montado o resultado.
Tenho certeza que achará o porque ocorreu isto.
Eu ensino a pescar, mas nem sempre dou o peixe.
--
Alexandre Pereira Bühler
https://www.simaoebuhler.com.br
Hospedagem compartilhada Scriptcase desenvolvimento e produção. Temos servidores dedicados Scriptcase.
Eu RTFM todo dia e você?

jorgepopel

  • Expert
  • *****
  • Mensagens: 568
    • iCentro Tecnologia e Sistemas
    • Email
Re:Mascara de exibição na consulta
« Responder #12 Online: Setembro 06, 2013, 01:08:19 pm »
MQEAA,

Os meus conhecimentos sobre as variáveis se esgotaram.
Comparei o campo telefone da aplicação grid, com o da aplicação "formato livre".
Ambos são iguais:


Se deixar o campo "direto", aparece o número normal, sem edição: 5435225037

Fiz uma pequena alteração, e o resultado final deu certo. Mas comprovou que o problema é no campo.
Código: [Selecionar]
$_telefone = {fone_fixo};


switch (strlen(trim($_telefone))) {
case 8:
   {fone_fixo}="() ".substr($_telefone,0,4)."-".substr($_telefone,4,4);
     break;
case 10:
   {fone_fixo}="(".substr($_telefone,0,2).") ".substr($_telefone,2,4)."-".substr($_telefone,6,4);
     break;
case 11:
   {fone_fixo}="(".substr($_telefone,0,2).") ".substr($_telefone,2,5)."-".substr($_telefone,7,4);
     break;
}


Coloquei o pequeno código abaixo, para ver o que acontecia:
{fone_fixo} = '['.{fone_fixo}.']';
Resultado: [5435225037]

Acho que vou ter que comprar uma lata de sardinha. hehehehe
« Última modificação: Setembro 06, 2013, 01:22:04 pm por jorgepopel »

FredKeyster

  • Expert
  • *****
  • Mensagens: 1702
  • DEWENNINMEN
    • Email
Re:Mascara de exibição na consulta
« Responder #13 Online: Janeiro 30, 2014, 07:17:52 pm »
Pessoal sei que o tópico é um pouco antigo, mas não queria abrir outro, mesmo porque o que quero postar aqui se refere ao interesse desse tópico.

Eu fiz a máscara para CNPJ/CPF para GRID.  Vi que só tinha para Telefones. Sendo assim deixo minha humilde contribuição. Se tiver algum erro, favor corrigir, eu testei aqui e funcionou. Segui a lógica do código do Alexandre.

Código: [Selecionar]
switch (strlen(trim("{CPF_CNPJ}"))) {
case 11:
   {CPF_CNPJ}=substr("{CPF_CNPJ}",0,3).".".substr("{CPF_CNPJ}",3,3).".".substr("{CPF_CNPJ}",6,3)."-".substr("{CPF_CNPJ}",9,2);
     break;
case 14:
   {CPF_CNPJ}=substr("{CPF_CNPJ}",0,2).".".substr("{CPF_CNPJ}",2,3).".".substr("{CPF_CNPJ}",5,3)."/".substr("{CPF_CNPJ}",8,4)."-".substr("{CPF_CNPJ}",0,2);
     break;
}


Abraço a todos!
F. A.
Analista de Sistemas

Alexandre Pereira Bühler

  • Expert
  • *****
  • Mensagens: 1641
  • Nunca estabeleça um teto para os seus rendimentos.
    • Simão & Bühler Ltda
    • Email
Re:Mascara de exibição na consulta
« Responder #14 Online: Janeiro 30, 2014, 08:53:34 pm »
FredKeyster,
Valeu! Isto será muito útil.
--
Alexandre Pereira Bühler
https://www.simaoebuhler.com.br
Hospedagem compartilhada Scriptcase desenvolvimento e produção. Temos servidores dedicados Scriptcase.
Eu RTFM todo dia e você?