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 

Script para inserir o numero 9 de SP?
Ir à página 1, 2, 3  Próximo
 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
adriano_servitec
Colaborador
Colaborador


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

MensagemEnviada: Ter Set 25, 2012 2:54 pm    Assunto: Script para inserir o numero 9 de SP? Responder com Citação

Pessoal algué fez algum script para alterar o digito dos telefones de São Paulo-SP para incluir um 9 na fresnte em firebird?

Quais os telefones que tem que mudar? Só celular ou todos? Capital o todo estado? Só o DD 11 ou mais algum?

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


Editado pela última vez por adriano_servitec em Qua Out 03, 2012 11:58 am, num total de 4 vezes
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Ter Set 25, 2012 3:15 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


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

MensagemEnviada: Ter Set 25, 2012 3:30 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Ter Set 25, 2012 3:55 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


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

MensagemEnviada: Ter Set 25, 2012 4:02 pm    Assunto: Responder com Citação

imex escreveu:
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.
Vc é um gênio amigo, parece que deu certo aqui.

Muito obrigado Imex.
_________________
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
adriano_servitec
Colaborador
Colaborador


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

MensagemEnviada: Sex Set 28, 2012 11:41 am    Assunto: Responder com Citação

Imex vi um pequeno problema na formatação que não tinha visto antes

No vaso no campo que formata o numero do telefone esta incluindo dois 9 antes e excluindo o ultimo numero

Exemplo

um telefone com ddd 11 e numero 82345678

Formatado deveria ficar (11) 98234-5678

E esta ficando (11) 99823-4567
_________________
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
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Sex Set 28, 2012 11:51 am    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


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

MensagemEnviada: Sex Set 28, 2012 11:56 am    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


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

MensagemEnviada: Qua Out 03, 2012 11:52 am    Assunto: Responder com Citação

Imex, vc sabe a regra para nextel?

Teve clientes meus reclamando que também foi incluido um 9 nos que tem radio nextel, e não deveria mostrar o nove na frente...

Não sei como é realmente a regra do nove na frente ai no seu estado.

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
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qua Out 03, 2012 12:24 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


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

MensagemEnviada: Qua Out 03, 2012 1:04 pm    Assunto: Responder com Citação

imex escreveu:
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.
Seria todos do DDD 11, nossa é bem trabalhoso, será que ai não vai envolver telefones com estes numeros também? Nem sabia que ai em SP o celular começa com 7 também
_________________
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
adriano_servitec
Colaborador
Colaborador


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

MensagemEnviada: Qua Out 03, 2012 1:31 pm    Assunto: Responder com Citação

Como monto um script para desfazer o que foi feito

o telefone que era

8819-7487

ficou
98819-7487

quero que volte a ficar com 8 digitos novamente
_________________
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
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qua Out 03, 2012 2:21 pm    Assunto: Responder com Citação

Para desfazer todos experimente desta forma:

Código:
set fone = substring(fone from 2)


Espero que ajude.
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: Qua Out 03, 2012 2:26 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qua Out 03, 2012 2:50 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Ir à página 1, 2, 3  Próximo
Página 1 de 3

 
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