1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
  2. Anuncie Aqui
    Anuncie aqui você Também: fdantas@4each.com.br

For each em Todo Banco de Dados

Discussão em 'Progress 4GL' iniciado por edevil, Maio 6, 2015.

  1. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    É mais fácil vc usar o pesquisator (Sessão Download), ver quais tabelas vc vai alterar e fazer um código específico pois, esse tipo de alteração que vc está querendo não é recomendável por ser lenta e por motivos de segurança por alterar o que não devia.
  2. SAC

    SAC Membro Participativo

    Certa vez fiz uma upc para o cd0205(troca de código), para ler a _file e sempre alterar também em todas as tabelas específicas o código do produto a vulnerabilidade que tinha nesta "solução" era alguém criar o nome do campo fora do padrão, daí já era... Que é o mesmo risco que você corre até procurando no "olho".
  3. edevil

    edevil Membro Participativo

    Entendi,
    O problema que pro Pesquisator eu terei que saber o nome dos campos nas tabelas. E eu não sei todos

    Imagino o risco de uma alteração dessa, mas seria interessante ter essa opção.

    Alias, deve ter né, mas tem que montar, rss
  4. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    ai meu caro não tem jeito, vc tem que saber onde mexer, tem casos que o nome de usuario e outras informações ficam em campos char-1, char-2, se for no financeiro, livre-1, livre-2 e tudo mais .... é praticamente uma missão impossivel se for considerar de um programa fazer isso pra vc, e mesmo que consiga, o programa vai levar horas .....

    vc teria que montar uma lista com o nome de todas as tabelas do sistema, ai vc tem que ir no _File de cada banco.
    Depois monta a query dinamica para cada tabela, passa um comando for each pra query sem filtros, pois vc quer ler tudo ....., pra cada registro, vc acha os campos do tipo character e faz um replace e salva o registro, mas ai tem um detalhe, a query traz pra vc o registro pro buffer, pra vc posicionar o registro e salvar, teria que fazer um find current tabela exclusive-lock e saber o campo pra salvar, pelo menos nas minhas pesquisas com query dinamica, não achei um comandinho pra alterar dados na base a partir da query sem ser manual
  5. rlfritz

    rlfritz Membro Ativo

    E mais um detalhe... para contribuir com o Richard ...
    Se você alterar um campo que seja chave primária (ou parte de uma chave/índice), e não alterar em alguma outra tabela (onde o campo seja chave estrangeira)... você irá corromper a estrutura dos dados.
    Além de que não sei como o FOR EACH se comportaria quando você altera um campo que seja parte índice primário (que é formado por uma chave estrangeira). ... compliquei
  6. edevil

    edevil Membro Participativo

    Seria uma bomba para o Banco de Dados. Mas uma solução simples que pensei com a idéia do bootstrapmaster , seria um programa para montar os for each's de acordo com cada _file encontrada onde _field._data-type = "character", e a partir dai executar a infinidade de for each's tentando encontrar o cara. Acho que vale um experimento utilizando apenas o básico do Progress, rss

Compartilhe esta Página