Buscar Nome do cliente em uma tabela para colocar na outra

(adrianacombat) #1

Oi pessoal,

Estou buscando uma alternativa para o que parece um bug do sistema.

Tenho uma tabela Clientes q já cadastrei um cliente Adriana com id 558, agora preciso trazer para o cadastro de propostas o id e o nome deste cliente para fazer a proposta.

Como posso fazer para trazer este id e nome sem precisar criar no BD um campo nome na tabela Proposta?

Pois crio em campos, mas o sistema só aceita se tiver no BD da tabela Proposta.

Aguardo retorno de vcs

(lowczy) #2

olha uma sugestao

ja pensou em usar variaveis globais pra ir e vir entre esses formularios

(Cleyton Euler) #3

Adriana vc pode usar lookup na aplicação que tem o ID do cliente. Depois cria um campo no formulário e atribui a ele o retorno do lookup.

{campo_formulario} = {ds_cliente[0][?]};

(adrianacombat) #4

Cleyton, bom dia.

Desculpe, mas não entendi bem a syntax. Deixa eu explicar o que estou fazendo:
Tenho uma tabela clientes onde a minha chave primária é IDCliente;
Tenho uma tabela proposta que poderá ter N registros para o mesmo cliente, nela também tem o IDCliente, e é assim que consigo fazer o link entre propostas e cliente.

Agora o que estou tentando fazer:
Para o usuário cadastrar uma proposta ele deve definir o cliente primeiro, no meu form de proposta existe o campo nome_cliente e IDCliente. Eu queria que ele colocasse o nome, e ao mudar de campo o ID fosse preenchido automaticamente. Então criei um evento ajax (OnChange) no campo nome_cliente.

sc_lookup(ds_cliente, “SELECT IDCliente FROM clientes WHERE nome_cliente = {nome_cliente}”);

{nome_cliente} = {ds_cliente[0][0]};

Se eu fizer ao contrário, buscar o nome pelo ID, ele executa, mas assim não.

(Cleyton Euler) #5

Bom dia!!!

Ao abrir o formulário, vc não tem o nome do cliente. Imagina, o usuário ter que digitar o nome completo do cliente para achar o ID. E se vc tiver homônimo na tabela? Complicado Adriana.

Faz assim, no frm proposta, tem o campo IDCliente e escolhe o tipo select, no lookup, vc escolhe a sua tabela de cliente, o campo idccliente e o campo nome do cliente. Ex:

select idcliente, nomecliente from tab_cliente order by nomecliente

Com isso, ao escolher o nome do cliente numa combo, ao inserir, o que é gravado no campo na tabela do banco é o código do cliente e não o nome. O nome é apenas para exibição.

No SC, em lookups de campos do tipo select, o primeiro campo da select é gravado no banco e o último é para exibição na aplicação.

(adrianacombat) #6

Entendi e concordo com você sobre a questão dos homonimos, porém imagine também um campo select com 532 clientes, ficaria inviável né? Veja se essa solução é viável:

Colocar o campo IDCliente como texto auto complete e no lookup colocar o seu select.
“select idcliente, nomecliente from tab_cliente order by nomecliente”

Mesmo com texto auto complete o que iria ser gravado no banco seria o ID? Porque se for isso me atende.

(Cleyton Euler) #7

É isto mesmo adriana. Pode usar o autocomplete. Mas lembre que quando retornar, tem que escolher, clicar no nome que vc quer, para que funcione.

Caso apareça o nome e vc der enter, por exemplo, dá erro. Não pq, mas dá. Não sei se a NM consertou isso, mas até a release .011 estava assim.