Ligação de Captura alimentar vários campos

Olá,

Sou iniciante no scriptcase, e tenho uma duvida que não consegui localizar exemplos que pudessem me ajudar.

Tenho uma tela de ligação de captura, que contem os dados do Fornecedor, Loja, Produto, e Valor, e outros campos mais.
A captura ocorre no campo do fornecedor, e gostaria de ao selecionar o registro no formulário de captura, além de alimentar o campo de ligação que no meu caso é o fornecedor(poderia ter a opção de retornar mais campos nativamente), gostaria de carregar informações, como o produto , valor, etc, e alimentar os campos do formulários que chamou a ligação, somente o campo fornecedor não me permite realizar o lookup e retornar os demais dados, pois posso ter o mesmo fornecedor varias vezes no grid de captura.

Qual a melhor forma de fazer isto, criar variaveis no formulario, qual evento utilizar ?, Como passar estes dados para a aplicação ?

Obrigado.

no evento ajax onchange do campo vc realiza o sc_lookup e com o resultado você move para os campos desejados da aplicação.

Olá Haroldo,

Mas a tela de captura trás apenas um campo como retorno, correto ?

Na tela de consulta o campo de retorno não é um campo chave única, se fosse, ai eu ate concordo em usar o sc_lookup e retornar os demais campos e labels que preciso.

Mas não é, eu tenho que preencher na tela o vários campos, Fornecedor , Loja , Tipo Refeição, e Valor unitário.

Então em cada campo destes eu coloquei um sc_lookup, para retornar a descrição em um label, e chamei em varias rotinas que atualizam ou mudam o registro.

Mas neste caso o usuário tem que digitar em cada campo , mas se eu colocar uma tela de captura no campo fornecedor e trouxer todos estes campos na consulta, que ao selecionar a linha que o usuário deseja, eu poderia preencher todos estes campos, sem ele ter que passar por todos os campos abaixo do fornecedor e digitar o conteúdo ou localizar .
Só com o retorno do fornecedor eu não consigo buscar os demais campos, pois a chave é composta por fornecedor, loja, tipo de refeição, com tudo isso eu busco o valor unitário.

Primary Key, não é uma boa regra usar chave composta.

Captura de ligação retorna apenas um campo que irá prencher o valor do campo em questão.

Acho que deve mudar sua estratégia.

1 Curtida

Boa Tarde Haroldo!

Você poderia dar um exemplo de uma estratégia para fazer isso? Eu também estou com a mesma dificuldade de fazer essa ligação por captura, pois a chave da tabela também é composta. E já estou 2 dias pensando como fazer e não consigo achar uma solução. Será que você poderia me ajudar?

@michellefreis, boa noite.
Precisaria entender exatamente o que precisa.

Tenho uma tabela de cadastro de ruas. Que ela possui campos de cod_setor, codigo_rua, descrição_endereço. Fiz uma ligação de captura para o campo codigo da rua, e atraves dessa captura precisaria que alimenta-se o campo setor , endereço. Mas para me trazer por exemplo o endereço eu tenho que ter o codigo do setor e o codigo da rua, pois esses dois campos se tornam a chave primaria. Só que nessa captura quando eu seleciono a linha da captura que eu quero, ele me tras o codigo_rua perfeito, só que através desta linha selecionada, eu precisaria que me retorna-se no campo setor o codigo do setor e no campo endereço a descrição do endereço. Pois na tela de cadastro de clientes que que vou utilizar a tabela ruas (a qual esta a ligação de captura pelo campo cod_rua) , o campo setor e descrição do endereço tem que estarem fechados não podendo ser alterados, e sim alimentados automaticamente pelo codigo da rua que fiz na captura da linha selecionada. Mas a dificuldade é por exemplo: o codigo de rua 10, eu tenho tanto dentro do setor 1, quanto setor 2 , 3 e etc. e no lookup não vejo como me trazer isso so puxando no cadastro a informação do codigo_rua. E não estou percebendo como poderia fazer isso de outra forma.

Eu entendi.
Infelizmente ligação de captura retorna somente uma coluna (campo, valor) .

Minha sugestão é utilizar o campo virtual (manual) do tipo autocomplete com select2 (exemplo: {ruaSetor} ) onde na instrução sql vc concatenaria os dois campos que fazem parte da chave primária:

select
  concat(codigo_rua,'|',cod_setor),
  descricaco_endereco
from
  tab_ruas
order by
  descricao_endereco

No evento ajax onchange:

$arr = explode('|',{ruaSetor});
{cliente_codigo_rua} = $arr[0];
{cliente_cod_setor} = $arr[1];

Na sugestão vc pode pesquisar e localizar por qualquer parte de descricao_endereco que vai salvar codigo_rua e cod_setor na tabela principal, no caso cadastro de clientes.

2 Curtidas

Haroldo, eu não havia pensado nisso. Você é brilhante! Muito obrigada pela sua ajuda. Gratidão.

Dê um retorno se deu certo e se atendeu à sua necessidade.

Ficamos no aguardo.

1 Curtida

Boa tarde Haroldo. Deu certinho. Como o cliente queria por captura. Eu criei um campo manual na grid ruas e no lookup do campo fiz a concatenação e where código setor e código rua = ao {código setor} e {código rua} do campo. E no formulário do cadastro do cliente criei um campo manual busca_rua que fiz a ligação pela captura me trazendo o campo concatenado da grid. E no evento ajax onchange fiz exatamente isso que você me ensinou criando o array usando o explode. Com isso ja puxei todos os campos que precisava na concatenação. Deu certinho. Muito obrigada pela sua atenção.

3 Curtidas

Eu aboli ligações de captura já há bons anos, justamente por ter que criar uma aplicação específica para cada ligação, fazendo crescer exponencialmente o projeto.

Mas a idéia você pegou bem e conseguiu resolver seu problema, isso que importa.

3 Curtidas