Rogerio

Declarando Variáveis no WD

7 posts in this topic

Pessoal, tenho algumas dúvidas quanto as variáveis no WD.

Crio uma Procedure01 e dentro dela irei chamar outras procedures02, 03, etc, as quais não gostaria de ficar passando parâmetros de variáveis que precisam serem lidas nelas,e muito menos declarar variaveis global no projeto para isso.

Com declaro variaveis na Procedure01 para que sejam reconhecidas nas procedures abaixo dela,

Tentei fazer uma sessão Global na procedure mas diz que é proibido Global nela.. 

Obrigado.

Rogério.

Share this post


Link to post
Share on other sites

Excelente pergunta...

Conforme manual.. segue...

Regra de escopo variável

Regra

A regra de escopo variável é a seguinte:
  • Se uma variável "global" para o projeto e uma variável "global" para uma janela tiverem o mesmo nome:
    • a variável "global" na janela será usada em todos os eventos ou processos da janela e seus controles, bem como nos procedimentos "locais" da janela.
    • a variável "global" para o projeto será usada em todos os outros processos .
  • Se uma variável "global" para o projeto e uma variável "local" para um processo tiverem o mesmo nome:
    • a variável "local" será usada apenas no processo em que essa variável foi declarada.
    • a variável "global" para o projeto será usada em todos os outros processos .
  • Se uma variável "global" com uma janela e uma variável "local" com um processo dessa janela tiverem o mesmo nome:
    • a variável "local" será usada apenas no processo em que essa variável foi declarada.
    • a variável "global" na janela será usada em todos os outros eventos ou tratamentos da janela e seus controles (incluindo os procedimentos "locais" da janela).
    • nenhuma das duas variáveis pode ser usada no restante do projeto.
 
Nota: As variáveis são específicas para o executável, o serviço da Web ou a sessão WEBDEV na qual foram declaradas.


Opção de compilação 

Uma opção de compilação é usada para gerenciar o escopo das variáveis locais: Escopo das variáveis locais limitadas ao bloco atual .

Se esta opção for selecionada, as variáveis locais serão específicas para o bloco em q estão localizadas. Não é possível usar uma variável local fora do bloco em que está declarada. A finalização da variável é executada no final do bloco (destruindo e liberando as mesmas da memória).
 
É possível redeclarar uma variável com o mesmo nome em dois sub-blocos separados, mas não é possível redeclarar uma variável com o mesmo nome em um sub-bloco filho.
 
Esta opção é selecionada por padrão para novos projetos.
 
Para alterar esta opção:
  1. Exiba a janela de descrição do projeto: no painel "Projeto", no grupo "Projeto", clique em "Descrição".
  2. Na guia "Compilação", marque ou desmarque a opção "Escopo de variáveis locais limitadas ao bloco atual".

Exceção

A regra de escopo de variável não se aplica a constantes ou a variáveis de tipo de fonte de dados .
 

Caso especialReports & Queries

  • As variáveis globais do projeto podem ser usadas em relatórios e consultas criadas / modificadas com o software "Reports & Queries".
  • Os itens para os quais a opção "Visível ao usuário final no software "Reports & Queries" está marcada no editor de modelo de dados podem ser usados no software "Reports & Queries". Se esta opção não estiver marcada, a seção poderá ser usada apenas por indirection (o recurso de auto-complete não estará disponível ao usuário, o item não estará disponível nos assistentes, nas Descriptions das Windows, etc...).
1 person likes this

Share this post


Link to post
Share on other sites

E ai Cassiano blz,, veja se explico melhor agora.. 

Dei uma olhada no help, mas a questão é que estou em GlobalProcedures , onde tenho várias procedures, como declaro uma variável em uma dessas procedures, pois não reconhece a variavel quando chamo outra função..

Procedure GerarPedido()

itens is int = 0

--> aqui chamo a procedure  Itens_pedido()

 

Procedure Itens_pedido()

itens não é reconhecido,, e não quero passar a mesma por parametro.. se for possivel isso..e nem dizer que é global fora das procedures..

Obrigado.

Share this post


Link to post
Share on other sites

Sem passar a variável para a procedure não conheço a não ser se fosse global

No teu exemplo ali somente se passasse Itens_Pedido(Itens)

 

Share this post


Link to post
Share on other sites
1 hora atrás, Cassiano disse:

Sem passar a variável para a procedure não conheço a não ser se fosse global

No teu exemplo ali somente se passasse Itens_Pedido(Itens)

 

Pois é no Harbour temos a variável Private que ai vale para as demais abaixo da função.. 

Obrigado, aguardar se alguem sabe alguma outra forma.. 

Share this post


Link to post
Share on other sites

Rogério,

Então aproveite a mesma ideia do HARBOUR e ao invés de pensar em uma procedure de cada vez, declare uma classe onde seus atributos automaticamente serão globais para todos os métodos que compuserem a CLASSE.

Att

 

1 person likes this

Share this post


Link to post
Share on other sites
Em 23/03/2020 at 3:55 PM, Mello Junior disse:

Rogério,

Então aproveite a mesma ideia do HARBOUR e ao invés de pensar em uma procedure de cada vez, declare uma classe onde seus atributos automaticamente serão globais para todos os métodos que compuserem a CLASSE.

Att

 

opa,, boa idéia Mello

Obrigado irei pensar nisto..

[],s

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now