Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
mtagliari2 Novato

Registrado: Quinta-Feira, 11 de Outubro de 2012 Mensagens: 41
|
Enviada: Sex Mar 22, 2013 1:35 am Assunto: Retirando Mascaras do Banco [RESOLVIDO] |
|
|
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 |
|
 |
karlosrapanui Profissional


Registrado: Terça-Feira, 29 de Agosto de 2006 Mensagens: 538
|
Enviada: Sex Mar 22, 2013 8:02 am Assunto: |
|
|
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 |
|
 |
mtagliari2 Novato

Registrado: Quinta-Feira, 11 de Outubro de 2012 Mensagens: 41
|
Enviada: Dom Mar 24, 2013 12:43 am Assunto: |
|
|
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 |
|
 |
adriano_servitec Colaborador

Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Dom Mar 24, 2013 2:40 am Assunto: |
|
|
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 |
|
 |
mtagliari2 Novato

Registrado: Quinta-Feira, 11 de Outubro de 2012 Mensagens: 41
|
Enviada: Dom Mar 24, 2013 9:59 pm Assunto: FANTASTIQUE!!! |
|
|
Resolvido, Obrigado!!!! |
|
Voltar ao Topo |
|
 |
mtagliari2 Novato

Registrado: Quinta-Feira, 11 de Outubro de 2012 Mensagens: 41
|
Enviada: Dom Mar 24, 2013 10:01 pm Assunto: |
|
|
Adriano, seria possível vc me explicar um pouco da logica dessa função? |
|
Voltar ao Topo |
|
 |
adriano_servitec Colaborador

Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
|
Voltar ao Topo |
|
 |
mtagliari2 Novato

Registrado: Quinta-Feira, 11 de Outubro de 2012 Mensagens: 41
|
Enviada: Dom Mar 24, 2013 10:14 pm Assunto: |
|
|
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 |
|
 |
adriano_servitec Colaborador

Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
|
Voltar ao Topo |
|
 |
|