Apresentar um campo de uma tabela no cabeçalho do menu

Bom dia!
Recorro de novo aos mais “velhos”
Estou de novo com problemas pela falta de experiência com o scriptcase (novatadas :slight_smile: )

Pretendo que no cabeçalho do menu da minha aplicação apareçam 2 informações. À esquerda o nome da escola (que estou a colocar numa variável local depois de fazer um select para trazer o valor no evento OnAplicationInit do menu (Figura onAplicationInit.png)) e à direita o usuário e o nome do usuário que está logado (isto está a funcionar bem. Ver a figura SINESP.png).

Para colocar as informações, ponho o nome das variáveis no layout-cabeçalho e rodapé do menu (figura Menu_scriptcase).

Salvo a aplicação e quando mando gerar o fonte aparece o erro indicado na figura erro_gerar_fonte.png.

Notas:

  1. A aplicação funciona com 2 bancos de dados. Um mysql onde se encontram as tabelas do módulo de segurança do scriptcase que está a funcionar corretamente. O outro, é um banco SQL SERVER que está num outro datacenter e que traz as informações dos alunos. Todas as consultas e tudo o que já fiz dentro da aplicação está a funcionar bem e como esperado, menos esta situação relatada no erro.

A conclusão a que chego na minha muito pouca experiência com a ferramenta é a de que, provavelmente, a ligação ao banco que está ativa no momento do evento onAplicationIninit do menu seja a do mysql (por ter sido usada na validação do login no momento imediatamente anterior) e não a do sqlserver.

Como funciona isto internamente nas aplicações geradas? As ligações aos bancos são abertas no momento da validação do login e mantém-se abertas, ou vão sendo abertas e fechadas quando necessário?
Se for este o caso, como posso modificar o código que mostro na imagem OnAplicationInit.png de forma a forçar a ligação com o banco sqlserver antes de usar a macro sc_lookup?

Obrigado

Faça leitura de seus valores no evento onload, coloque os resultados em variáveis globais e insira essas variáveis globais no cabeçalho.

variáveis globais no scriptcase são representadas por [ ].

[Var_Global] = ‘qualquer coisa’;

Coloque no cabeçalho: [Var_Global]

Bom dia. obrigado Haroldo.
Então, em vez de fazer no fim do meu sql
$nome_escola = {escola};

faço
[nome_escola] = {escola}; e coloco tudo no load em vez de no onaplicationinit, é isso?

o local onde vc atribui valor a {escola} atribua o valor direto na global.

{escola} não existe no menu.

Entre chaves representam campos scriptcase ou atributos scriptcase, no menu não existe campos scriptcase. A não ser que tenha criado como atributo (opção que eu nunca usei por achar que não funciona)

Ok. Vou tentar. Já dou retorno

Não. Continua a dar o mesmo erro no momento de gerar os fontes.
O select é básico. Não pode ter erro.

sc_lookup(meus_dados, “SELECT t_driver.c_nomeescola FROM t_driver”);

if ({meus_dados} === false)
{
echo "Erro de acesso. Mensagem = " . {meus_dados_erro};
}
elseif (empty({meus_dados}))
{
echo "ERRO - Nome da escola não encontrado ";
}
else
{
[nome_escola] = {meus_dados[0][0]};
}

Haroldo, tenho de sair agora (umas 3 horas). Quando regressar venho se tenho mais sugestões e volto a tentar.
Obrigado pela disponibilidade

SELECT t_driver.c_nomeescola FROM t_driver

não tem where?

Mudou o código para o evento onload?

Olá, já cheguei
O sql não tem where. A tabela t_drive é uma tabela com um único registo onde são guardadas as informações que não variam da escola (nome, morada, telefone, logotipo, etc.)
Sim, mudei para o unload. O que me parece muito estranho é a mensagem de erro apontar mesmo para o Select. Já verifiquei se tinha algum erro de digitação no campo (c_nomeescola) ou na tabela (t_driver). Dai estar a pensar que poderá ser a ligação ao banco de dados que nesse momento ainda não está aberta. Sera?

Não é isso.

Coloque esse código numa blank e execute. Habilite modo debug e nos apresente aqui.

Oi
Coloquei num blank. Habilitei o modo debug. Ao mandar gerar o fonte compila sem problemas mas ao correr a aplicação dá o erro 500 no browser e não chega a mostrar nada do debug

Sua conexão com o banco é pdo?

Penso que sim. Estou a trabalhar com o alojamento da própria scriptcase. Quer aceder pela minha máquina para ver?. Posso usar o anydesk ou o teamviewer

Até pq todo o resto está a funcionar bem. Ou seja, a ligação com banco sqlserver está a funcionar

Pelos testes realizados via acesso remoto, na minha observação a aplicação estava corrompida. Ao criar uma aplicação nova, tudo pareceu funcionar.

1 Curtida