** RESOLVIDO ** No filtro, ao escolher ir a outra aplicação

Criei uma consulta que inicia pelo filtro, onde não tem nenhuma regra de filtro, apenas lista em um Select os dados cadastrados numa tabela. Isso tá feito.

Agora preciso que, quando o usuário selecionar um dos itens listados, vá para outra aplicação. E também gravar a variável Global para o restante da aplicação. Esta parte que não sei.

Para exemplificar melhor vou descrever o requisito: O usuário deverá escolher qual o concurso que deseja, escolhido o concurso é aberto a página do concurso escolhido, uma vez que as etapas dos concursos são iguais, mudando apenas o concurso.

Alguém tem alguma sugestão?

1 Curtida

Continuo sem saber…

Criei um botão de acessar aplicação, mas ele entra na consulta, não quero que entre na consulta, quero que saia do filtro direto para uma nova aplicação.

Resolvi parte.

No filtro não tem como criar botões, então, fui em APLICAÇÃO e em NAVEGAÇÃO na URL de Saida defini a aplicação que queria e mudei o label do botão de sair, para acessar. rs.

Agora, onde definir nesta parte de filtro uma variável global, do tipo: sc_set_global([COD_PROCESSO]);
?

Ramos,

Toda vez que precisar de um formulário que não seja baseado em uma tabela, use uma aplicação controle.

Faça um controle com uma select com lookup dos concursos. No evento onChange da select use por exemplo a macro sc_redir() passando como parâmetro o ID do concurso para a outra aplicação/página que precisa. Vc pode também utilizar o código no onValidate do controle que terá o mesmo efeito, porém, redirecionando após clicar em OK.

Ok, estou tentando agora no controle. No onValidate coloco o sc_redir() conforme no Help. Mas como faço pra pegar o valor do item selecionado, numa variável global pra abrir a aplicação, já passando o valor do item selecionado?

Tipo, o campo é COD_PROCESSO_SELETIVO e a variável global será COD_PROCESSO.

Explica melhor a sua implementação!!!

Vou imaginar um cenário:
Vc tem uma tabela que guarda os processos
Processo_ID
Processo_Descricao

Numa select no controle chamada COD_PROCESSO_SELETIVO vc monta uma SQL:
SELECT Processo_ID, Processo_Descricao FROM tab_Processo ORDEM BY Processo_Descricao

No SC uma select sempre grava o primeiro campo e mostra o último. Na sc_redr() voce passa {COD_PROCESSO_SELETIVO} como parâmetro para a variável na aplicação chamada na redir. Neste caso o valor de {COD_PROCESSO_SELETIVO} vai ser o valor do campo Processo_ID.

Não me lembro bem agora mas acho que o parametro fica assim: COD_PROCESSO={COD_PROCESSO_SELETIVO}

Bom, criei aqui o controle, em campos, criei um campo chamado “Escolha” do tipo Select, em lookup de edição criei o SQL:

SELECT COD_PROCESSO_SELETIVO, DESCRICAO
FROM processo_seletivo
ORDER BY DESCRICAO

E no evento onValidade:
sc_redir(form_pagina_principal, COD_PROCESSO={COD_PROCESSO_SELETIVO});

Coloco a aplicação para rodar, seleciono um item e clico em OK, e dá a mensagem:

Falta definição das seguintes variáveis globais: COD_PROCESSO;

E apresenta o botão de “Retornar”. Mas antes dessa mensagem de erro, aparece o erro a seguir rapidamente redirecionando para esse outro erro que já apresentei:

ERRO
Undefined variable: COD_PROCESSO_SELETIVO

É isso.

Já tentei criar a variável de sessão e de saída colocando sc_set_global(COD_PROCESSO); mas continua não funcionando.

Testa o sc_redir com um valor fixo no parametro.
sc_set_global($COD_PROCESSO) -> Acho que é a sintaxe correta.

Troquei:

sc_redir(form_pagina_principal, COD_PROCESSO={COD_PROCESSO_SELETIVO});

Por:

sc_redir(form_pagina_principal, COD_PROCESSO=‘2’);

Nem tá pegando o valor 2 pra passar pra variável do outro formulário.

To completamente perdido.

E no Help diz:

sc_redir(aplx.php, parm1={clienteid}; parm2=“xxx”);

Mas ele não pega e nem tá criando uma variável global que pegue o COD_PROCESSO_SELETIVO selecionado do select do controle e passando para outro formulário.

Não seria, por acaso, o mesmo que um multi-empresa?

