1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

Trigger de FIND para ocultar registros

Discussão em 'Progress 4GL' iniciado por af.dums, Dezembro 27, 2023.

  1. af.dums

    af.dums Membro Ativo

    Pessoal, boa noite...

    Estou com uma situação onde preciso ocultar alguns registros de algumas tabelas, o melhor caminho que encontrei foi criar uma trigger de FIND nestas tabelas, colocando a condicional nestas triggers e então fazendo um RETURN ERROR para os registros que não desejo visualizar, até aí o processo funciona muito bem... O problema acontece em tabelas onde o número de registros a serem ocultados é grande, a trigger "ferra" com a performance do FOR EACH, alguém já passou por alguma situação assim? Como resolveu?

    Obrigado.

    Att,
  2. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    Mas porque precisa ser tão extremo assim? Não é mais fácil colocar um campo "oculto = TRUE" nesses registros e ocultar em todas as querys que tu usar?
  3. af.dums

    af.dums Membro Ativo

    O problema é que são tabelas padrões TOTVS e são algumas, aí a ideia é ocultar em relatórios, consultas, cadastros... Aí a trigger de FIND pareceu uma boa solução, até encontrar esse problema de performance, no caso estou com esse problema na tabela item...
  4. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    Amigo, isso é gambiarra demais, não devia misturar dados dessa forma, pq vc não replicou a tabela totvs e separou os dados?

    Isso vai te dar um problema tão grave no futuro, não faz sentido algum ter esse tipo de customização
  5. af.dums

    af.dums Membro Ativo

    É uma solução temporária, por isso faz sentido para resolver o problema temporariamente, não considero gambiarra pois até a progress tem kbasrecom esta opção para ocultar registros, mas concordo que não fica a coisa mais legal do mundo... Até achei depois um topico do @bootstrapmaster que ele também precisou algo semelhante e teve problemas de performance também, inclusive sem fóruns gringos o pessoal menciona este problema... Enfim, estou buscando alternativas, grato pelo comentário com possíveis outras alternativas...
  6. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    Eu uso esse recurso, porque o pessoal não quer que usuario de um canal de venda veja os dados do outro canal de venda, nos especificos é facil de filtrar, mas se vai entrar numa tela do produto padrão eu faço o seguinte, não crio trigger no banco, ai é furada mesmo com indicou o Rafael.
    Vamos supor que eu quero rodar o ft0904 (consulta de notas fiscais), eu crio o meu FT0904.p numa pasta dos meus especificos, lá eu monto uma trigger virtual, e faço run no programa original.
    Código:
    on find of nota-fiscal do:
        if nota-fiscal.cod-canal-venda = 122 then return error.
    end.
    run ems2/ftp/ft0904.w.
    
    Quando sair do ft0904 a trigger deixa de existir.
    Se houver uma trigger de banco, ele executa também, então não perde nada dos controles que a datasul tenho posto ou até mesmo vc tenha posto em triggers direto de banco.

    Agora sobre a questão de performance, ai pra esse caso, é vc criar uma versão do programa em questão, e aplicar seu filtros, não tem jeito.
    Aqui eu já eu criei programa fazendo praticamente a mesma coisa, e tirei do menu o original forçando o pessoal a usar o meu.
    rafael.andrade curtiu isso.

Compartilhe esta Página