Preencher grid com retorno de uma procedure

Boa noite a todos,

Estou desenvolvendo uma aplicação que deve retornar os dados de uma procedure em uma grid.
A procedure está retornando corretamente as linhas quando chamo direto no banco de dados.

Criei a consulta com um sql genérico (select 1) e no onApplicationInit inseri o código para chamar a procedure.

$p_profissional_id = 2; 
$p_data = '2024-11-22';   

$sql = "CALL GetHorariosDisponiveis($p_profissional_id, '$p_data')";

sc_lookup(ds_horarios, $sql);

Criei um campo na grid com o nome horario para receber o valor.
No evento onRecord atribui o retorno da procedure ao campo

{horario} = {ds_horarios}[0][0];

Mas não é mostrado nenhum resultado na grid.

Testei no onApplicationInit com print_r e os dados estão na array {ds_horarios}

Se alguém já tiver passado por isso e puder ajudar agradeço.

Não vai Funcionar.

Faça a SP alimentar uma tabela e use essa tabela na grid.

1 Curtida

Bom dia Haroldo,

Entendi, pensei nisso mas fiquei com receio de acabar tendo dificuldade depois de controlar os dados de cada “navegação”, ou sessão. Teria alguma dica de como contornar isso? Talvez gravando no banco algum ID único, algo assim?

Sempre que carregar app grid limpe a tabela e popule a tabela via SP.

O restante o SC faz.

Caros, boa tarde.
Já passei por todos esses cenários.
Não sei qual é o Gestor de Banco de Dados que usas, eu uso Postgres.
No caso de depositar dados na tabela deves criar um campo que defina a sessão pois podes ter concorrência de outros utilizadores ao tentar aceder ao SP e sobrepor os valores, em mi caso mais um campo de data para depois de 1 ou 2 dias apagar os registos antigos.
E por último eu tenho varias aplicações Grid que se alimentam diretamente de SP donde o SQL da aplicação pode ficar assim por exemplo:

SELECT cod, descrip, valor FROM app.clientesdivida([idfilial],[idempresa])

Isso no meu caso funciona sem dificuldades.

Cumprimentos.

1 Curtida

Sessão e data para SP limpar registros antigos