Transferir variável de mestre para detalhes (mestre/detalhes)

Eis o cenário: tenho um formulário de clientes (tabela: clientes.clientes_id) e um subformulário de contatos dos clientes (tabela:cliente_contatos.cliente_contatos_id + cliente_contatos.clientes_id).

Quando eu faço a ligação Mestre/Detalhes entre “clientes” e “contatos dos clientes” a ligação é feita com base no campo “clientes_id”, comum em ambas tabelas, até aqui ok.

Agora, preciso de dentro do subformulário de “contatos dos clientes” capturar e mostrar o “clientes_id” antes mesmo de inserir um registro.

Como fazer isso?

Para você ter feito a ligação presumo que na tabela cliente_contatos exista um campo clientes_id que é chave estrangeira na tabela e referencia o campo clientes_id na tabela clientes. Se for isso, coloca no subformulário o campo clientes_id configura como tipo select e faz lookup automatico neste campo.

Eu fiz isso mas o clientes_id retorna em branco.

Vou dar um exemplo: no subformulário, depois que eu clicar em Novo registro, há um campo chamado “nome do contato”; este “nome do contato” é o resultado de um Select que busca os “clientes_id” da tabela “clientes”. Tranquilo até aqui! Agora, eu quero que este select tenha uma condição: não listar contatos que já tenham sido cadastrados no próprio subformulário (cliente_contatos). Para isso eu preciso obter o {clientes_id} do formulário “mestre” pois, depois de ter clicado em Novo registro, um simples “echo” no {clientes_id} retorna a informação do formulário “detalhes” (que está em branco porque está em modo de inserção).

Tem como vc enviar o sql de create destas duas tabelas? Para eu entender melhor como as mesmas estão relacionadas?

Vou dar um exemplo mais fácil de entender: supondo que exista um formulário “mestre” que é o cadastro de clientes; o formulário “detalhes” é um cadastro de produtos relacionados a este cliente. A idéia é, ao clicar em adicionar novo produto no formulário “detalhes”, exibir somente os produtos que ainda não foram cadastrados. Exemplo:

No lookup de consulta do campo “produtos_id” do formulário “detalhes”, contém a seguinte instrução:

SELECT produtos_id, descricao FROM produtos WHERE produtos_id NOT IN (SELECT produtos_id FROM produtos_contatos WHERE contatos_id = {clientes_id}) ORDER BY descricao

Não há problemas no código exibido, está correto, acontece que o {clientes_id} neste caso está em branco. Como buscar este {clientes_id} do formulário “mestre”?

Olá,

Utilizo da seguinte forma para formulário pai / filho, quando formulários de 1 registro.

No formulário mestre, evento onLoad
[Cliente_id] = {Cliente_id};
Configure esta variável global como Session e de Saída

No formulário detalhe:
No campo {Cliente_id}
Defina o valor inicial, [Cliente_id]

No SQL utilize a cláusula WHERE
Cliente_id = ‘[Cliente_id]’;

Att,

Jocimar

Obrigado!