[RESOLVIDO] Aparecer nome com sc_lookup

Fiz debug e apareceu isso no formulário:
(mysqlt): SELECT count(*) from gerirdeliberacoes
(mysqlt): SELECT id_deliberacoes, datadeliberacao, deliberacao, fichasinali_id_ficha from gerirdeliberacoes order by id_deliberacoes LIMIT 0,1
(mysqlt): SELECT fichasinali.id_ficha, fichasinali.idoso_id_idoso, gerirdeliberacoes.id_deliberacoes FROM fichasinali LEFT OUTER JOIN gerirdeliberacoes ON fichasinali.id_ficha = gerirdeliberacoes.fichasinali_id_ficha WHERE gerirdeliberacoes.id_deliberacoes=3 ORDER BY fichasinali.idoso_id_idoso

Ficha Nº
(mysqlt): SELECT id_ficha, id_ficha FROM fichasinali ORDER BY id_ficha

O meu problema é que não está a mostrar o nome do idoso no formulário - através de campo label que criei(que vai buscar a outra tabela) e o objectivo é esse.
Na consulta já criei também a ligação à aplicação.

Vou tentar explicar melhor. Tenho esse Sql:
SELECT
fichasinali.id_ficha,
fichasinali.idoso_id_idoso,
gerirdeliberacoes.id_deliberacoes
FROM
fichasinali LEFT OUTER JOIN gerirdeliberacoes ON fichasinali.id_ficha = gerirdeliberacoes.fichasinali_id_ficha
WHERE
(gerirdeliberacoes.id_deliberacoes>0)
ORDER BY
fichasinali.idoso_id_idoso

Que me dá o seguinte resultado:
id_ficha idoso_id_idoso id_deliberacoes
3 3 1

Com isto preciso que no formulário apareça o nome do Idoso nº 3. E não estou a conseguir mudando o WHERE para: gerirdeliberacoes.id_deliberacoes={fichasinali.id_ficha}.

Também já tentei com a instrução que o Jailton me explicou de usar [glo_id_ficha], mas o problema é que mostra o nome do Idoso nº 1 e devia mostrar o nome do Idoso nº 3. Ou seja ele não está a identificar o idoso que está associado à ficha 3.
Não sei se deu para entender melhor.

Qual evento atribui o código do sc_lookup?

No onLoad porque o onLoadRecord não permite porque o formulário está como Único Registo.

quando se usa LEFT OUTER JOIN pode haver falhas e vir colunas com null.

Eu sei Haroldo. Mas o meu problema é que não estou a conseguir fazer aparecer o nome do Idoso com a instrução do sc_lookup.

A solução foi fazer um SQL novo juntando a tabela que tinha a informação do Idoso. Ao fazer isto pude ir buscar o nome do Idoso através de um campo único (na tabela Idoso) que é o id_processo e que permitiu associar corretamente a informação pretendida.
Assim, a instrução que coloquei num método PHP do formulário foi a seguinte:
/* Macro sc_lookup /
$sql ="
SELECT
fichasinali.id_ficha,
fichasinali.idoso_id_idoso,
fichasinali.idoso_id_processo,
gerirdeliberacoes.id_deliberacoes,
gerirdeliberacoes.fichasinali_id_ficha,
idoso.id_processo,
idoso.id_idoso
FROM
idoso INNER JOIN fichasinali ON idoso.id_idoso = fichasinali.id_ficha
LEFT OUTER JOIN gerirdeliberacoes ON fichasinali.idoso_id_idoso = gerirdeliberacoes.fichasinali_id_ficha
WHERE
(gerirdeliberacoes.id_deliberacoes>0)
ORDER BY
idoso.id_processo
";
sc_lookup(idos, $sql); // Variável array de pesquisa use no mínimo 4 caracteres, não use nome de tabelas ou campos, ou palavras do PHP, SC.
/
Erro no lookup /
if (FALSE === {idos}) {
sc_error_message(“Ocorreu um erro no acesso ao banco de dados.”);
}
elseif (empty({idos})) { /
EOF /
// CONTINUA…
}
else {
/
Inclua aqui sua rotina de processamento */
{idosonome} = {idos[0][2]}; // << Veja se o nome do campo que vai receber o valor é {idosonome}
}

Só assim consegui que aparecesse o nome e o processo do Idoso associado à deliberação e Ficha.
Obrigada a todos pela ajuda que me deram. :wink:

Esse LEFT OUTER JOIN pode trazer mais que uma linha e dar problemas futuros, não tentou usar INNER JOIN? e fica mais lento também.

LEFT JOIN – A cláusula LEFT JOIN ou LEFT OUTER JOIN permite obter não apenas os dados relacionados de duas tabelas, mais também os dados não relacionados encontrados na tabela à esquerda da cláusula JOIN. Caso não existam dados relacionados entre as tabelas à esquerda e a direita do JOIN, os valores resultantes de todas as colunas da lista de seleção da tabela à direita serão nulos.

http://www.devmedia.com.br/clausulas-inner-join-left-join-e-right-join-associacao-de-tabelas-sql-server-2008-parte-2/18930

Obrigada Jailton. Aceitei a sua sugestão e já fiz a alteração. :slight_smile:

Jailton “É O CARA”.