Mas nos tópicos sobre multi-empresa, o link para download do exemplo não funciona. Teria como alguém enviar pro meu e-mail este exemplo?

Obrigado.

Ramos,

Acho que é mais simples criar uma “Ligação” do tipo “Aplicação”, apontando pra outra apl e passando o valor do campo pra global de lá… não funciona assim?

Att.
Robson

Acho que a questão é:

Como definir uma variável global de sessão, pegando o dado de um lookup com select de um banco de dados para passar ao outro formulário?

Ramos,

Quando a variável global já está definida (sendo “solicitada”) na aplicação de destino, o sc já lhe dá a opção de selecionar qual campo será passado como parâmetro pra outra aplicação na hora de fazer a ligação…

Mas se preferir manualmente, dá pra usar a macro sc_set_global (como foi citado pelo Cleyton) no evento onvalidate por exemplo… ficaria algo assim:

$COD_PROCESSO = {COD_PROCESSO_SELETIVO};
sc_set_global($COD_PROCESSO);

Desta forma, será criada uma variavel em sessão chamada COD_PROCESSO, com o conteúdo do campo {COD_PROCESSO_SELETIVO}… Assim, basta utilizar [COD_PROCESSO] no sql da próxima aplicação (destino)…

Note que se vc tentar este mesmo processo num botão PHP, o valor do campo não será gravado em sessão, pois o mesmo precisaria ser gravado em sessão antes da execução do botão…

Tente verificar na aplicação de “destino”, em Aplicações -> Variáveis Globais, se a variável global está sendo “requisitada”… e defina ela como variável de Sessão e de Entrada.

Espero ter ajudado.

Att.
Robson

Então só pode ser erro no ScriptCase, porque fiz exatamente isso que vc falou, mas continua não funcionando.

Não era para aparecer em “Aplicações/Variáveis Globais” essa variavel Global criada no evento onChange? Utilizando:

$COD_PROCESSO = {COD_PROCESSO_SELETIVO};
sc_set_global($COD_PROCESSO);

Se era pra aparecer, não aparece. Não tem como configurar essa variável global criada no controle, dentro do evento onChange. Já tentei isso muitas e muitas vezes. E não aparece.

Já o formulário de destino, tá tudo ok, tem a variável, é saida, é de sessão. Só o controle, que é o incial, é que não tem a varável, porque o ScriptCase não o cria com o sc_set_global lá.

Ramos,

Só vai aparecer em “Aplicação -> Variáveis globais” no formulário de Destino, e não no controle… e lá tem que configurar esta variavel como de Entrada… tenta mudar pra ver se funciona…

Att.
Robson

Oi Robson,

Lá já tá como entrada e não funcionou:

Escopo = Session
Configuração = vazio (não selecionei)
Tipo = Entrada

Mesmo assim, não passa.

estranho… aonde vc está utilizando a variavel na aplicação de formulário? no SQL?
quando vc executa este formulário pelo ambiente de desenvolvimento e insere algum valor pra esta global, o formulário funciona?

Qualquer coisa tenta alterar de Sessão para GET, e quando executar o form, insira manualmente pelo navegador

http://…/aplicacao/aplicacao.php?COD_PROCESSO=2

Sim, quando executo só o formulário que estou chamando, ele pede o valor da variável, eu digito e funciona.

Mudei pra GET e continua.

Pequeno progresso:

No onValidade coloquei:

[COD_PROCESSO] = {COD_PROCESSO_SELETIVO};
sc_redir(form_pagina_principal, COD={[COD_PROCESSO]});

Desta forma sim, apareceu que é variável Global, então defini como Session e de Saida, porque deve enviar para o outro formulário.

Mas agora dá o seguinte erro:

Undefined variable: 2

E o 2 é o valor do campo selecionado no lookup.

Tá perto de finalizar esta novela… eu acho que tá tratando como objeto e não como string. Se for isso, como mudar pra string… ou outra solução.

quando vc seleciona o valor “2” no campo select, ele está procurando a váriavel “{2}” que não existe… tá bem estranho este problema, mas já que chegou até aí, arruma só este detalhe dos colchetes… deixa assim:

[COD_PROCESSO] = {COD_PROCESSO_SELETIVO};
sc_redir(form_pagina_principal, COD=[COD_PROCESSO]);

mas agora vc está passando a o parâmetro como COD e não como COD_PROCESSO… lá no formulário de destino, o nome da variável q vc está “chamando” é COD ou COD_PROCESSO?

Att.
Robson