[RESOLVIDO] Não usar Var globais

Discussão em 'EMS , HCM e Totvs 11' iniciado por fabianofss, Novembro 28, 2014.

Status do Tópico:
Não esta aberto para novas mensagens.
  1. fabianofss

    fabianofss Membro Participativo

    Bom dia a todos,
    Vi no fórum que é altamente desaconselhável usar variáveis globais.
    Recentemente fiz uma rotina bem complexa com varias telas e tabelas onde usei varias globais do tipo rowid.

    Como eu poderia ter feito pra evitar isso, digo abrir vários programas trazendo o registro que estou trabalhando.

    Aproveitando tenho como criar parâmetros em um programa de formar que ele pode ser passado na chamada ou não?
  2. jeanhype

    jeanhype Sem Pontuação

    Algumas vezes é inevitável(ou desejável) o uso de variáveis globais porem sempre que puder utilize a passagem de parâmetros. Hoje em dia com as versões mais novas do progress(10.x ou superior essas variáveis não tem causado grandes problemas).
    É possível sim você chamar programas(com ou sem interface) passando parâmetros sem utilizar variáveis globais. Infelizmente não tenho a mão um exemplo mas é bem simples. Uma das maneiras é passar o parâmetro para a tela principal do programa(que será aberto) e posicionar a query no seu rowid.(na local-initialize provavelmente funcione). no próprio datasul isso é muito utilizado quando você tem telas de consultas ou detalhes.
    abraço.
  3. fabianofss

    fabianofss Membro Participativo

    Vlw pela dica!
    mas dai quando eu for chamar essa tela sem seguir o fluxo normal!
    Ex: em uma situação fora do normal tenho que chamar a 3º tela da rotina mas não tenho parâmetro e nem como passa-lo (pelo menu)...
    foi por este motivo que adotei a global!
    fiz o correto?
  4. jeanhype

    jeanhype Sem Pontuação

    se não tem como passar fez sim..
    como eu disse a cima algumas vezes é necessário.
    abraço
  5. pizzaia

    pizzaia Membro Participativo

    olá.
    fizemos uma include com uma variavel string global. nesta include tem uma procedure para setar o valor usando a função overlay e uma função para pegar o valor da posição.
    ou seja, uma variável global string para guardar diversas informações, não é bonito, mas mantém o uso de apenas uma variável global.

    exemplo:
    posicao 1 a 50 - rowid tabela x
    posicao 50 a 100 - rowid tabela y
    posicao 100 a 150 - rowid tabela z
    posicao 150 a 155 - codigo xxxxxx

    no teu programa usa as procedures e funções para cada informação.
    run setRowidTabelaX(input....
    assign vrowid = getRowidTabelax....

    run setRowidTabelaY(input....
    assign vrowid = getRowidTabelaY....


    no caso do rowid converta para string...
  6. fabianofss

    fabianofss Membro Participativo

    Esta solução realmente seria ótima!
    vou adota-la na próxima oportunidade, só que pra isso ser funcional tem que manter uma documentação sobre o posicionamento de cada registro atualizada
    e hoje tenho um pequeno problema de equipe quando o assunto é seguir padrão, documentar ou ler documentação!
    rsrsrs

    mas vlw!
Status do Tópico:
Não esta aberto para novas mensagens.

Compartilhe esta Página