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

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

Lá é COD_PROCESSO, mas se coloco

sc_redir(form_pagina_principal, COD_PROCESSO={COD_PROCESSO_SELETIVO});

Ele não passa o parametro.

Vc fez aquele teste alterando a variável pra GET?
la no form_pagina_principal, deixa o [COD_PROCESSO] marcado como Sessão, POST e GET… e depois abra ele pelo navegador e insira um codigo qualquer pra testar…

algo assim: http://127.0.0.1/projeto/form_pagina_principal/form_pagina_principal.php?COD_PROCESSO=2

Se funcionar certinho, pelo menos já vamos ter certeza que o form_pagina_principal está tudo ok… dai vamos pra outras possibilidades na apl controle mesmo…

Se vc criar uma ligação do tipo “Aplicação”, o sc está lhe perguntando qual campo será passado como parâmetro para esta global no form? Ou está criando a ligação “sem parâmetros”?

Tente refazer estes testes com a variavel definida como post e get tbm… mas é estranho acontecer isso hehe só pela ligação ele já deveria passar os parâmetros… Por acaso não tem algo nos eventos onInit e onLoad no form_pagina_principal que possa estar apagando o valor desta variavel?

Continua dando aquele erro “falta definir variavel global COD_PROCESSO”?

Acho que daqui a pouco descobrimos o que se passa com esse sc hehe

Coloquei o form_pagina_principal como GET e o controle marquei tudo: session, pot e get, e coloquei o link:

http://127.0.0.1:85/scriptcase/app/InscricaoConcurso/form_pagina_principal/form_pagina_principal.php?COD_PROCESSO=2

Não mostou o registro de codigo 2, apenas que “Não há registros a exbir”, mas tem o código 2.

Mas se rodo esta aplicação sozinha, antes de mais nada, ele pede a variável global COD_PROCESSO, digito 2 e vai pro registro com o código 2.

Se vc criar uma ligação do tipo “Aplicação”, o sc está lhe perguntando qual campo será passado como parâmetro para esta global no form? Ou está criando a ligação “sem parâmetros”?

Passo o parametro, mas não dá, dá a mesma mensagem de “Não há registros a exbir”, mas tem o código 2.

Por acaso não tem algo nos eventos onInit e onLoad no form_pagina_principal que possa estar apagando o valor desta variavel?

Não, tem nada nos eventos lá.

Continua dando aquele erro “falta definir variavel global COD_PROCESSO”?

Bom, agora não dá a mensagem, mas também não pega o registro pelo código selecionado.

Tá pedindo COD_PROCESSO porque tá marcado como ENTRADA eu acho.

Na SQL da aplicação chamada tem [COD_PROCESSO] na WHERE?