|
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
|
Voltar ao Topo |
|
|
imex Moderador
Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Ter Set 25, 2012 3:15 pm Assunto: |
|
|
Adriano, não cheguei a montar não, acho que vai depender um pouco da estrutura da tabela (DDD separado ou junto com o telefone, e campo específico para celular ou não).
Sobre a mudança, ela afeta apenas os celulares de DDD 11. Não pesquisei a fundo, mas a princípio são os números que começam com 6, 7, 8 ou 9.
Editado pela última vez por imex em Qua Out 04, 2023 2:49 pm, num total de 1 vez |
|
Voltar ao Topo |
|
|
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Ter Set 25, 2012 3:30 pm Assunto: |
|
|
imex escreveu: | Adriano, não cheguei a montar não, acho que vai depender um pouco da estrutura da tabela (DDD separado ou junto com o telefone, e campo específico para celular ou não).
Sobre a mudança, ela afeta apenas os celulares de DDD 11. Não pesquisei a fundo, mas a princípio são os números que começam com 6, 7, 8 ou 9.
| Ainda existe esta regra?
Não sei como são os telefones residenciais ai de SP, mais se o numero começa com 6, 7, 8 e 9 então fica um pouco mais facil de alterar aqui.
Na minha tabela tenho um campo chamado DDD aonde tem o 11, e outro chamado telefone que tem o numero do telefone e outro campo chamado telefone_formatado que seria o DDD + Telefone = (11) 9999-9999 que se der para arrumar tem que alterar para (11) 99999-9999.
Creio que pra fazer isso em firebird somente por uma SP. Sabe como fazer isso amigo? _________________ 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 |
|
|
imex Moderador
Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Ter Set 25, 2012 3:55 pm Assunto: |
|
|
Experimente desta forma:
Código: | update Tabela
set Fone = '9' || Fone,
FoneFormat = '(' || Ddd || ') 9' ||
substring(Fone from 1 for 4) || '-' ||
substring(Fone from 5 for 4)
where Ddd = '11' and
substring(Fone from 1 for 1) between '6' and '9' |
obs: testei superficialmente
Espero que ajude. |
|
Voltar ao Topo |
|
|
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
|
Voltar ao Topo |
|
|
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
|
Voltar ao Topo |
|
|
imex Moderador
Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Sex Set 28, 2012 11:51 am Assunto: |
|
|
Não testei, mas experimente alterar o trecho abaixo:
Código: | FoneFormat = '(' || Ddd || ') ' ||
substring(Fone from 1 for 5) || '-' ||
substring(Fone from 6 for 4) |
Espero que ajude. |
|
Voltar ao Topo |
|
|
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Sex Set 28, 2012 11:56 am Assunto: |
|
|
imex escreveu: | Não testei, mas experimente alterar o trecho abaixo:
Código: | FoneFormat = '(' || Ddd || ') ' ||
substring(Fone from 1 for 5) || '-' ||
substring(Fone from 6 for 4) |
Espero que ajude. |
Não deu certo, mais fiz assim e parece que assim da certo.
Código: |
UPDATE TESTE
SET TESTE.TELEFONE = '9' || TESTE.TELEFONE,
TESTE.TELEFONE_FORMATADO = '(' || TESTE.PREFIXO || ') 9' ||
SUBSTRING(TESTE.TELEFONE FROM 2 FOR 4) || '-' ||
SUBSTRING(TESTE.TELEFONE FROM 6 FOR 4)
WHERE TESTE.PREFIXO = '11' AND
SUBSTRING(TESTE.TELEFONE FROM 1 FOR 1) BETWEEN '6' AND '9' |
To testando ainda Imex
Obrigado. _________________ 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 |
|
|
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
|
Voltar ao Topo |
|
|
imex Moderador
Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qua Out 03, 2012 12:24 pm Assunto: |
|
|
Também não sabia dessa exceção para os Nextel; o 9 não deve ser adicionado neste caso.
Encontrei a página abaixo no site da Nextel com os prefixos deles (acho que a lista inclui todos os DDDs):
http://www.nextel.com.br/NextelWebSite/atendimento-ao-cliente/nono_digito/lista_prefixos_nao_mudam.aspx
Vai ficar um pouco longo, mas a princípio teria que adicionar mais uma condição no where para não processar aqueles prefixos; acho que poderia ser utilizado um "SubString not in ('7001', '7002', ...)".
Espero que seja útil. |
|
Voltar ao Topo |
|
|
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
|
Voltar ao Topo |
|
|
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
|
Voltar ao Topo |
|
|
imex Moderador
Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qua Out 03, 2012 2:21 pm Assunto: |
|
|
Para desfazer todos experimente desta forma:
Código: | set fone = substring(fone from 2) |
Espero que ajude. |
|
Voltar ao Topo |
|
|
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Qua Out 03, 2012 2:26 pm Assunto: |
|
|
imex escreveu: | Para desfazer todos experimente desta forma:
Código: | set fone = substring(fone from 2) |
Espero que ajude. | Não entendi Imex, desculpe
E ja vou deixar aqui o script caso alguém precise, e espero que seja desta forma a regra agora
Código: | UPDATE TESTE
SET TESTE.TELEFONE = '9' || TESTE.TELEFONE,
TESTE.TELEFONE_FORMATADO = '(' || TESTE.PREFIXO || ') 9' ||
SUBSTRING(TESTE.TELEFONE FROM 2 FOR 4) || '-' ||
SUBSTRING(TESTE.TELEFONE FROM 6 FOR 4)
--POR ENQUANTO SOMENTE DDD DE SÃO PAULO
WHERE TESTE.PREFIXO = '11' AND
--SOMENTE CELULARES QUE INICIA COM 6 ATÉ 9
SUBSTRING(TESTE.TELEFONE FROM 1 FOR 1) BETWEEN '6' AND '9' AND
--PREFIXO DA NEXTEL QUE NÃO PODEM MUDAR
SUBSTRING(TESTE.TELEFONE FROM 1 FOR 4) NOT IN ( '7000','7001','7002','7003',
'7004','7005','7006','7007','7008','7009','7010','7701','7702','7703','7704',
'7705','7706','7707','7708','7709','7710','7711','7712','7713','7714','7715',
'7716','7717','7718','7719','7720','7721','7722','7723','7724','7725','7726',
'7727','7728','7729','7730','7731','7732','7733','7734','7735','7736','7737',
'7738','7739','7740','7741','7742','7743','7744','7745','7746','7747','7748',
'7749','7750','7751','7752','7753','7754','7755','7756','7757','7758','7759',
'7760','7761','7762','7763','7764','7765','7766','7767','7768','7769','7770',
'7771','7772','7773','7774','7775','7776','7777','7778','7779','7780','7781',
'7782','7783','7784','7785','7786','7787','7788','7789','7790','7791','7792',
'7793','7794','7795','7796','7797','7798','7799','7800','7802','7803','7804',
'7805','7806','7807','7808','7809','7810','7811','7812','7813','7814','7815',
'7816','7817','7818','7819','7820','7821','7822','7823','7824','7825','7826',
'7827','7828','7829','7830','7831','7832','7833','7834','7835','7836','7837',
'7838','7839','7840','7841','7842','7843','7844','7845','7846','7847','7848',
'7849','7850','7851','7852','7853','7854','7855','7856','7857','7858','7859',
'7860','7861','7862','7863','7864','7865','7866','7867','7868','7869','7870',
'7871','7872','7873','7874','7875','7876','7877','7878','7879','7880','7881',
'7882','7883','7884','7885','7886','7887','7888','7889','7890','7891','7892',
'7893','7894','7895','7896','7897','7898','7899','7901','7902','7904','7912',
'7913','7914','7915','7916','7917','7718','7719','7920','7923','7924','7928',
'7929','7930','7931','7932','7934','7935','7936','7937','7938','7939','7940',
'7941','7942','7943','7944','7945','7946','7947','7948','7949' )
|
Obs: Não sei se pulei algum prefixo ai do nextel, mais tentei fazer conforme vi no site que o Imex postou
Outra coisa amigo, sabe dizer como utilizo algo parecido com o CHAR_LENGTH do firebird 2.x, pois no fb 1.5 não tem esta função, e quero incluir mais uma condição no where para quando o total do campo telefone for = 9 não executar novamente para não ficar colocando 9 na frente de quem ja foi.
E se tiver UDF char_length para 1.5 não quero registrar esta UDF prefiro algo nativo.
Obrigado. _________________ 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 |
|
|
imex Moderador
Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qua Out 03, 2012 2:50 pm Assunto: |
|
|
Para desfazer experimente:
Código: | UPDATE TESTE
SET TESTE.TELEFONE = SUBSTRING(TESTE.TELEFONE FROM 2),
TESTE.TELEFONE_FORMATADO = '(' || TESTE.PREFIXO || ') ' ||
SUBSTRING(TESTE.TELEFONE FROM 1 FOR 4) || '-' ||
SUBSTRING(TESTE.TELEFONE FROM 5 FOR 4) |
Se não for utilizado o parâmetro For da função SubString são retornados todos os caracteres a partir da posição passada no parâmetro From.
Para verificar se o telefone já tem 9 dígitos, experimente utilizar também a função SubString, que deve retornar o equivalente a EmptyStr se não houver nada após a posição do From. Ex:
Código: | where SUBSTRING(TELEFONE FROM 9) = '' |
Considerando que o conteúdo de Telefone é 82345678, a condição deverá ser verdadeira, pois não tem nada a partir da posição 9.
Espero que ajude. |
|
Voltar ao Topo |
|
|
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|