Como fazer este update

Delphi

16/07/2006

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


Luciano.sul

Luciano.sul

Curtidas 0

Respostas

Motta

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.


GOSTEI 0
Luciano.sul

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


GOSTEI 0
Motta

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.


GOSTEI 0
Steve_narancic

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

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


GOSTEI 0
Luciano.sul

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


GOSTEI 0
Leitorbinario

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

Micheus

16/07/2006

[b:1239a8a606]luciano.sul[/b:1239a8a606],
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) = ´.´
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


GOSTEI 0
Micheus

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


GOSTEI 0
Motta

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.


GOSTEI 0
Luciano.sul

Luciano.sul

16/07/2006

Valeu, :lol: nao adianta nada, que sabe, sabe mesmo.....

E isto ai.

Obrigado
Luciano Ramos


GOSTEI 0
POSTAR