Como fazer este update
Bom dia.
Estou com um problema, no campo do CNPJ do cadastro de clientes do meu sistema, pois ele foi cadastrado da seguinte forma #[color=red:70f77bf937][b:70f77bf937]-[/b:70f77bf937][/color:70f77bf937][color=red:70f77bf937][b:70f77bf937]-[/b:70f77bf937][/color:70f77bf937]/-
só que eu gostaria de trocar os dois primeiros (-), por (.), ficando assim [color=red:70f77bf937][b:70f77bf937].[/b:70f77bf937][/color:70f77bf937][color=red:70f77bf937][b:70f77bf937].[/b:70f77bf937][/color:70f77bf937]/- alguem tem uma dica de como fazer isto atraves de um [color=green:70f77bf937]update[/color:70f77bf937].
Exemplo
update CLIENTES
set CNPJ_CLIENTE = ....................................
Desde ja muito obrigado.
Luciano Ramos
Estou com um problema, no campo do CNPJ do cadastro de clientes do meu sistema, pois ele foi cadastrado da seguinte forma #[color=red:70f77bf937][b:70f77bf937]-[/b:70f77bf937][/color:70f77bf937][color=red:70f77bf937][b:70f77bf937]-[/b:70f77bf937][/color:70f77bf937]/-
só que eu gostaria de trocar os dois primeiros (-), por (.), ficando assim [color=red:70f77bf937][b:70f77bf937].[/b:70f77bf937][/color:70f77bf937][color=red:70f77bf937][b:70f77bf937].[/b:70f77bf937][/color:70f77bf937]/- alguem tem uma dica de como fazer isto atraves de um [color=green:70f77bf937]update[/color:70f77bf937].
Exemplo
update CLIENTES
set CNPJ_CLIENTE = ....................................
Desde ja muito obrigado.
Luciano Ramos
Luciano.sul
Curtidas 0
Respostas
Motta
16/07/2006
Diga o o bd pois estas funcões são proprietarias.
O melhor seria guardar a cgc/cpf sem formatação.
O melhor seria guardar a cgc/cpf sem formatação.
GOSTEI 0
Luciano.sul
16/07/2006
Primeiramente obrigado pela atencao.
O meu banco e FireBird. E somente agora eu descobri que seria melhor nao salvar o cnpj com o formato, mas agora e tarde demais.
Obrigado.
Luciano Ramos
O meu banco e FireBird. E somente agora eu descobri que seria melhor nao salvar o cnpj com o formato, mas agora e tarde demais.
Obrigado.
Luciano Ramos
GOSTEI 0
Motta
16/07/2006
Não conheço FB mas no Oracle tem uma function REPLACE que troca uma string por outrs no fb deve ter algo parecido.
No Oracle seria :
update tabela
set cgc = replace(cgc,´-´,´.´)
Troca todo traço por ponto.
Tente ajuda no fórum de FB/IB , deve ser simples.
No Oracle seria :
update tabela
set cgc = replace(cgc,´-´,´.´)
Troca todo traço por ponto.
Tente ajuda no fórum de FB/IB , deve ser simples.
GOSTEI 0
Steve_narancic
16/07/2006
Uma solução seria fazer um laço com While no Delphi substituindo os caracteres com a função StringReplace
GOSTEI 0
Luciano.sul
16/07/2006
Novamente obrigado pela atençao, mas tem que ser via SQL, pois as minhas atualizacoes sao via sql.
Obrigado
Luciano Ramos
Obrigado
Luciano Ramos
GOSTEI 0
Luciano.sul
16/07/2006
Novamente obrigado pela atençao, mas tem que ser via SQL, pois as minhas atualizacoes sao via sql.
Obrigado
Luciano Ramos
Obrigado
Luciano Ramos
GOSTEI 0
Leitorbinario
16/07/2006
Diga o o bd pois estas funcões são proprietarias.
O melhor seria guardar a cgc/cpf sem formatação.
por que proprietarias?
GOSTEI 0
Micheus
16/07/2006
[b:1239a8a606]luciano.sul[/b:1239a8a606],
faça um teste com este select antes de utilizar o update mais abaixo:
Se o resultado foi o esperado, então execute o update a seguir:
Ainda não é tarde demais. Se quizer removê-los, basta alterar o update acima de modo a retirar os caracteres ´-´ e ´/´:lembre-se de testar com select antes de aplicar o update.
Depois, no seu programa, modifique todas as máscaras de modo a inibir a gravação dos mesmos. Basta substituir o 1 por 0 nos maskedit´s. Ex.: ´#../-;[b:1239a8a606][color=red:1239a8a606]1[/color:1239a8a606][/b:1239a8a606];_´ por ´../-;[b:1239a8a606][color=red:1239a8a606]0[/color:1239a8a606][/b:1239a8a606];_´
[]s
faça um teste com este select antes de utilizar o update mais abaixo:
select CNPJ_CLIENTE, (substring(CNPJ_CLIENTE from 1 for 2)||´.´||substring(CNPJ_CLIENTE from 4 for 3)||´.´||substring(CNPJ_CLIENTE from 8 for 11)) CNPJ_CLIENTE_NOVO from CLIENTES
Se o resultado foi o esperado, então execute o update a seguir:
update CLIENTES set CNPJ_CLIENTE = substring(CNPJ_CLIENTE from 1 for 2)||´.´||substring(CNPJ_CLIENTE from 4 for 3)||´.´||substring(CNPJ_CLIENTE from 8 for 11) where substring(CNPJ_CLIENTE from 3 for 1) = ´.´
E somente agora eu descobri que seria melhor nao salvar o cnpj com o formato, mas agora e tarde demais.
Ainda não é tarde demais. Se quizer removê-los, basta alterar o update acima de modo a retirar os caracteres ´-´ e ´/´:
update CLIENTES set CNPJ_CLIENTE = substring(CNPJ_CLIENTE from 1 for 2)||substring(CNPJ_CLIENTE from 4 for 3)||substring(CNPJ_CLIENTE from 8 for 3)||substring(CNPJ_CLIENTE from 12 for 4)||substring(CNPJ_CLIENTE from 17 for 2) where substring(CNPJ_CLIENTE from 3 for 1) = ´.´
Depois, no seu programa, modifique todas as máscaras de modo a inibir a gravação dos mesmos. Basta substituir o 1 por 0 nos maskedit´s. Ex.: ´#../-;[b:1239a8a606][color=red:1239a8a606]1[/color:1239a8a606][/b:1239a8a606];_´ por ´../-;[b:1239a8a606][color=red:1239a8a606]0[/color:1239a8a606][/b:1239a8a606];_´
[]s
GOSTEI 0
Micheus
16/07/2006
Por um discuido, o teste na cláusula WHERE dos updates ficaram erradas:
- está [i:17a5db12e0]where substring(CNPJ_CLIENTE from 3 for 1) =[/i:17a5db12e0] [b:17a5db12e0][color=red:17a5db12e0]´.´[/color:17a5db12e0][/b:17a5db12e0]
- e deveria ser [i:17a5db12e0]where substring(CNPJ_CLIENTE from 3 for 1) =[/i:17a5db12e0] [b:17a5db12e0][color=red:17a5db12e0]´-´[/color:17a5db12e0][/b:17a5db12e0]
[]s
- está [i:17a5db12e0]where substring(CNPJ_CLIENTE from 3 for 1) =[/i:17a5db12e0] [b:17a5db12e0][color=red:17a5db12e0]´.´[/color:17a5db12e0][/b:17a5db12e0]
- e deveria ser [i:17a5db12e0]where substring(CNPJ_CLIENTE from 3 for 1) =[/i:17a5db12e0] [b:17a5db12e0][color=red:17a5db12e0]´-´[/color:17a5db12e0][/b:17a5db12e0]
[]s
GOSTEI 0
Motta
16/07/2006
Digo proprietárias pois alguns bd´s tem funções que não são ansi.
por exemplo o decode do Oracle.
Assim o sql só funciona para um bd.
por exemplo o decode do Oracle.
Assim o sql só funciona para um bd.
GOSTEI 0
Luciano.sul
16/07/2006
Valeu, :lol: nao adianta nada, que sabe, sabe mesmo.....
E isto ai.
Obrigado
Luciano Ramos
E isto ai.
Obrigado
Luciano Ramos
GOSTEI 0