Outras formas de variáveis globais

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
Avatar do usuário
tfg
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 83
Registrado em: Seg, 03 Mai 2004 3:38 pm
Localização: Novo Hamburgo - RS

Como crio uma variável que pode ser manipulada em todas procedures de um Form sem usar GLOBAIS ?
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

GLOBAIS

Realmente, globais não são legais, pois ocupam 256 bytes e sempre são CHAR. (pode-se até guardar numbers, mas eles são convertidos na hora do usar).

Selecionar tudo

:global.sua_var:='sua_string';
PARAMETROS

Tem também os PARAMETROS, que são melhores que globais, pois suportam um número maior de bytes. (não apenas 256).

Selecionar tudo

:parameter.seu_par:='sua_string';
PACKAGES DE FORMS - Melhor prática!

Você cria um PACKAGE SPECS e declara uma variável ali. Assim pode usa-la ou muda-la em qualquer parte do programa. (é claro, podendo usar todos tipos de variáveis, inclusive BOOLEAN).

Selecionar tudo

PACKAGE PKG_TESTE IS
  sua_var     varchar2(10):='TESTE';
  valida_trig boolean;
END;
Acho que as globais devem ser utilizadas apenas quando se deseja transferir informações entre vários formulários distintos. Se for só entre procedures do mesmo formulário, o melhor é usar pacotes de variáveis.
eduardo
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 56
Registrado em: Ter, 10 Jul 2007 3:24 pm
Localização: sp
Sempre há algo a aprender....

aconteceu uma coisa comigo hoje: ao atribuir um valor numerico a minha variavel global em runtime deu o erro 06502 : inconsistent datatypes; eu tive que meter um to char na atribuição.

:global.conta_transacoes = to_char(3);

isso de atribuir letra pra numero é a partir de qual versão do forms?
mprocha
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 19
Registrado em: Sex, 11 Jul 2008 11:14 am
Localização: Campinas - SP
Marcos Pinheiro da Rocha
Desenvolvedor Java/Forms/PL-SQL

As packages podem ser tambem utilizadas de forma global entre os forms invocados, porem elas devem ser definidas em PLL e a mesma deve ser atachada em todos os forms que utilizarão essas variaveis globais.
Na hora de chamar os forms deve-se utilizar o CALL_FORM passando o parametro SHARE_LIBRARY_DATA (COMPARTILAMENTO DE DADOS DE BIBLIOTECAS), com isso as variaveis definidas e atribuidas nessas packages podem ser manipuladas por todos os forms que compartilham dessa PLL.
Eu particularmente utilizo muito para popular e ler Arrays entre um form e outro.
Abs,
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 7 visitantes