ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Retirando Mascaras do Banco [RESOLVIDO]

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
mtagliari2
Novato
Novato


Registrado: Quinta-Feira, 11 de Outubro de 2012
Mensagens: 41

MensagemEnviada: Sex Mar 22, 2013 1:35 am    Assunto: Retirando Mascaras do Banco [RESOLVIDO] Responder com Citação

Olá...

Fiz a burrice de gravar os dados no banco de dados com a máscara. Então ao invés de gravar somente os números, ele gravou também as máscaras, como no caso do CNPJ 44.444.444/000-03.

Gostaria de saber se é possível criar um loop para ler todos os dados da tabela e retirar os pontos, barras e traços mas manter a informação original, ou seja, os números em si.

Obrigado.

Matheus


Editado pela última vez por mtagliari2 em Dom Mar 24, 2013 10:00 pm, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
karlosrapanui
Profissional
Profissional


Registrado: Terça-Feira, 29 de Agosto de 2006
Mensagens: 538

MensagemEnviada: Sex Mar 22, 2013 8:02 am    Assunto: Responder com Citação

Tente assim

Utilizando IBDataSet

procedure TfrmFormPrincipal.Button1Click(Sender: TObject);
var
CNPJ, CNPJnum : String;
i : integer;
begin
IBDATASET1.Open;
while not IBDATASET1.Eof do begin
CNPJ := IBDATASET1.FieldBYName('CNPJ').AsString;
CNPJnum := '';
for i := 1 to length(CNPJ) do
if CNPJ[i] in ['0'..'9'] then
CNPJnum := CNPJnum + CNPJ[i];

while length( CNPJnum ) < 17 do

CNPJ := copy( CNPJnum,1,2 )+copy( CNPJnum ,4,3 )+copy( CNPJnum, 8,3)+copy(CNPJnum,12,3)+copy(CNPJnum,16,2);

IBDATASET1.Edit;
IBDATASET1.FieldBYName('CNPJ').AsString := CNPJ;
IBDATASET1.Post;
IBDATASET1.Next;
end;
ShowMessage('OK...');
end;


Não testei, mas qualquer coisa, só adaptar.



Tambem da pra fazer dessa maneira, direto no sql

UPDATE TABELA SET CNPJ =
SUBSTRING(CNPJ FROM 1 TO 2)||
SUBSTRING(CNPJ FROM 4 TO 3)||
SUBSTRING(CNPJ FROM 8 TO 3)||
SUBSTRING(CNPJ FROM 12 TO 4)||
SUBSTRING(CNPJ FROM 17 TO 2)
WHERE
SUBSTRING(CNPJ FROM 3 TO 1) = ´.´ AND
SUBSTRING(CNPJ FROM 7 TO 1) = ´.´ AND
SUBSTRING(CNPJ FROM 11 TO 1) = ´/´ AND
SUBSTRING(CNPJ FROM 16 TO 1) = ´-´


Dica retirada do post
http://www.devmedia.com.br/forum/remover-caracteres-com-update/316287


[]'s

Carlos
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
mtagliari2
Novato
Novato


Registrado: Quinta-Feira, 11 de Outubro de 2012
Mensagens: 41

MensagemEnviada: Dom Mar 24, 2013 12:43 am    Assunto: Responder com Citação

Obrigado amigo!!

O programinha em delphi não funcionou, ele trava... O sql me dá erro de execução... Vou tentar novamente, veremos!!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Dom Mar 24, 2013 2:40 am    Assunto: Responder com Citação

mtagliari2 escreveu:
Obrigado amigo!!

O programinha em delphi não funcionou, ele trava... O sql me dá erro de execução... Vou tentar novamente, veremos!!
Direto no SQL (Firebird) tente assim
Código:

  Update SUATABELA set
            inscricao = substring(inscricao from 1 for 2) ||
            substring(inscricao from 4 for 3) ||
            substring(inscricao from 8 for 3) ||
            substring(inscricao from 12 for 4) ||
            substring(inscricao from 17 for 2)


Subsititua o campo INSCRICAO do exemplo pelo nome do seu campo ai da sua tabela.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
mtagliari2
Novato
Novato


Registrado: Quinta-Feira, 11 de Outubro de 2012
Mensagens: 41

MensagemEnviada: Dom Mar 24, 2013 9:59 pm    Assunto: FANTASTIQUE!!! Responder com Citação

Resolvido, Obrigado!!!!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
mtagliari2
Novato
Novato


Registrado: Quinta-Feira, 11 de Outubro de 2012
Mensagens: 41

MensagemEnviada: Dom Mar 24, 2013 10:01 pm    Assunto: Responder com Citação

Adriano, seria possível vc me explicar um pouco da logica dessa função?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Dom Mar 24, 2013 10:09 pm    Assunto: Responder com Citação

mtagliari2 escreveu:
Adriano, seria possível vc me explicar um pouco da logica dessa função?


O cnpj com mascara é assim
12.345.678/0001-99

O que o update faz ai é concatenar a substring

Então vai concatenar excluindo os pontos e traço e barra porque se vc perceber a posição 3,7,11 e 16 são os pontos barra e taço que não entra na concatenação, por isso foi alterado para retirar as mascaras.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
mtagliari2
Novato
Novato


Registrado: Quinta-Feira, 11 de Outubro de 2012
Mensagens: 41

MensagemEnviada: Dom Mar 24, 2013 10:14 pm    Assunto: Responder com Citação

Ahh, entendi! Então se fosse CPF, teriamos a posição 4, 8 e 12 para retirar os pontos e o traço, certo?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Dom Mar 24, 2013 10:18 pm    Assunto: Responder com Citação

mtagliari2 escreveu:
Ahh, entendi! Então se fosse CPF, teriamos a posição 4, 8 e 12 para retirar os pontos e o traço, certo?
Isso mesmo

Exemplo para cpf
Código:
 Update suatabela set
             inscricao = substring(inscricao from 1 for 3) ||
            substring(inscricao from 5 for 3) ||
            substring(inscricao from 9 for 3) ||
            substring(inscricao from 13 for 2)

_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB